Echanger deux lignes dans fichier texte

Résolu
Lokomass Messages postés 191 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 15 mai 2013 - 22 déc. 2009 à 10:09
Lokomass Messages postés 191 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 15 mai 2013 - 22 déc. 2009 à 11:59
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 déc. 2009 à 10:57
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
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 déc. 2009 à 10:59
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
0
Lokomass Messages postés 191 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 15 mai 2013 1
22 déc. 2009 à 11:17
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 déc. 2009 à 11:26
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lokomass Messages postés 191 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 15 mai 2013 1
22 déc. 2009 à 11:38
La ligne s'affiche en jaune au moment de son exécution mais je ne vois rien après
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 déc. 2009 à 11:47
regarde le contenu de xsLines(i) a chaque tour de boucle (F5)


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

Je retest !
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 déc. 2009 à 11:59
comme ça tu sauras un peu débugger ^^

c'est pas du temps perdu, au contraire.

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