2 pièce(s) jointe(s)
Modification code VBA existant / import de plusieurs CSV
Bonjour à tous,
Cela fait plusieurs années que je traîne sur le forum, y trouvant fréquemment la réponse à mes questions. Je tiens donc tout d'abord à remercier l'ensemble des membres du forum !
__________
Mon problème :
Je souhaite extraire les données de multiples fichiers csv de format ( A ; 5) avec A identiques pour l'ensemble des fichiers CSV mais variant entre 2000 et 100 000 lignes (selon la source des CSV).
J'utilise pour cela le code VBA suivant :
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
| Sub compil_csv()
Dim fichier_final, fichier, x, x2, chemin
fichier_final = Workbooks("Fichier d'import1").Sheets("Sheet1").Range("B3").Value & "\Fichierfinal.csv"
If Dir(fichier_final) <> "" Then Kill fichier_final
chemin = ThisWorkbook.Path
fichier = Dir(ThisWorkbook.Path & "\*.csv")
i = 0
Do
x = FreeFile
Open chemin & "\" & fichier For Input As #x
laChaine = Input(LOF(x), #x)
Close #x
x2 = FreeFile
Open fichier_final For Append As #x2
Print #x2, laChaine
Close #x2
i = i + 1
fichier = Dir
Loop Until fichier = ""
Workbooks.Open fichier_final, local:=True
End Sub |
Ce code me permet d'extraire les données de chaque fichier csv et de les agréger dans l'onglet 1 du fichier "Fichierfinal".
L'ensemble des fichiers sont agrégés sur les mêmes colonnes (image du dessous). Si bien que le fichier final agrégé est de taille ( (A+1)*nb fichier ; 5 ). Le +1 correspondant aux lignes vides entre les jeux de données de chaque fichier.
Ci dessous ce que j'arrive à faire actuellement avec ce code :
Pièce jointe 513588
La première colonne des CSV correspond à la date d'une mesure et la seconde à l'heure. Ces deux colonnes sont identiques pour tous les fichiers csv.
Au lieu que les données importées se succèdent lignes après lignes comme dans l'image ci dessus. Je souhaite que les fichiers CSV importés soient rangés par colonnes comme dans l'image ci dessous :
Pièce jointe 513589
Mes tentatives jusque là ont été d’essayer de modifier la "print area" et également de fouiller sur le forum ! sans succès.
Je m'en remets donc à votre savoir, merci par avance.
En espérant que ce sujet n'a pas été traité dans un autre thread .. !:)