Point virgule fin de ligne après export de XLS vers TXT

Bonsoir,

J'ai un fichier excel dans lequel j'ai une feuille que je souhaite exporter via une macro en format TXT.

J'ai réussi à créer cette macro.

Voici mon problème :

les données que je veux exporter sont inscrites dans 6 colonnes (de A à F), sauf pour la première ligne qui n'occupe que 5 colonnes (de A à E). Du coup, après l'export, dans mon fichier TXT, je n'ai pas de point-virgule à la fin de mes lignes, sauf pour la première ligne. Voici un extrait du fichier TXT :

E;C0451;41619;TEST1;TEST2;

L;123.1015;;;3;BAR

L;124.1015;;;3;BAR

L;125.1015;;;3;BAR

L;126.1015;;;3;BAR

j'ai besoin de faire apparaître des points-virgules à la fin de chaque ligne.. quelqu'un peut m'aider ? Quel code dois-je intégrer à ma macro ?

J'ai essayé d'insérer un point-virgule après BAR (dans la même cellule) mais lorsque j'exporte vers TXT, il me met "BAR;" et non BAR;

Merci beaucoup par avance

Bonsoir,

peux-tu joindre un fichier avec ta macro ?

Oui oui ! voici une copie de ma feuille et de ma macro

60test-macro.xlsm (14.88 Ko)

bonsoir,

une macro à tester

Sub CopyToTXT()
'
' CopyToTXT Macro
' enregistre la feuille en txt
'

    num_affaire = Worksheets("export").Cells(1, 5).Value

    Open "C:\Users\" & num_affaire & ".txt" For Output As #1
    i = 1
    Do

        For j = 1 To 6
            If Cells(i, j) <> "" Then
                Print #1, Chr(34) & Cells(i, j) & Chr(34) & ";";
            Else
                Print #1, ";";
            End If
        Next j

        Print #1, ""
        i = i + 1
    Loop Until Cells(i, 1) = ""
    Close 1

End Sub

on n'est pas loin(ci-joint le résultat) , le pb, c'est que j'ai des guillemets autour de mes données et il ne m'en faut pas.

30test2.txt (357.00 Octets)

juste une précision que je n'ai pas indiqué, le nombre de ligne peut varier, il n'est pas statique, en revanche, les colonnes elles seront toujours de A à F.

Merci encore pour votre aide

Correction

Sub CopyToTXT()
'
' CopyToTXT Macro
' enregistre la feuille en txt
'

    num_affaire = Worksheets("export").Cells(1, 5).Value

    Open "C:\Users\" & num_affaire & ".txt" For Output As #1
    i = 1
    Do

        For j = 1 To 6
            If Cells(i, j) <> "" Then
                Print #1,  Cells(i, j) & ";";
            Else
                Print #1, ";";
            End If
        Next j

        Print #1, ""
        i = i + 1
    Loop Until Cells(i, 1) = ""
    Close 1

End Sub

on se rapproche encore un peu plus )

mon souci = on a 2 points virgules en fin de première ligne (ci-joint fichier TXT issu de la macro)

28test2.txt (259.00 Octets)

Nouvelle correction

Sub CopyToTXT()
'
' CopyToTXT Macro
' enregistre la feuille en txt
'

    num_affaire = Worksheets("export").Cells(1, 5).Value

    Open "C:\Users\" & num_affaire & ".txt" For Output As #1
    i = 1
    Do
        if i=1 then lim=5 else lim=6
        For j = 1 To lim
            If Cells(i, j) <> "" Then
                Print #1,  Cells(i, j) & ";";
            Else
                Print #1, ";";
            End If
        Next j

        Print #1, ""
        i = i + 1
    Loop Until Cells(i, 1) = ""
    Close 1

End Sub

whaouuu alors là !! MERCI !! Le fichier test fonctionnre

Je l'applique à mon "vrai" fichier et vous tiens au courant


Juste un petit détail, le format date doit rester aaaammjj dans le fichier txt or il est transformé en jj/mm/aaaa

Génial, ça tourne impeccable dans mon fichier de travail !!! juste l'histoire de la date qui ne colle pas. Dans le fichier XLS j'ai une date = 20131211 et dans le fichier TXT après export j'ai = 41619.

Sub CopyToTXT()
'
' CopyToTXT Macro
' enregistre la feuille en txt
'

    num_affaire = Worksheets("export").Cells(1, 5).Value

    Open "C:\Users\" & num_affaire & ".txt" For Output As #1
    i = 1
    Do
        If i = 1 Then lim = 5 Else lim = 6
        For j = 1 To lim
            If Cells(i, j) <> "" Then
                If Cells(i, j).NumberFormat <> "General" Then
                    Print #1, Format(Cells(i, j), Cells(i, j).NumberFormat) & ";";
                Else
                    Print #1, Cells(i, j) & ";";
                End If
            Else
                Print #1, ";";
            End If
        Next j

        Print #1, ""
        i = i + 1
    Loop Until Cells(i, 1) = ""
    Close 1

End Sub

C'est PARFAIT !!

Merci mille fois h2so4

et bonne soirée

je suis bluffée par ta rapidité !! bravo tu es mon sauveur

Rechercher des sujets similaires à "point virgule fin ligne export xls txt"