Bonjour à tous,

voilà je dois me balader dans un fichier texte rempli par un utilisateur lambda.
Ce fichier peut contenir des informations sur 1 ou 2 lignes, cela dépend de l'utilisateur et de son humeur du jour

Exemple:
VALV PT=40 DY=0.11 EW=2
PB=45 MA=0.0021 AL=/VALV_1/
VALV PT=80 PB=45 DY=0.11 EW=2 MA=0.0021 AL=/VALV_2/

Dans cet exemple, un premier élément VALV_1 a été définit sur 2 lignes et un deuxième élément VALV_2 a été définit sur 1 seule ligne.

J'ai déjà un code qui fonctionne via VBA :

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
'lecture sur fichier texte
Open chemin For Input Access Read As #1
Do While Not EOF(1)    ' Effectue la boucle jusqu'à la fin du fichier.
    Line Input #1, ligne   ' Lit une ligne
 
                'recuperation type VALV
            If (Left(ligne, 4) = "VALV") Then
 
                 'recuperation nom vanne
                T = 1
                Do While (Mid(ligne, T, 3)) <> "AL="
                T = T + 1
                    If T > 80 Then
                        Exit Do
                    End If
                Loop
                Sheets("file").Cells(ay, 2) = Mid(ligne, T + 3, 12)
 
                'recuperation noeud
                T = 1
                Do While (Mid(ligne, T, 2)) <> "PT"
                T = T + 1
                    If T > 80 Then
                        Exit Do
                    End If
                Loop
                Sheets("file").Cells(ay, 3) = Mid(ligne, T + 3, 5)
 
                'recuperation masse vanne
                ma = 1
                Do While (Mid(ligne, ma, 3)) <> "MA="
                ma = ma + 1
                    If ma > 80 Then
                        Exit Do
                    End If
                Loop
                Sheets("file").Cells(ay, 4) = Mid(ligne, ma + 3, 6)
                'convertion tonnes en kg
                Cells(ay, 4) = CDbl(Cells(ay, 4).Value * 1000)
 
                'passe à la ligne
                ay = ay + 1
              End If
 
Loop
Close #1    ' Ferme le fichier.
Le problème est le suivant : si l'utilisateur n'a pas entré toutes les infos sur 1 seule ligne, mon programme ne fonctionne pas.

J'aimerai donc trouver un code qui se résumerai à:
1) chercher une ligne commençant par VALV
2) enregistrer le numéro de cette ligne (n)
3) chercher les infos sur la ligne (n)
4) si je ne trouve pas les infos sur la ligne (n), chercher ces infos sur la ligne (n+1)

remarque : l'utilisateur ne peut pas définir un type VALV sur plus de 2 lignes.

Je vous remercie d'avance pour votre aide.