Ecrire et modifier un fichier .txt en VBA

Bonjour,

Je voudrais ouvrir et modifier un fichier .txt avec une macro. Le but serait :

  • ouvrir le fichier et en faire une copie en enregistrant sous par exemple : Fichier source :"bidule.txt" Fichier créé : "bidule_modif.txt"
  • fermer le Fichier source,
  • dans le fichier créé, supprimer les lignes où il y a aucune valeur ou bien des valeurs non numériques,
  • décaler une ligne sur deux, c'est à dire :
La ligne i = 1, ne change pas mais le contenu de la ligne i=2 va se placer derrière la ligne i=1 en laissant un espace entre les données et la ligne i=2 qui se retrouve vide devra être supprimée.

Je ne sais pas si cela est possible mais sa serait plutôt génial si quelqu'un pouvait m'aider.

Merci d'avance.

Cordialement,

U_goffu

Bonjour U_goffu

U_goffu a écrit :

Je ne sais pas si cela est possible

Oui (c'est possible - tout est possible ) le tout c'est de formuler le problème dans des termes clairs
U_goffu a écrit :

mais sa serait plutôt génial si quelqu'un pouvait m'aider.

avec un petit exemple pour aider à la compréhension et surtout à la résolution !

un exemple du style "l'ancien fichier txt" devient "le nouveau fichier txt" (et pourquoi - si il y a des "règles" à prendre en compte)

Bonjour,

autant pour moi, voici un exemple des deux fichiers. Comme dit précedemment, le but serait de mettre une ligne sur deux derrière la précédente, et en enlevant les vides et les valeurs vides.

Cordialement,

U_goffu

403ancien-fichier.txt (419.00 Octets)
381nouveau-fichier.txt (295.00 Octets)

Bonjour U_goffu

Théoriquement cela devrait répondre à ton besoin...

Bonjour Andréa73,

Je suis en train de regarder ce que tu as fait. C'est plutot super je pense mais j'ai un soucis car il ne détecte pas le Chemin des fichiers textes : newTxt = Range("nouvTxt")

oldTxt = Range("vieuTxt")

Du coup la fonction ExisteTxt, m'annonce à chaque fois que mon fichier n'existe pas. Néanmoins, je te remercie pour ton aide qui m'est très utile.

Merci encore.

Je viens de vérifier, tout fonctionne, merci beaucoup Andréa73.

Pour info, lorsque la ligne i et la ligne i=i+1 viennent se mettre l'une après l'autre, pourquoi n'y a t'il pas d'espace?

car il me semble qu'avec le code que tu as écris , il devrait y en avoir un.

Sub Parcourir()
Dim msg1, msg2, msg3

    Input #1, msg1   ' 1ere ligne vide
    Input #1, msg2   ' 2eme ligne inutile

    Input #1, msg1   ' 1ere ligne entete
    Input #1, msg2   ' 2eme ligne entete

    While Not EOF(1)
        msg3 = ""
        Line Input #1, msg1
        For p = 1 To Len(msg1)
            msg3 = msg3 + IIf(Asc(Mid(msg1, p, 1)) < 32, " ", Mid(msg1, p, 1))
        Next

        On Error GoTo errParcourir
        Line Input #1, msg2

        For p = 1 To Len(msg2)
            msg3 = msg3 + IIf(Asc(Mid(msg2, p, 1)) < 32, " ", Mid(msg2, p, 1))
        Next

errParcourir:
        On Error GoTo 0
        Print #2, msg3
    Wend

End Sub

C'est bon j'ai juste rajouter cette condition :

        For p = 1 To Len(msg2)
            If p = 1 Then
                msg3 = msg3 + " " & IIf(Asc(Mid(msg2, p, 1)) < 32, " ", Mid(msg2, p, 1))
            Else
                msg3 = msg3 + IIf(Asc(Mid(msg2, p, 1)) < 32, " ", Mid(msg2, p, 1))
            End If
        Next

Merci pour tout Andréa73

Bonjour U_goffu

Heureux d'avoir contribué à ton problème...

U_goffu a écrit :

C'est plutot super

Merci
U_goffu a écrit :

Merci pour tout Andréa73

de rien... et désolé pour les petits bugs que tu as corrigé avec brio
Rechercher des sujets similaires à "ecrire modifier fichier txt vba"