[VBA] Script pour compiler des fichiers csv
Bonjour,
J'ai un code VB qui permet de compiler en un seul fichier des fichiers csv contenus dans un répertoire local. Les fichiers csv sources possèdent un séparateur de champs de type ";" et un délimiteur de texte de type doubles quotes. Lorsque j'exécute le script, seul les valeurs du premier champs sont récupérées. Cela vient peut-être du délimiteur de texte ("") dans le code source qui n'est pas déclaré, ne sachant pas comment l'intégré ( Print #1, Rc.GetString(, , ";", vbCrLf, "");
Une bonne âme pourrait-elle m'aider à résoudre ce petit problème ? merci par avance.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| 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:\fichiers\list"
'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:\fichiers\compilation\list.csv" For Output As #1
'--- Création d'un entête: adaptez cette ligne en fonction du nombre
'de colonnes dans les fichiers (10 colonnes dans cet exemple):
Print #1, "champs1;champs2;champs3;champs4;champs5;champs6;champs7;champs8;champs9;champs10" & vbCrLf;
'------------
'boucle sur l'ensemble des fichiers txt
Fichier = Dir(Chemin & "\list_*.csv")
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
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 |