Lecture tableau CSV sur VBA
Bonjour tout le monde,
Je suis confronté à un code récalcitrant, et je me permet de solliciter votre aide.
En effet, un logiciel de calcul que j'utilise a changé de version et produit désormails des sorties en fichiers csv.
J'essaie de paramétrer une macro qui va chercher les résultats dans le CSV sans l'ouvrir.
Voici un exemple de sortie, au format original:
Citation:
time,annee,resultat
Time1,2017,1000.0
Time2,2018,1001.0
Time3,2019,1002.0
Time4,2020,1003.0
Time5,2021,1004.0
Voici mon cahier des charges
J'aimerais créer une fonction dans Excel , read_result(adresse_fichier as string, annee a integer, variable as string)
Par exemple j'aimerais interroger via ma fonction la variable résultat (notez qu'il peut y avoir plusieurs variables, j'en ai mis qu'une pour simplifier l'exemple) pour l'année 2018.
Voici le code que j'ai fait pour l'instant. J'ai piqué des exemples a droite à gauche sur le net, mais je dois avouer que je ne maitrise absolument pas FSO.
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
| Sub test()
Dim oFSO As Scripting.FileSystemObject
Dim oFl As Scripting.file
Dim oTxt As Scripting.TextStream
workspace = "C:\Users\"
file = "Projection"
extension = ".csv"
'Instanciation du FSO
Set oFSO = New Scripting.FileSystemObject
Set oFl = oFSO.GetFile(workspace & file & extension)
Set oTxt = oFl.OpenAsTextStream(ForReading)
With oTxt
Do While Not .AtEndOfStream
.ReadLine
If .Line = 4 Then
Tableau = Split(.ReadLine, ",")
result = Tableau(3)
Else
If .Line > 3 Then
Exit Do
End If
End If
Loop
End With
MsgBox (result)
End Sub |
Comme vous pouvez le voir c'est une ébauche. Pour l'instant, tout ce que j'arrive à faire, c'est ouvrir le fichier, le lire jusqu'a la ligne désirée et selectionner la valeur de la troisième colonne
Je trouve cette solution un peu "bricolée".
Pourriez vous m'aider à faire les choses suivantes ?
-Aller pointer directement sur la bonne ligne sans lire tout le fichier à chaque fois?
-Arriver à localiser automatiquement la colonne correspondant à la variable que je veux interroger
-Utiliser eventuellement une autre méthode que FSO?
Je vous remercie par avance pour votre aide!
Cordialement,
Guillaume