cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
27
26 août 2006 à 19:51
Bonsoir,
Suite à ton mail, si ça peut t'aider....
Un script que je suis en train de mettre en prod.
Si d'autres questions, repose un topic...
@+
jean-marc
'
'Modification, dans un fichier .txt, de l'occurence située après une occurence passée en variable
'
Option Explicit
Dim NEW_CHAINE, Separator
Separator = "="
NEW_CHAINE = "ce texte remplacera le mot situé après l'occurence""" & Separator & """ et la suite de la ligne. Ici, "
Dim Fso, Path, Fichier, Fic_Entree, Fic_Sortie, Fic_Temp, Fic_Sauv, lignes
Dim i, strtmp, strtmp_count, strtmp_count_ligne_courante, strtmp_count_lignes_modifiees Const ForReading 1, ForWriting 2, ForAppending = 8
Path = "d:"
Fichier = "test1.txt"
Fic_Sauv = Path & "sauv_" & Fichier
Fic_Temp = Left(Path & Fichier,Len(Path & Fichier)-4) & "_new.txt"
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Fic_Entree = Fso.OpenTextFile(Path & Fichier, 1, False)
Set Fic_Sortie = Fso.OpenTextFile( Fic_Temp, 2, True)
Do While Not Fic_Entree.AtEndOfStream
strtmp = Split(Fic_Entree.ReadAll, vbCrLf) 'création tableau du fichier
strtmp_count = UBound(strtmp) 'nombre de lignes du fichier
' For i = LBound(strtmp) to Ubound(strtmp) ' ou ligne ci-dessous
For i = 0 to Ubound(strtmp)
strtmp_count_ligne_courante = strtmp_count_ligne_courante + 1
Dim MyArray
MyArray = Split(Trim(strtmp(i)), Separator, -1, 1) 'creation tableau de la ligne courante
If UBound(MyArray) = 1 Then
Dim Msg, New_Array
Msg = MyArray(0) & Space(1) & Separator & Space(1) & MyArray(1)
New_Array = Split(Trim(MyArray(1)), " ", -1, 1) 'création tableau de la chaine à modifier
'MsgBox "ligne " & strtmp_count_ligne_courante & " avant modif: " &vbCrLf& Msg &vbCrLf&vbCrLf&_
' "ligne " & strtmp_count_ligne_courante & " après modif: " &vbCrLf& Replace(Msg, New_Array(0), NEW_CHAINE) &vbCrLf&vbCrLf&_
' "Longueur de la ligne avant modif: " & Len(Msg) &vbCrLf&_
' "Longueur de la ligne après modif: " & Len(Replace(Msg, New_Array(0), NEW_CHAINE)) &vbCrLf&vbCrLf&_
' "L'occurence """ & New_Array(0) & """ située après """ & Separator & """ a été remplacée par """ & NEW_CHAINE & """"
strtmp(i) = Replace(Msg, New_Array(0), NEW_CHAINE)
'Exemple pour insérer une ligne
strtmp(i) = "'la ligne " & strtmp_count_ligne_courante & " ci-dessous a été modifiée" &vbCrLf& strtmp(i)
strtmp_count_lignes_modifiees = strtmp_count_lignes_modifiees + 1
' MsgBox strtmp(i)
' End If
End If
' Call Fic_Sortie.WriteLine(strtmp(i)) ' ou ligne ci-dessous
Fic_Sortie.WriteLine strtmp(i)
' Fic_Sortie.WriteBlankLines 1 ' pour créer une ligne à blanc
Next
Loop
Call Fic_Sortie.WriteBlankLines(2)
Call Fic_sortie.WriteLine("Nombre de lignes modifiées : " & strtmp_count_lignes_modifiees)
Call Fic_Sortie.Close
Call Fic_Entree.Close
'Rename fichiers
'Fso.CopyFile Path & Fichier, Path & "sauv_" & Fichier, True
Fso.CopyFile Fic_Temp, Path & Fichier, True
Fso.DeleteFile Fic_Temp
Set Fic_Sortie = Nothing
Set Fic_Entree = Nothing
Set Fso = Nothing
MsgBox "Script terminé" &vbCrLf& "Nombre de lignes modifiées : " & strtmp_count_lignes_modifiees
'Contenu du fichier test1.txt avant
'ligne1 début du test
'ligne2
'
'tttt = jean-marc_1 expression
'mot_1 = valeur_a_changer valeur_devant_rester
'
'autre cas: aaaa = jean-marc_2
'ligne8 com /1 mentai=/res
'ligne9 mot_1 = valeur_a_changer
'
'
'Contenu du fichier test1.txt après
'ligne1 début du test
'ligne2
'
''la ligne 4 ci-dessous a été modifiée
'tttt = ce texte remplacera le mot situé après l'occurence"=" et la suite de la ligne. Ici, expression
''la ligne 5 ci-dessous a été modifiée
'mot_1 = ce texte remplacera le mot situé après l'occurence"=" et la suite de la ligne. Ici, valeur_devant_rester
'
''la ligne 7 ci-dessous a été modifiée
'autre cas: aaaa = ce texte remplacera le mot situé après l'occurence"=" et la suite de la ligne. Ici,
''la ligne 8 ci-dessous a été modifiée
'ligne8 com /1 mentai = ce texte remplacera le mot situé après l'occurence"=" et la suite de la ligne. Ici,
''la ligne 9 ci-dessous a été modifiée
'ligne9 mot_1 = ce texte remplacera le mot situé après l'occurence"=" et la suite de la ligne. Ici,
'
'
'
'
'Nombre de lignes modifiées : 5