Bonjour à tous,
Afin de ne plus être tributaire des différents paramètres régionaux d'Excel et de Windows, je cherche à charger les données de fichiers csv directement dans des variables tableaux.
Pour cela, je passe par Scripting.FileSystemObject.
J'ai activé la référence Microsoft Scripting Runtime
Voici un bout de mon code :
Le problème c'est que ReadLine (ligne 7) qui est sensé lire une ligne entière (jusqu’au caractère de retour à la ligne, sans l’inclure, dixit l'aide) n'arrive pas à identifier les lignes et lit systématiquement la totalité du fichier en une seule passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Dim line As String, Arr Dim FSO As Object, Fo As Object Set FSO = CreateObject("Scripting.FileSystemObject") Set Fo = FSO.OpenTextFile("(chemin de mon fichier)\D20220416test.csv", ForReading, False, TristateFalse) While Not Fo.AtEndOfStream line = Fo.ReadLine ' sensé lire le csv ligne par ligne mais dans mon cas lit l'ensemble des lignes Debug.Print line 'voir résultat ci-dessous Arr = Split(line, ";") ' ne peut pas fonctionner correctement 'etc...... Wend Fo.Close Set Fo = Nothing Set FSO = Nothing
Le résultat c'est qu'il n'y a aucune colonne identifiable et la dernière donnée de la ligne est collée à la première de la ligne suivante.
Bref, je n'arrive pas à exploiter les données.
Pourtant, le debug.print de l'unique extraction montre bien les lignes de mon csv :
et si j'ouvre le fichier dans le bloc note, les lignes sont bien là. Idem avec Excel qui sait mettre directement ces données en tableau. J'en conclue que le caractère de retour de ligne est bien présent, sinon les données ne pourraient pas être extraites.16/04/22 11:00;0,76;8,26;2,84;372,00;7,55;5,50;517,8
16/04/22 12:00;0,76;8,26;2,84;372,00;7,55;5,50;517,8
16/04/22 13:00;0,76;12,58;2,84;363,00;7,52;5,50;517,8
16/04/22 14:00;0,76;12,58;2,84;363,00;7,55;5,50;517,8
16/04/22 15:00;0,76;12,58;2,84;363,00;7,55;5,50;517,8
16/04/22 16:00;0,76;12,58;2,84;363,00;7,55;5,50;517,8
16/04/22 17:00;0,76;16,41;3,01;330,00;7,55;5,50;548,8
16/04/22 18:00;0,76;16,41;3,01;330,00;7,55;5,50;548,8
16/04/22 19:00;0,76;16,41;3,01;330,00;7,55;5,50;548,8
16/04/22 20:00;0,76;16,41;3,01;330,00;7,55;5,50;548,8
16/04/22 21:00;0,78;20,00;3,16;310,00;7,55;5,50;576,2
16/04/22 22:00;0,78;20,00;3,16;310,00;7,55;5,60;576,2
16/04/22 23:00;0,77;22,04;2,94;285,00;7,55;5,50;536,1
17/04/22 00:00;0,77;22,04;2,94;285,00;7,55;5,50;536,1
Le résultat est le même pour les deux versions d'Excel que j'ai : 2010 et 2016
Je n'arrive pas à trouver ce qui coince.
Merci à ceux qui pourront m'aider à comprendre et surtout à résoudre ce mystère.
Ci-joint un des fichiers que je cherche à extraire.
Partager