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 :
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.
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.
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.
Partager