Generer un fichier plat (txt) à partir d'un document Excel

Bonjour à tous,

j'aimerai générer de manier automatique un fichier plat à partir d'une feuille excel contenant plusieurs colonnes.

mon fichier plat doit avoir la structure suivante:

1= |ENTETE|

2= information des colonnes |A|B|C|D|....|R| et |Y|Z|AA|AB|AC| de la ligne 1

3= information des colonnes |S|T|U|V|W|X| de la ligne 1

2= information des colonnes |A|B|C|D|....|R| et |Y|Z|AA|AB|AC| de la ligne 2

3= information des colonnes |S|T|U|V|W|X| de la ligne 2

5= |numéro du fichier|nombre de ligne ou enregistrement

merci pour votre aide svp.

pour faire simple ci dessous un fichier contenant 05 lignes/enregistrements et 06 colonnes

NUM_LIGNE IDENTIFINAT NOM PRENOM SEXE NATIONALITE RACE

1 111 ALI JEAN M GABONAIS NOIRE

2 222 JET LI M CHINOIS JAUNE

3 333 BIG NOTOR M AMERICAINE NOIRE

4 444 APACHE TARR F INDIEN ROUGE

5 555 JEN TRIXX F SUISSE BLANCE

ci dessous le résultat qu'on devrait avoir dans le fichier texte à générer

1|FICHIER NUM1|

2|111|ALI|JEAN|M

3|GABONAIS|NOIRE|

2|222|JET|LI|M

3|CHINOIS|JAUNE|

2|333|BIG|NOTOR|M

3|AMERICAINE|NOIRE|

2|444|APACHE|TARR|F

3|INDIEN|ROUGE|

2|555|JEN|TRIXX|F

3|SUISSE|BLANCHE|

5|FICHIER NUM1|5


je joins le fichier excel de depart et le fichier texte d'arrivé.

je n'arrive pas à rediger le bon code vba.

Sub TestCreationFichierTxt()

Dim MesDonnees()

Dim Chemin As String, Ligne As String, ColB As String, ColBInit As String

Dim num As Integer

Dim i As Long, j As Long, DernLigne As Long

num = FreeFile

With Sheets("Feuil1") ' A ADAPTER le nom de la feuille contenant les données

'A ADAPTER au cas ou la colonne A ne serait pas la plus "longue"

DernLigne = .Range("A" & Rows.Count).End(xlUp).Row

'A ADAPTER ici ne traite que les colonnes de A à E

MesDonnees = .Range("A1:AC" & DernLigne).Value

End With

'A ADAPTER : chemin d'accès complet pour le stockage du fichier txt

Chemin = "C:\Users\a_akayalaye\Desktop"

'A ADAPTER le nom du fichier txt à créer

Open Chemin & "\MonFichierTexte.txt" For Output As #num

'Boucle sur la liste des mots

For i = LBound(MesDonnees, 1) To UBound(MesDonnees, 1)

For j = LBound(MesDonnees, 2) To UBound(MesDonnees, 2)

If j = LBound(MesDonnees, 2) Then

Ligne = MesDonnees(i, j) & " |"

Else

Ligne = Ligne & MesDonnees(i, j) & " |"

End If

Next j

'Ici on traite le souci de la ligne d'entêtes...

If i = LBound(MesDonnees, 1) Then

Ligne = Left(Ligne, Len(Ligne) - 4)

ColBInit = Split(Ligne, " |")(1)

ColB = ColBInit

Do While Len(ColB) < 8

ColB = "0" & ColB

Loop

Ligne = Replace(Ligne, ColBInit, ColB)

End If

'Ecrit dans le fichier texte ligne par ligne

Print #1, Ligne

Ligne = ""

Next i

'Fermeture

Close #num

End Sub

merci de m'aider svp.

97ati-test1-text.txt (646.00 Octets)
95ati-test1.xlsx (10.07 Ko)

bonjour,

essaie ceci

Sub TestCreationFichierTxt()
    Dim MesDonnees()
    Dim Chemin As String, Ligne As String, ColB As String, ColBInit As String
    Dim num As Integer
    Dim i As Long, j As Long, DernLigne As Long
    num = FreeFile
    With Sheets("Feuil1")
        DernLigne = .Range("A" & Rows.Count).End(xlUp).Row
        MesDonnees = .Range("A1:AC" & DernLigne).Value
    End With
    Chemin = "C:\Users\eric\Downloads"
    Open Chemin & "\MonFichierTexte.txt" For Output As #num
    'on écrit la première ligne
    Ligne = "1|0000000001|CM|10001|01|" & Format(Date, "ddmmyyyy") & "|"
    Print #1, Ligne
    'Boucle sur la liste des mots
    For i = LBound(MesDonnees, 1) To UBound(MesDonnees, 1)
        lcol = "0102030405060708091011121314151617182526272829"
        Ligne = "2|"
        For j = 1 To Len(lcol) Step 2
            Ligne = Ligne & Trim(MesDonnees(i, Mid(lcol, j, 2))) & " |"
        Next j
        Print #num, Ligne
        lcol = "192021222324"
        Ligne = "3|"
        For j = 1 To Len(lcol) Step 2
            Ligne = Ligne & Trim(MesDonnees(i, Mid(lcol, j, 2))) & " |"
        Next j
        Print #1, Ligne
        Ligne = ""
    Next i
    'on écrit la dernière ligne
    Print #num, "5|0000000001|" & DernLigne
    'Fermeture
    Close #num
End Sub

Bonjour H2SO4,

merci pour ton aide, j'ai effectivement le résultat attendu.

Rechercher des sujets similaires à "generer fichier plat txt partir document"