Lecture et Ecriture ciblée dans un fichier texte

Bonjour

Je sollicite votre aide pour un petit problème que j'ai dont je peine a trouver la réponse.

En effet, je dois faire un programme qui cherche une chaîne de caractère dans un fichier texte et des qu'il la trouve, il stocke la valeur qui suit la chaîne de caractère

La premiere chaine de caractere est : 0 1 CEN/4 -1.000000E+00

La deuxieme chaine de caractere est : 0 5 CEN/4 -1.000000E+00

et ainsi de suite

Mon probleme est que le "1" ou le "5" (avant cen/4) change et prend d'autres valeurs. Ces valeurs sont stocké dans un tableau (Tabl2).

du coup voila ce que j'ai fais mais vous l'aurez compris, ca ne marche pas

merci de m'aider

cdlm

monfichier = Application.GetOpenFilename()

Open monfichier For Input As #1

For s = 1 To NbrNoeud

While Not EOF(1)

Line Input #1, ligne

Machaine = Cstr(Tabl2(s-1))

numcod = InStr(1, ligne, "0 Machaine CEN/4 -1.000000E+00")

If numcod <> 0 Then

Sheets("Feuil2").Cells(s, 1) = Mid$(ligne, 37, 13)

End If

Wend

Next s

bonjour,

essaie ainsi

numcod = InStr(1, ligne, "0 " & Machaine & " CEN/4 -1.000000E+00")

bonjour,

essaie ainsi

numcod = InStr(1, ligne, "0 " & Machaine & " CEN/4 -1.000000E+00")

Bonjour, je vous remercie de m'aider encore une nouvelle fois.

En effet j'avais essayé avec

numcod = InStr(1, ligne, "0         " + CStr(Tabl2(s - 1)) + "    CEN/4  -1.000000E+00")

et ca marche

Cependant, la variable s ne s'incrémente pas malgré la boucle for et donc seule la premiere cellule (dans la condition if ) marche

je remets ici le code

monfichier = Application.GetOpenFilename()
Open monfichier For Input As #1
s = 1
While Not EOF(1)
        Line Input #1, ligne
        Machaine = CStr(Tabl2(s - 1))
        numcod = InStr(1, ligne, "0         " + CStr(Tabl2(s - 1)) + "    CEN/4  -1.000000E+00")
        If numcod <> 0 Then
            Sheets("Feuil2").Cells(s, 1) = Mid$(ligne, 37, 14)
            s = s + 1
        End If
Wend

Close #1

End Sub

Je met aussi ma macro et le fichier sur le quel il doit lire au cas ou. La partie se trouve tout en bas du code sur "Private Sub CommandButton2_Click() "

4fichier.zip (91.08 Ko)

bonjour,

essaie ainsi

numcod = InStr(1, ligne, "0 " & Machaine & " CEN/4 -1.000000E+00")

Bonjour, je vous remercie de m'aider encore une nouvelle fois.

En effet j'avais essayé avec

numcod = InStr(1, ligne, "0         " + CStr(Tabl2(s - 1)) + "    CEN/4  -1.000000E+00")

et ca marche

Cependant, la variable s ne s'incrémente pas malgré la boucle for et donc seule la premiere cellule (dans la condition if ) marche

je remets ici le code

monfichier = Application.GetOpenFilename()
Open monfichier For Input As #1
s = 1
While Not EOF(1)
        Line Input #1, ligne
        Machaine = CStr(Tabl2(s - 1))
        numcod = InStr(1, ligne, "0         " + CStr(Tabl2(s - 1)) + "    CEN/4  -1.000000E+00")
        If numcod <> 0 Then
            Sheets("Feuil2").Cells(s, 1) = Mid$(ligne, 37, 14)
            s = s + 1
        End If
Wend

Close #1

End Sub

Je met aussi ma macro et le fichier sur le quel il doit lire au cas ou. La partie se trouve tout en bas du code sur "Private Sub CommandButton2_Click() "

J'avais omis de mettre la boucle for, prenez plutot ce code

monfichier = Application.GetOpenFilename()
Open monfichier For Input As #1

For zs = 1 To NbrNoeud         ' Probleme
While Not EOF(1)
        Line Input #1, ligne
        numcod = InStr(1, ligne, "0         " + CStr(Tabl2((zs - 1))) + "    CEN/4  -1.000000E+00")
       If numcod <> 0 Then
            Sheets("Feuil2").Cells(zs, 1) = Mid$(ligne, 37, 14) ' probleme
       End If
Wend
Next

Close #1

End Sub

Je remet ma macro simplifié ainsi que le fichier sur lequel le programme doit se référer

comme je le disais, seule la premiere cellule dans la condition if marche, comme si la variable "zs" ne s'incrémente pas sachant que NbrNoeud = 30

4fichier.zip (91.08 Ko)

Bonjour,

recherche ta chaine "" CEN/4 -1.000000E+00"", et récupère le nombre qui précède.

Si ton nombre peut faire plus d'1 caractère il faudra rechercher où est l'espace qui précède ta chaine, avec InstrRev(), pour avoir sa longueur.

Et seulement après tu boucles sur ton tableau pour voir si ce nombre y est.

eric

Bonjour,

recherche ta chaine "" CEN/4 -1.000000E+00"", et récupère le nombre qui précède.

Si ton nombre peut faire plus d'1 caractère il faudra rechercher où est l'espace qui précède ta chaine, avec InstrRev(), pour avoir sa longueur.

Et seulement après tu boucles sur ton tableau pour voir si ce nombre y est.

eric

Bonjour et merci d’avoir répondu

Il faut absolument que me base aussi sur la valeur qui vient le « CEN/4 -1.000000E+00» pour bien cibler là où je veux qu’il se mette dans le programme. Cette chaîne de caractère existe plusieurs fois dans le fichier texte et donc ne pointera pas sur ce que je veux forcément d’où la valeur qui est avant le CEN/4 .

Cette valeur change justement et sont stockés dans un tableau. En gros je dois tester pour chaque valeur. Je ne vois pas pourquoi ça marche pas avec ce que j’ai fais (voir le code un peu plus haut)

bonjour,

essaie ceci

monfichier = Application.GetOpenFilename()
Open monfichier For Input As #1
     ' Probleme
While Not EOF(1)
        Line Input #1, ligne
        For zs = 1 To NbrNoeud    
          numcod = InStr(1, ligne, "0         " + CStr(Tabl2((zs - 1))) + "    CEN/4  -1.000000E+00")
          If numcod <> 0 Then
             Sheets("Feuil2").Cells(zs, 1) = Mid$(ligne, 37, 14) ' probleme
             exit for
          End If
       next zs
Wend
Next

Close #1

End Sub
Il faut absolument que me base aussi sur la valeur qui vient le « CEN/4 -1.000000E+00»

Ai-je dit le contraire ?

Lève le nez du guidon et relis plus tranquillement.

eric

Il faut absolument que me base aussi sur la valeur qui vient le « CEN/4 -1.000000E+00»

Ai-je dit le contraire ?

Lève le nez du guidon et relis plus tranquillement.

eric

Effectivement, j'avais pas bien compris ce que vous vouliez dire et effectivement, j'avais bien un probleme d'espace. Ca marche maintenant

Merci encore de m'avoir aider

De rien.

Tu devrais mettre ta solution pour les futurs lecteurs.

Merci

eric

Rechercher des sujets similaires à "lecture ecriture ciblee fichier texte"