XL 2013 Convertir fichier excel en fichier texte

Mouelhib

XLDnaute Nouveau
Bonjour, je poste de nouveau ma demande d'aide, voila en parcourant le forum j'ai trouvé des solutions à plusieurs de mes problèmes grâce à vos réponses. donc j'ai pu exporter mes données en format txt seuelemnt je veux garder la longueur des deux champs Nom et prénom (40c chacun) sachant que parfois le prénom ou le nom soit composé et bien entendu je dois insérer des espaces pour atteindre (40c) de même pour les montants qui doivent rester sur 12c donc je dois ajouter des 0.
Juste une petite macro qui reussi à me faire cela et merci pour vos aide.
 

Pièces jointes

  • fichierdonnées.xlsx
    16.2 KB · Affichages: 9
Solution
re
Bonjour
dans mon code en post 4 la chose est très simple
si j'ai bien compris ton intention (bien sur ;) )
VB:
For i = 1 To UBound(tbl)
        tbl(i, 9) = tbl(i, 9) & Application.Rept(" ", 40 - Len(tbl(i, 9)))'nom
        tbl(i, 10) = tbl(i, 10) & Application.Rept(" ", 40 - Len(tbl(i, 10)))'prenom

        'formate les colonnes que tu veux ici
        'la colonne "montant je ne sais pas la quelle c'est

    Next
dans cette boucle ici je fait le nom et prenom (respectivement les colonnes 9 et 10)
il ne tiens qu'a toi d'en ajouter
il te suffit de copier la ligne du prenom(la 10) par exemple
de la coller la ligne en dessous
et dans cette nouvelle ligne ,de changer le 10 pour la colonne que tu veux et le 40 pour le nombre de...

patricktoulon

XLDnaute Barbatruc
bonjour à tous
juste en passant
ADAPTE "fichier"
VB:
Sub regtext()
    Dim fichier, tbl, i&, c&, x&, T$
    fichier = "C:\Users\patrick1\Desktop\mon fichierentxt.txt"'A ADAPTER
  
    tbl = Range("a1", Cells(1, "a").End(xlDown)).Resize(, 115)
    For i = 1 To UBound(tbl)
        tbl(i, 9) = tbl(i, 9) & Application.Rept(" ", 40 - Len(tbl(i, 9)))'nom
        tbl(i, 10) = tbl(i, 10) & Application.Rept(" ", 40 - Len(tbl(i, 10)))'prenom

        'formate les colonnes que tu veux ici
        'la colonne "montant je ne sais pas la quelle c'est

    Next

    For i = 1 To UBound(tbl)
        For c = 1 To UBound(tbl, 2)
            T = T & tbl(i, c) & ";"
        Next
        T = T & vbCrLf
    Next
    x = FreeFile: Open fichier For Output As #x: Print #x, T: Close #x
End Sub
résultat
demo.gif
 

Mouelhib

XLDnaute Nouveau
bonjour à tous
juste en passant
ADAPTE "fichier"
VB:
Sub regtext()
    Dim fichier, tbl, i&, c&, x&, T$
    fichier = "C:\Users\patrick1\Desktop\mon fichierentxt.txt"'A ADAPTER
 
    tbl = Range("a1", Cells(1, "a").End(xlDown)).Resize(, 115)
    For i = 1 To UBound(tbl)
        tbl(i, 9) = tbl(i, 9) & Application.Rept(" ", 40 - Len(tbl(i, 9)))'nom
        tbl(i, 10) = tbl(i, 10) & Application.Rept(" ", 40 - Len(tbl(i, 10)))'prenom

        'formate les colonnes que tu veux ici
        'la colonne "montant je ne sais pas la quelle c'est

    Next

    For i = 1 To UBound(tbl)
        For c = 1 To UBound(tbl, 2)
            T = T & tbl(i, c) & ";"
        Next
        T = T & vbCrLf
    Next
    x = FreeFile: Open fichier For Output As #x: Print #x, T: Close #x
End Sub
résultat
Regarde la pièce jointe 1167607
Bonjour, merci pour votre aide, je vais essayer votre solution.
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour
dans mon code en post 4 la chose est très simple
si j'ai bien compris ton intention (bien sur ;) )
VB:
For i = 1 To UBound(tbl)
        tbl(i, 9) = tbl(i, 9) & Application.Rept(" ", 40 - Len(tbl(i, 9)))'nom
        tbl(i, 10) = tbl(i, 10) & Application.Rept(" ", 40 - Len(tbl(i, 10)))'prenom

        'formate les colonnes que tu veux ici
        'la colonne "montant je ne sais pas la quelle c'est

    Next
dans cette boucle ici je fait le nom et prenom (respectivement les colonnes 9 et 10)
il ne tiens qu'a toi d'en ajouter
il te suffit de copier la ligne du prenom(la 10) par exemple
de la coller la ligne en dessous
et dans cette nouvelle ligne ,de changer le 10 pour la colonne que tu veux et le 40 pour le nombre de caractères que tu veux
terminé la chose est simple, le reste ne change pas
 

Mouelhib

XLDnaute Nouveau
re
Bonjour
dans mon code en post 4 la chose est très simple
si j'ai bien compris ton intention (bien sur ;) )
VB:
For i = 1 To UBound(tbl)
        tbl(i, 9) = tbl(i, 9) & Application.Rept(" ", 40 - Len(tbl(i, 9)))'nom
        tbl(i, 10) = tbl(i, 10) & Application.Rept(" ", 40 - Len(tbl(i, 10)))'prenom

        'formate les colonnes que tu veux ici
        'la colonne "montant je ne sais pas la quelle c'est

    Next
dans cette boucle ici je fait le nom et prenom (respectivement les colonnes 9 et 10)
il ne tiens qu'a toi d'en ajouter
il te suffit de copier la ligne du prenom(la 10) par exemple
de la coller la ligne en dessous
et dans cette nouvelle ligne ,de changer le 10 pour la colonne que tu veux et le 40 pour le nombre de caractères que tu veux
terminé la chose est simple, le reste ne change pas
Merci Patrick, c'est ce que j'ai fais et ça marche. j'ai supprimé le séparateur parce que je n'en ai pas besoin.
 

Pièces jointes

  • fichierdonnées.xlsm
    21.2 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 172
dernier inscrit
Aurelyan