Par Macro, manipuler un Fichier texte(txt) et enregistrer les changements

Sauvagon

XLDnaute Nouveau
Manipuler un Fichier texte(txt) et enregistrer les changements [RESOLU]

bonjour

ce que je voudrais faire dans un fichier texte c'est
par exemple si le mot Maman est trouvé, ajouter juste après
" & Papa" puis un saut de ligne

et cela sur l'ensemble du fichier

puis sauvegarder le fichier quand les modif's effectuées.

je suis a votre écoute
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : Par Macro, manipuler un Fichier texte(txt) et enregistrer les changements

bonjour sauvagon et bienvenue sur le forum,

voici une solution en macro, il ne te reste plus qu'à adapter le path du dossier et le nom du fichier (en gras) :
Code:
Sub test()
Dim myFso As FileSystemObject, txtRead As TextStream, txtWrite As TextStream
Dim dossier As String, fichierSource As String, fichierDestination As String
Dim i As Long
    
    dossier = "[B]E:\XLS\test[/B]"
    fichierSource = dossier & "\" & "[B]test.txt[/B]"
    
    Do
        i = i + 1
        fichierDestination = dossier & "\" & i & ".txt"
    Loop Until Dir(fichierDestination) = vbNullString
    
    Set myFso = CreateObject("Scripting.FileSystemObject")
    Set txtRead = myFso.OpenTextFile(fichierSource, 1)
    Set txtWrite = myFso.CreateTextFile(fichierDestination)
    
    txtWrite.Write (txtRead.ReadAll)
    txtWrite.Close
    txtRead.Close
    
    Set txtRead = myFso.OpenTextFile(fichierDestination, 1)
    Set txtWrite = myFso.CreateTextFile(fichierSource)
    While Not txtRead.AtEndOfStream
        txtWrite.Write (Replace(txtRead.ReadLine, "maman", "maman & papa" & vbNewLine) & vbNewLine)
    Wend
    
    txtWrite.Close
    txtRead.Close
    
    myFso.DeleteFile (fichierDestination)
    
End Sub

a+
 

Sauvagon

XLDnaute Nouveau
Re : Par Macro, manipuler un Fichier texte(txt) et enregistrer les changements

sur un tout petit fichier, cela fonctionne

je vais faire un test sur un très gros fichier

déja merci pour les infos
et un grand merci après des tests poussés
 

Sauvagon

XLDnaute Nouveau
Re : Par Macro, manipuler un Fichier texte(txt) et enregistrer les changements

Oui, cela tourne très bien et très rapide

comme je l'ai promis, un grand merci !

par contre, je dois remplacer

quai "N° 10" par quai "N° 10 Voie de gauche"
les guillemets sont dans le texte

voici mon test qui ne va pas
Code:
txtWrite.Write (Replace(txtRead.ReadLine, _
   "quai "N° 10"", "quai "N° 10 Voie de gauche""))
 

mromain

XLDnaute Barbatruc
Re : Par Macro, manipuler un Fichier texte(txt) et enregistrer les changements

re,

essaye en remplaçant ce code par
Code:
txtWrite.Write (Replace(txtRead.ReadLine, _
   "quai ""N° 10""", "quai ""N° 10 Voie de gauche"""))

a+
 

Sauvagon

XLDnaute Nouveau
Re : Par Macro, manipuler un Fichier texte(txt) et enregistrer les changements

Oui, les deux instructions prisent
séparément tournent

mais si je fais les deux en suivant
Code:
While Not txtRead.AtEndOfStream
    txtWrite.Write (Replace(txtRead.ReadLine, _
    "quai ""N° 10""", "quai ""N° 10 Voie de gauche"""))

    txtWrite.Write (Replace(txtRead.ReadLine, _
    "maman", "maman & papa" & vbNewLine) & vbNewLine)
Wend
J'ai Erreur d'exécution '62': l'entrée dépasse la fin du fichier
 

mromain

XLDnaute Barbatruc
Re : Par Macro, manipuler un Fichier texte(txt) et enregistrer les changements

re,

essaye avec ce code :
Code:
Dim ligneTexte As String

    ...
    ...
    
    While Not txtRead.AtEndOfStream
        ligneTexte = txtRead.ReadLine
        ligneTexte = Replace(ligneTexte, "quai ""N° 10""", "quai ""N° 10 Voie de gauche""")
        ligneTexte = Replace(ligneTexte, "maman", "maman & papa" & vbNewLine) & vbNewLine
        txtWrite.Write ligneTexte
    Wend

a+
 

Sauvagon

XLDnaute Nouveau
Re : Par Macro, manipuler un Fichier texte(txt) et enregistrer les changements

Oui, le traitement s'effectue bien jusqu'a
la fin du fichier

mais l'erreur 62 apparait toujours !

du fait du saut de ligne, je retrouve sur la ligne suivante
une virgule et un espace
comment les supprimer ?
 

mromain

XLDnaute Barbatruc
Re : Par Macro, manipuler un Fichier texte(txt) et enregistrer les changements

re bonjour sauvagon,

je n'ai pas ce problème chez moi...
peux-tu joindre des fichiers pour travailler stp :
> fichier txt (à modifier)
> fichier txt (résultat souhaité)

a+
 

Sauvagon

XLDnaute Nouveau
Re : Par Macro, manipuler un Fichier texte(txt) et enregistrer les changements

Le maman papa et le quai N° 10, c’était pour les tests

Le véritable objectif, c’est d’épurer un fichier HTM

Je sais faire avec frontpage en quelques secondes
Mais c’est par macro que je veut faire

Les instructions se terminant par </a>
doivent avoir un saut de ligne juste après la balise </a>

C’est la après le saut de ligne qu’il y a quelques fois
A la ligne suivante une virgule et un espace que je veut oter

Pour Les instructions commençant par
<a href="……..
Il faut insérer après le <a href=" et avant r2008-03/f7500061.htm
Code:
http://www.cheval-francais.com/courses/
avant :
<a href="r2008-03/f7500061.htm" target="contenu">Vincennes</a>

Après :
<a href="http://www.cheval-francais.com/courses/r2008-03/f7500061.htm" target="contenu">Vincennes</a>

Le fichier -1 est l’original
Le fichier -2 est le fichier traité en finalité sauf virgule / espace
 

Pièces jointes

  • Test-liens-1.zip
    2.2 KB · Affichages: 41
  • Test-liens-2.zip
    2.3 KB · Affichages: 36

mromain

XLDnaute Barbatruc
Re : Par Macro, manipuler un Fichier texte(txt) et enregistrer les changements

Le maman papa et le quai N° 10, c’était pour les tests

Le véritable objectif, c’est d’épurer un fichier HTM

Je sais faire avec frontpage en quelques secondes
Mais c’est par macro que je veut faire

Les instructions se terminant par </a>
doivent avoir un saut de ligne juste après la balise </a>

C’est la après le saut de ligne qu’il y a quelques fois
A la ligne suivante une virgule et un espace que je veut oter

Pour Les instructions commençant par
<a href="……..
Il faut insérer après le <a href=" et avant r2008-03/f7500061.htm
Code:
http://www.cheval-francais.com/courses/
avant :
<a href="r2008-03/f7500061.htm" target="contenu">Vincennes</a>

Après :
<a href="http://www.cheval-francais.com/courses/r2008-03/f7500061.htm" target="contenu">Vincennes</a>

Le fichier -1 est l’original
Le fichier -2 est le fichier traité en finalité sauf virgule / espace

re,

je t'avoue, là j'ai du mal à comprendre...
ils font mal à la tête tes fichiers :eek:

peux-tu faire un exemple plus simple, de quelques ligne, qui montre le problème :
> quelques lignes "sources"
> ces mêmes lignes "traitées par la macro"
> surtout, le résultat souhaité.

merci
 

Sauvagon

XLDnaute Nouveau
Re : Par Macro, manipuler un Fichier texte(txt) et enregistrer les changements

Avant manipulation
Code:
          <td valign=top width=90 nowrap><font face="Arial,Helvetica" size=-1 color="#990099"><b>Sa. 1.3.08</b></font></td>
          <td width=100% valign=top><font face="Arial,Helvetica" size=-1>
<a href="r2008-03/f7500061.htm" target="contenu">Vincennes</a></font></td></tr>

        <tr><td height=5></td></tr>
        <tr>
          <td valign=top width=90 nowrap><font face="Arial,Helvetica" size=-1 color="#990099"><b>Di. 2.3.08</b></font></td>
          <td width=100% valign=top><font face="Arial,Helvetica" size=-1>
<a href="r2008-03/f4701062.htm" target="contenu">Agen-Le Passage</a>, <a href="r2008-03/f0601062.htm" target="contenu">Cagnes-sur-Mer[COLOR="Red"][SIZE="4"]</a>, [/SIZE][/COLOR]<a href="r2008-03/f2801062.htm" target="contenu">Chartres</a>, <a href="r2008-03/f5006062.htm" target="contenu">Cherbourg</a>, <a href="r2008-03/f4905062.htm" target="contenu">Cholet</a>, [COLOR="Red"][SIZE="4"][COLOR="Lime"]<a href="[/COLOR][/SIZE][/COLOR]r2008-03/f1702062.htm" target="contenu">La Rochelle-Chatelaillon</a>, <a href="r2008-03/f7616062.htm" target="contenu">Mauquenchy</a>, <a href="r2008-03/f7104062.htm" target="contenu">Paray-le-Monial</a>, <a href="r2008-03/f4417062.htm" target="contenu">Pontch&acirc;teau</a>, <a href="r2008-03/f2210062.htm" target="contenu">Saint-Brieuc</a>, <a href="r2008-03/f4917062.htm" target="contenu">Saumur</a></font></td></tr>

Code:
Après manipulation

          <td valign=top width=90 nowrap><font face="Arial,Helvetica" size=-1 color="#990099"><b>Sa. 1.3.08</b></font></td>
          <td width=100% valign=top><font face="Arial,Helvetica" size=-1>
<a href="http://www.cheval-francais.com/courses/r2008-03/f7500061.htm" target="contenu">Vincennes </a></p></font></td></tr>

        <tr><td height=5></td></tr>
        <tr>
          <td valign=top width=90 nowrap><font face="Arial,Helvetica" size=-1 color="#990099"><b>Di. 2.3.08</b></font></td>
          <td width=100% valign=top><font face="Arial,Helvetica" size=-1>
<a href="http://www.cheval-francais.com/courses/r2008-03/f4701062.htm" target="contenu">Agen-Le Passage </a></p>, <a href="http://www.cheval-francais.com/courses/r2008-03/f0601062.htm" target="contenu">Cagnes-sur-Mer </a></p>, <a href="http://www.cheval-francais.com/courses/r2008-03/f2801062.htm" target="contenu">Chartres </a>[COLOR="lime"][SIZE="4"]</p>[/SIZE][/COLOR], <a href="http://www.cheval-francais.com/courses/r2008-03/f5006062.htm" target="contenu">Cherbourg </a></p>, <a href="[COLOR="lime"][SIZE="4"]http://www.cheval-francais.com/courses/r2008-03/[/SIZE][/COLOR]f4905062.htm" target="contenu">Cholet </a></p>, <a href="http://www.cheval-francais.com/courses/r2008-03/f1702062.htm" target="contenu">La Rochelle-Chatelaillon </a></p>, <a href="http://www.cheval-francais.com/courses/r2008-03/f7616062.htm" target="contenu">Mauquenchy </a></p>, <a href="http://www.cheval-francais.com/courses/r2008-03/f7104062.htm" target="contenu">Paray-le-Monial </a></p>, <a href="http://www.cheval-francais.com/courses/r2008-03/f4417062.htm" target="contenu">Pontch&acirc;teau </a></p>, <a href="http://www.cheval-francais.com/courses/r2008-03/f2210062.htm" target="contenu">Saint-Brieuc </a></p>, <a href="http://www.cheval-francais.com/courses/r2008-03/f4917062.htm" target="contenu">Saumur </a></p></font></td></tr>

Utiliser l'ascensseur horizontal pour voir les codes en surbrillance
 

mromain

XLDnaute Barbatruc
Re : Par Macro, manipuler un Fichier texte(txt) et enregistrer les changements

bonjour Sauvagon,

tu peux vraiment pas faire un exemple plus simple???
je n'arrive même plus a comprendre ce que tu veux exactement...

en attendant, a+
 

Sauvagon

XLDnaute Nouveau
Manipuler un Fichier texte(txt) et enregistrer les changements [RESOLU]

Bonjour mromain,

Finalement, j"ai résolu le problème hier soir.

En inversant les manipulations de chaine,
cela fonctionne.

Encore merci pour tes conseils.

@ +

PS: J'ai un autre post d'hier concernant Access,
si tu peut jeter un oeil !
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
493

Statistiques des forums

Discussions
312 480
Messages
2 088 757
Membres
103 951
dernier inscrit
Misterb