Modification "Replace" de x à y sur des fichiers txt

Signaler
Messages postés
63
Date d'inscription
mercredi 25 janvier 2006
Statut
Membre
Dernière intervention
17 janvier 2007
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Bonjour à tous,

Je souhaiterai savoir si il était possible de modifier une partie de mon texte d'une ligne connue XXX jusqu'à la fin du paragraphe se terminant par YYY en utilisant replace ? la particularité c'est que XXX n'apparait qu'une fois mais l'on peut rencontrer de nouveau YYY (exemple XXX to YYY activer la fonction replace mais à partir du moment ou j'ai rencontré YYY ne plus appliquer l'action Replace sur la fin du fichier).

Merci de votre aide je rame...

4 réponses

Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
Tu as essayé les expressions régulières ?

Mindiell Software
http://mindiell.free.fr
mindiell_nospam@free.fr
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut

Je ne sais pas si ca peux t'aider mais essaie ca:

La fonction suivante Memorise recuperent les lignes comprises entre XXX et YYY
Ensuite tu fais ce que tu veux avec :)
Private Sub TraiterFichier()
Dim Ligne As String
Dim CommencerTraitement As Boolean
Dim LigneDuParagraphe() As String
ReDim LigneDuParagraphe(0)
Open "C:\Essai.txt" For Input As #1
'Recupere les lignes du fichier
While Not EOF(1)
    Input #1, Ligne
    'Si Les 3 premiers caractere son YYY on arrete de memoriser les lignes    If Mid(Ligne, 1, 3) "YYY" Then CommencerTraitement False
    If CommencerTraitement Then
        LigneDuParagraphe(UBound(LigneDuParagraphe)) = Ligne
        ReDim Preserve LigneDuParagraphe(UBound(LigneDuParagraphe) + 1)
    End If
    'Si Les 3 premiers caractere son XXX on Commence de memoriser les lignes    If Mid(Ligne, 1, 3) "XXX" Then CommencerTraitement True
Wend
End Sub


@+
Julien
-----------------------------------------------------------
Essaie ca sinon on trouvera autre chose
-----------------------------------------------------------
Messages postés
63
Date d'inscription
mercredi 25 janvier 2006
Statut
Membre
Dernière intervention
17 janvier 2007

Salut et merci de ta réponse.

voici mon code:

--------------------------------------------------------------------
Const ForReading = 1
Const ForWriting = 2


Set fso = CreateObject("Scripting.FileSystemObject")

Set dossier = fso.GetFolder("C:\test_vbscript")
For Each fichier In dossier.Files
ext = fso.GetExtensionName(fichier.path)


If (ext = "txt") then

set ap = fso.OpenTextFile(fichier.path,ForReading,true)
strText = ap.ReadAll
ap.close


strNewText = Replace(strText, "ddd", "aaa")
strNewText = Replace(strNewText, "sss", "ppp")

set ap2 = fso.OpenTextFile(fichier.path,ForWriting,true)
ap2.WriteLine strnewText
ap2.close


end if
Next


------------------------------------------------------------------

étant débutant je ne vois pas ou implémenter ton code dans le mien.
Peux tu me faure un exemple d'implémentation? stp
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,

D'apres ton code,

Tu remplace dans le fichier tous les "ddd" par "aaa" et tous les "sss" par "ppp".
Si c est ce que tu veux, tu le fais deja

Si tu utilises les FileSystemObject, tu peux modifier mon code de la facon suivante:

(Note: J'ai ajouter au projet la reference Microsoft Scripting Runtime)

la fonction suivante fait la meme chose que la precedente mais avec les filesystemobject..

J espere que ca t'aide

Private Sub TraiterFichier()
Dim Ligne As String
Dim CommencerTraitement As Boolean
Dim LigneDuParagraphe() As String
ReDim LigneDuParagraphe(0)

Dim fs As New FileSystemObject
Dim ts As TextStream
Set ts = fs.OpenTextFile("C:\Essai.txt", ForReading)

'Recupere les lignes du fichier
While Not ts.AtEndOfStream
Ligne = ts.ReadLine
'Si Les 3 premiers caractere son YYY on arrete de memoriser les lignes
If Mid(Ligne, 1, 3) "YYY" Then CommencerTraitement False
If CommencerTraitement Then
LigneDuParagraphe(UBound(LigneDuParagraphe)) = Ligne
ReDim Preserve LigneDuParagraphe(UBound(LigneDuParagraphe) + 1)
End If
'Si Les 3 premiers caractere son XXX on Commence de memoriser les lignes
If Mid(Ligne, 1, 3) "XXX" Then CommencerTraitement True
Wend

ts.Close
Set ts = Nothing
Set fs = Nothing
End Sub