Les meilleurs sources pour Excel

Les meilleurs sources pour ExcelConsultez toutes les FAQ
Nombre d'auteurs : 10, nombre de questions : 65, dernière mise à jour : 26 mars 2022
Sommaire→Les fichiers texteOption Explicit
Const ForReading = 1
Const ForWriting = 2
Sub SupprimetTexteEndouble()
'Nécessite d'activer la référence "Microsoft Scripting Run Time"
Dim oDict As Scripting.Dictionary
Dim oFSO As Scripting.FileSystemObject
Dim oFile As Scripting.TextStream
Dim maCle 'As ????????????????
Dim strName As String, Fichier As String
Fichier = "C:\NomFichier.txt"
Set oDict = CreateObject("Scripting.Dictionary")
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFile = oFSO.OpenTextFile(Fichier, ForReading)
'--- Récupère les données sans doublon ---
Do Until oFile.AtEndOfStream
strName = oFile.ReadLine
If Not oDict.Exists(strName) Then oDict.Add strName, strName
Loop
oFile.Close
'-----------------------------------------
Set oFile = oFSO.OpenTextFile(Fichier, ForWriting)
'Retransfère les données sans doublons dans le fichier txt
For Each maCle In oDict.Keys
oFile.WriteLine maCle
Next
oFile.Close
End Sub
Cet exemple boucle sur tous les fichiers txt d'un répertoire et regroupe les données, à la suite, dans une feuille de calcul.
La procédure utilise la propriété QueryTables.
Sub Test()
Dim Fichier As String, Chemin As String
Dim i As Long
'Répertoire contenant les fichiers
Chemin = "C:\Documents and Settings\mimi\dossier\general\excel"
Fichier = Dir(Chemin & "\*.txt")
'Boucle sur les fichiers
Do While Fichier <> ""
i = Range("A65536").End(xlUp).Row + 1
ImportText Chemin & "\" & Fichier, Cells(i, 1)
Fichier = Dir
Loop
End SubSub ImportText(NomFichier As Variant, Cible As Range)
Dim QT As QueryTable
Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & _
NomFichier, Destination:=Cible)
With QT
'Définit les séparateur de colonnes dans le fichier txt
.TextFileOtherDelimiter = ";"
.TextFileSemicolonDelimiter = True
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.Refresh
End With
End Sub
La procédure boucle sur tous les fichiers txt d'un répertoire et regroupe leur contenu dans un nouveau fichier texte.
Dans cet exemple, chaque fichier contient des données sur 2 colonnes, dont le séparateur est le point virgule (;).
Important: le fichier de compilation ne doit pas être dans le même répertoire que les autres fichiers txt.
Nécessite d'activer la référence "Microsoft ActiveX Data Objects 2.x Library".
Sub CompilationFichiersTexte_ADO()
'
'Nécessite d'activer la référence
'"Microsoft ActiveX Data Objects 2.x Library"
'
Dim Rc As ADODB.Recordset
Dim cn As String, Chemin As String, Fichier As String, x As String
Dim i As Long
'répertoire contenant les fichiers texte
Chemin = "C:\Repertoire"
'Ouvre un nouveau fichier Texte pour compiler les données
'! attention à ne pas le placer dans le meme repertoire que les autres fichiers...
Open "C:\Compilation.txt" For Output As #1
'--- Création d'un entête: adaptez cette ligne en fonction du nombre
'de colonnes dans les fichiers (2 colonnes dans cet exemple):
Print #1, "Champ1;Champ2" & vbCrLf;
'------------
'boucle sur l'ensemble des fichiers txt
Fichier = Dir(Chemin & "\*.txt")
Do While Fichier <> ""
'----- requète pour récupérer le contenu du fichier txt
cn = "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=" & Chemin & ";Extensions=asc,csv,tab,txt"
Set Rc = New ADODB.Recordset
Rc.Open Source:="SELECT * FROM [" & Fichier & "]", ActiveConnection:=cn
If Not Rc.EOF Then
'--- recuperation de la première ligne
For i = 0 To Rc.Fields.Count - 1
x = x & Rc.Fields(i).Name & ";"
Next i
Print #1, Left(x, Len(x) - 1) & vbCrLf;
'---
Print #1, Rc.GetString(, , ";", vbCrLf, "");
End If
Rc.Close
x = ""
'-------------------------
Fichier = Dir
Loop
'Fermeture du fichier Compilation
Close #1
MsgBox "Opération terminée"
End Sub
L'option suivante permet ensuite d'appliquer un tri sur la première colonne du fichier compilation:
Sub TriFichierTXT_ADO()
'
'Nécessite d'activer la référence
'"Microsoft ActiveX Data Object 2.x Library'
'
Dim Rc As ADODB.Recordset
Dim cn As String, Chemin As String, Fichier As String
Dim i As Long
Dim x As String
'Ouvre un nouveau fichier Texte pour compiler les données triée
Open "C:\CompilationTriee.txt" For Output As #1
'Le fichier que vous souhaitez trier:
Chemin = "C:\"
Fichier = "Compilation.txt"
cn = "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=" & Chemin & ";Extensions=asc,csv,tab,txt"
Set Rc = New ADODB.Recordset
Rc.Open Source:="SELECT * FROM " & Fichier & _
" ORDER BY Champ1", ActiveConnection:=cn
If Not Rc.EOF Then
'--- récupération de la première ligne
For i = 0 To Rc.Fields.Count - 1
x = x & Rc.Fields(i).Name & ";"
Next i
Print #1, Left(x, Len(x) - 1) & vbCrLf;
'---
Print #1, Rc.GetString(, , ";", vbCrLf, "");
End If
Rc.Close
Set Rc = Nothing
'Fermeture du fichier CompilationTriee
Close #1
MsgBox "Opération terminée"
End Sub


