Echanger deux lignes dans fichier texte [Résolu]

Signaler
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
-
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
-
Bonjour,

Dans mon fichier texte j'ai à plusieurs reprises :

Duplex "Quelque chose"
Speed "Quelques chose"


J'ai besoin d'intervertir ces deux lignes dans tout mon fichier texte.
Seulement je n'ai aucune idée de comment faire....
En gros j'aimerai avoir :

Speed "Quelques chose"
Duplex "Quelque chose"


Comment faire

12 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Dim xsLines() As String
Dim i As Long
Dim sSwap As String
    Open "C:\a.txt" For Input As #1
        xsLines = Split(Input(LOF(1), 1), vbNewLine)
    Close #1
    Do While i < UBound(xsLines)
        If Left$(xsLines(i), 7) "Duplex " And Left$(xsLines(i + 1), 6) "Speed " Then
            sSwap = xsLines(i)
            xsLines(i) = xsLines(i + 1)
            xsLines(i + 1) = sSwap
            i = i + 1
        End If
        i = i + 1
    Loop
    Open "C:\b.txt" For Output As #1
        Print #1, Join(xsLines, vbNewLine);
    Close #1


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
on charge tout le fichier dans un tableau de lignes

on parcoure le tableau, ligne a ligne
on regarde si on doit intervertir les lignes

on réécris le fichier

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
1
Je te remercie, après avoir tester dans une fonction, les deux fichiers texte sont les memes et il n'y a pas echange des deux lignes :(, peut être ai-je mal fait ?


Public Function Changeur(Fich1 As String)
Dim Deux As String
Deux = "C:\Documents and Settings\Loko\Bureau\Reel.txt"
Dim xsLines() As String
Dim i As Long
Dim sSwap As String
    Open Fich1 For Input As #1
        xsLines = Split(Input(LOF(1), 1), vbNewLine)
    Close #1
    Do While i < UBound(xsLines)
        If Left$(xsLines(i), 7) "Duplex " And Left$(xsLines(i + 1), 6) "Speed " Then
            sSwap = xsLines(i)
            xsLines(i) = xsLines(i + 1)
            xsLines(i + 1) = sSwap
            i = i + 1
        End If
        i = i + 1
    Loop
    Open Deux For Output As #1
        Print #1, Join(xsLines, vbNewLine);
    Close #1
End Function
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
testes en pas a pas, tu verras bien...

place ton curseur de texte ici

If Left$(xsLines(i), 7) "Duplex " And Left$(xsLines(i + 1), 6) "Speed " Then

et presse F9

et relance le projet

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
1
La ligne s'affiche en jaune au moment de son exécution mais je ne vois rien après
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
regarde le contenu de xsLines(i) a chaque tour de boucle (F5)


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
1
Il ne rentre jamais dans la boucle !
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
1
Enfin dans le IF de la boucle pardon
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
1
Bohhh chui une ciche, j'ai trouvé !!!
C'est "duplex" et "speed" sans les majuscules c'est de ma faute !!!

Je retest !
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
comme ça tu sauras un peu débugger ^^

c'est pas du temps perdu, au contraire.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
1
Ca fonctionne impeccable, merci beaucoup encore et encore
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Statut
Membre
Dernière intervention
15 mai 2013
1
C'est sur maintenant je sais comment on faire grace a toi !