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:
Voici mon cahier des chargestime,annee,resultat
Time1,2017,1000.0
Time2,2018,1001.0
Time3,2019,1002.0
Time4,2020,1003.0
Time5,2021,1004.0
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.
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
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
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
Partager