[Résolu] Remplacer des caractères par d'autres dans un fichier texte

Remplacer des caractères par d'autres dans un fichier texte [Résolu] - Divers - Programmation

Marsh Posté le 02-02-2008 à 15:03:52    

Bonjour à tous :hello:
 
Je dispose d'un fichier texte, écrit avec le notepad XP, et je voudrais remplacer certains caractères par d'autres, automatiquement. Voici un exemple de ce que je voudrais faire :
 
LigneLigneLigneLigneLigne ABC LigneLigneLigneLigneLigne
LigneLigneLigneLigneLigne ABC LigneLigneLigneLigneLigne
LigneLigneLigneLigneLigne ABC LigneLigneLigneLigneLigne
LigneLigneLigneLigneLigne ABC LigneLigneLigneLigneLigne
LigneLigneLigneLigneLigne ABC LigneLigneLigneLigneLigne
 
Et je voudrais remplacer tout ça par
 
LigneLigneLigneLigneLigne 001 LigneLigneLigneLigneLigne
LigneLigneLigneLigneLigne 002 LigneLigneLigneLigneLigne
LigneLigneLigneLigneLigne 003 LigneLigneLigneLigneLigne
LigneLigneLigneLigneLigne 004 LigneLigneLigneLigneLigne
LigneLigneLigneLigneLigne 005 LigneLigneLigneLigneLigne
 
Sans devoir changer les "ABC" par des numéros, manuellement...
Il faudrait que ca puisse remplacer ces caractères par une numérotation automatique.
Alors comment faire ?
 
Merci beaucoup par avance :jap:


Message édité par Flo7516 le 03-02-2008 à 11:29:45

---------------
| {Mes ventes} | Hébergement images rémunéré | E-mails & Sondages rémunérés |
Reply

Marsh Posté le 02-02-2008 à 15:03:52   

Reply

Marsh Posté le 02-02-2008 à 17:55:29    

Up :bounce:


---------------
| {Mes ventes} | Hébergement images rémunéré | E-mails & Sondages rémunérés |
Reply

Marsh Posté le 02-02-2008 à 21:37:09    

Voici, cadeau, un programme que j'ai testé avec votre fichier en exemple:

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, f_in, f_out
Dim file_in, file_out
 
Set fso = CreateObject("Scripting.FileSystemObject" )
 
file_in = "fichier_abc.txt"
file_out = fso.GetBaseName(file_in) & "_new.txt"
 
Set f_in = fso.OpenTextFile(file_in, ForReading)
Set f_out = fso.OpenTextFile(file_out, ForWriting, true)
 
i = 1
Do Until f_in.AtEndOfStream
   text_line = f_in.ReadLine
   If (InStr(text_line, " ABC " ) > 0) Then
      new_chaine = " " & Right("000" & i, 3) & " "
      text_line = Replace(text_line, " ABC ", new_chaine)
      i = i + 1
   End If
   f_out.WriteLine text_line
Loop
 
f_in.Close
f_out.Close
 
' Remplace l'ancien fichier par le nouveau fichier
' (mis en commentaires pendant les tests)
'fso.DeleteFile file_in, true
'fso.MoveFile file_out, file_in
 
WScript.Echo "Fin"

C'est du VBS, donc il suffit de faire un copier coller dans un fichier que l'on nommera, par exemple "remplace_abc.vbs", puis de lancer ce programme en cliquant dessus.

Reply

Marsh Posté le 03-02-2008 à 09:12:24    

:hello:
Merci beaucoup, ça fonctionne ! :jap:

 

Et comment pourrait on faire pour remplacer "Ligne ABC Ligne" par "Ligne 001 Ligne" ? Car si j'ai par exemple des lignes "LigneAZ ABC LigneAZ", elles seront aussi remplacées en "LigneAZ 001 LigneAZ" alors que je voudrais les garder telles quel :)

 

Edit : C'est bon, j'ai résolu mon problème.
Merci infiniment ! :D


Message édité par Flo7516 le 03-02-2008 à 09:30:27

---------------
| {Mes ventes} | Hébergement images rémunéré | E-mails & Sondages rémunérés |
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed