Modifier fichier texte

maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010 - 14 août 2007 à 17:39
cs_Sharkiller Messages postés 80 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 25 avril 2011 - 16 août 2007 à 16:29
Bonjour,
J'aimerais savoir comment faire pour faire une petite gymnastique avec un fichier txt je vous explique ; j'ai un fichier (config.txt) qui contient comme son nom l'indique des lignes de texte (une ligne par config) pour la configuration d'une application. J'aimerais savoir faire en sorte que mon application detecte dans le fichier config.txt la ligne suivante ("AutoExec, 1,0 - 2 false#") et si il detecte cette ligne l'application vb devra modifier cette ligne par en l'occurence ("AutoExec, 1,0 - 2 true#")

j'espère avoir été assez claire,
Merci d'avance

123

40 réponses

cs_Sharkiller Messages postés 80 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 25 avril 2011
14 août 2007 à 18:19
Bonjour,
Avec la méthode Line Input tu peux lire un fichier en mode séquentiel. Il suffit que tu remarques quelle ligne se réfère à "AutoExec, 1,0 - 2 false#" et de réécrire le fichier avec "AutoExec, 1,0 - 2 true#" pour cette même ligne.

Cordialement ;)
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
14 août 2007 à 18:47
et pouvez vous me montrer un exemple concret ?

123
0
cs_Sharkiller Messages postés 80 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 25 avril 2011
14 août 2007 à 19:01
Je vais essayer de mettre la bonne syntaxe^^...
Ca serait quelque chose du genre:

Open Path & "\config.txt" For Input As #1
   While Not EOF(1)
      Line Input #1,,TS
      If TS="AutoExec, 1,0 - 2 false#" Then
         Final=Final & "AutoExec, 1,0 - 2 true#" & vbcrlf
      else
         Final=Final & TS & vbcrlf
      End If
   Wend
Close #1

Voilà, en fait, explications:
Open ... For Input As ... permet de lire le contenu d'un fichier.
La boucle permet de lire le fichier jusqu'à la fin (EOF correspond à EndOfFile, donc tant qu'on n'atteint pas la fin du fichier, on continue à le lire).
Line Input permet de stocker la ligne en cours de lecture dans une variable (ici TS).
On traite alors cette ligne pour savoir ce qu'elle contient.
Si elle contient ce que tu cherches, tu la remplaces par celle que tu veux, et sinon tu stockes la même valeur dans une autre variable qui sera utilisée en tant que contenu final (ici Final).
Une fois que tu as la variable finale (donc après la fin de la boucle), tu fais:

Open Path & "\config.txt" For Output As #1
   Write #1, Final
Close #1

Si le contenu du fichier est trop grand à la base pour pouvoir être contenu par la variable finale, il faut sauvegarder dans un fichier alternatif à chaque lecture de ligne, puis remplacer le fichier de base par le fichier alternatif une fois la boucle terminée.

Après peut-être existe-il une autre solution, peut-être même meilleure.

§H@®?¦££?®[mailto:$|-|@|2|<!LL?|2 ]
0
cs_Sharkiller Messages postés 80 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 25 avril 2011
14 août 2007 à 19:01
Au passage, Path correspond bien sûr au répertoire contenant ton fichier config.txt.

§H@®?¦££?®[mailto:$|-|@|2|<!LL?|2 ]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
14 août 2007 à 19:14
merci sharkiller le problème c'est que après AutoExec, 1,0 - 2 false# il y à d'autre chose donc ton code permet de remplacer AutoExec, 1,0 - 2 false# par une autre chaine mais le reste est toujours visible il faut supprimer entièrement la ligne si tu sais faire merci bcp

123
0
cs_Sharkiller Messages postés 80 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 25 avril 2011
14 août 2007 à 19:21
Je croyais que tu voulais remplacer "true" par "false" dans la ligne?


Si tu veux supprimer cette ligne tu n'as qu'à faire:

If TS<>"AutoExec, 1,0 - 2 false#" Then
    Final=Final & TS & vbcrlf
End If

§H@®?¦££?®[mailto:$|-|@|2|<!LL?|2 ]
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
14 août 2007 à 19:28
merci bien je vais tester et je te tient au courant merci d'avance bien sûr ;)

123
0
cs_Sharkiller Messages postés 80 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 25 avril 2011
14 août 2007 à 19:33
OK, par contre, la syntaxe Line Input se fait comme ceci:
Line Input #1, variable
et non comme cela:
Line Input #1,,variable

§H@®?¦££?®[mailto:$|-|@|2|<!LL?|2 ]
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
14 août 2007 à 19:41
mince alors le script ne fonctionne pas du tout chez moi je me suis peut etre mal exprimé je vais essayer de reformuler :
j'ai un fichier txt comme ci dessous:

ligne1 - texte a - nombre
ligne 2 - nombre - texteb
ligne 3 - chiffre - nombre
ligne 4 - nombre - textec
...

chaque ligne est différente
j'aimerais que l'orsque l'application detecte (par exemple) "ligne 3 - chiffre" qu'il supprime la ligne ou il à trouvé "ligne 3 - chiffre" c'est à dire la ligne 3 sur cet exemple le fichier à la final devrais donc ressembler à

ligne1 - texte a - nombre

ligne 2 - nombre - texteb

ligne 4 - nombre - textec

voilà j'espère avoir été claire

Merci d'avance

123
0
cs_Sharkiller Messages postés 80 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 25 avril 2011
14 août 2007 à 19:47
Oui, d'accord, ben c'est bien le code que je t'ai donné en dernier. Enfin j'imagine... T'as mis quoi dans ton code?

§H@®?¦££?®[mailto:$|-|@|2|<!LL?|2 ]
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
14 août 2007 à 20:36
Open "c:\fichier.txt" For Input As #1
   While Not EOF(1)
      Line Input #1, ts
     If ts <> "loren est" Then
    Final = Final & ts & vbCrLf
End If
   Wend
Close #1
MsgBox Final + vbCrLf + ts

Open Path & "c:\config.txt" For Output As #1
   Write #1, Final
Close #1

mais pareil sa dégage pas la ligne car le but c'est que sa dégage la ligne ou ce trouve le texte mais tout entier et la remplace par une autre chaine de caractère et le blem c'est que je peut pas utliser la fonction replace !

123
0
cs_Sharkiller Messages postés 80 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 25 avril 2011
14 août 2007 à 20:38
Ah mais tu veux enlever qu'une partie de la ligne?

§H@®?¦££?®[mailto:$|-|@|2|<!LL?|2 ]
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
14 août 2007 à 20:49
non en fait si le exe detecte  "loren est" (par rapport au test) dans le fichier txt alors il dois suprimmer le contenu entier de la ligne (ou se trouve "loren est") et mettre autres chose

je suis pas claire ?

 123
0
cs_Sharkiller Messages postés 80 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 25 avril 2011
14 août 2007 à 20:53
Ben ça l'est de moins en moins lol^^.
Au début j'ai cru que tu voulais effectivement remplacer le contenu de la ligne par autre chose, mais ensuite tu m'as dis que tu voulais supprimer la ligne entièrement^^.

Par exemple, tu veux que
bonjour
question
au revoir
donne
bonjour
au revoir
ou donne
bonjour
comment ça va?
au revoir
quand tu remplaces "question" par "comment ça va?"?

§H@®?¦££?®[mailto:$|-|@|2|<!LL?|2 ]
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
14 août 2007 à 20:57
non exemple de mon fichier config.txt

azerty poiuy
qsdfgh poiur
wxcvb nbvcx
aqwxsz ecdrvf

si le exe detecte "wxcvb " alors il trouve la ligne ou se trouve cette chaine supprime entièrement la ligne ce qui donne

azerty poiuy

qsdfgh poiur
aqwxsz ecdrvf

pour écrire au même endroit une chaine de caractère en loccurence "test" ! ce qui donne

azerty poiuy

qsdfgh poiur
test
aqwxsz ecdrvf

je pense être claire là non ? ;)

123
0
cs_Sharkiller Messages postés 80 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 25 avril 2011
14 août 2007 à 21:04
Ah OK, je vois
Alors il te faut sélectionner la chaîne de la sorte:

dim OK as Boolean
dim a as Integer
for a=1 to len(ts)
If mid(ts,a,len("loren est")) <> "loren est" Then OK=True
next a
if OK=true then Final=Final & ts & vbcrlf

au lieu de faire

If ts <> "loren est" Then
    Final = Final & ts & vbCrLf
End If

Normalement, il ça devrait répondre à tes attentes .

§H@®?¦££?®[mailto:$|-|@|2|<!LL?|2 ]
0
cs_Sharkiller Messages postés 80 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 25 avril 2011
14 août 2007 à 21:05
ça devrait* pardon pour la faute d'inattention^^

§H@®?¦££?®[mailto:$|-|@|2|<!LL?|2 ]
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
14 août 2007 à 21:09
je suis un débutant tu sais et voila ce que j'ai mis dans mon code
Private Sub Command1_Click()
Open "c:\fichier.txt" For Input As #1
   While Not EOF(1)
      Line Input #1, ts
Dim OK As Boolean
Dim a As Integer
For a = 1 To Len(ts)
If Mid(ts, a, Len("loren est")) <> "loren est" Then OK = True
Next aIf OK True Then Final Final & ts & vbCrLf
   Wend
Close #1
MsgBox Final + vbCrLf + ts

Open Path & "c:\config.txt" For Output As #1
   Write #1, Final
Close #1

End Sub

je dois me tromper car franchement sa fait rien :(
123
0
cs_Sharkiller Messages postés 80 Date d'inscription dimanche 12 octobre 2003 Statut Membre Dernière intervention 25 avril 2011
14 août 2007 à 21:28
Il contient "loren est" ton fichier "fichier.txt"?


Au passage, tu n'as pas besoin de mettre "Path &" avant "c:\config.txt", ça ne sert à rien, tu indiques déjà le répertoire du fichier.


Ben essaie de comprendre tes erreurs aussi . Moi je veux bien t'aider, mais ça serait bien que ça te reste...

§H@®?¦££?®[mailto:$|-|@|2|<!LL?|2 ]
0
maxsecurite2 Messages postés 181 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 avril 2010
14 août 2007 à 21:30
bon je vais voir ou sont mes erreurs non mon fichier contient pas "loren est" mais "wxcvb " comme dit plus haut

123
0
Rejoignez-nous