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:
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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