Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/01/2011, 11h57   #1
Invité de passage
 
Inscription : octobre 2009
Messages : 4
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 4
Points : 0
Points : 0
Par défaut [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
dol75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2011, 08h25   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
Bonjour,
Bien que je n'ai point testé
Code :
1
2
3
4
5
6
7
8
9
10
11
 
Fichier = Dir(Chemin & "\list_*.csv")
Do While Fichier <> ""
 Open Fichier For Input As #2
 Do Until EOF(2)
  Line Input #2, s
  Print #1, s
 Loop
 Close (2)
Fichier = Dir
Loop
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h49.


 
 
 
 
Partenaires

Hébergement Web