Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Conversion xls en .txt avec longueur de colonnes fixes

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jpsafe

XLDnaute Nouveau
Bonsoir,

J'ai besoin de votre aide et les solutions trouvées sur le forum ne semblent pas fonctionner dans mon cas où plus vraisemblablement je ne suis pas assez doué pour les exploiter 🙂.
J'ai besoin de générer à partir d'un fichier excel,un fichier texte ou les tailles de colonnes sont figées pour un total de 680 caractères et 59 colonnes.

Je vous un fichier contenant le nombre de caractères max de chaque colonne texte et un onglet de données exemple.

Un grand merci pour votre aide
JP
 

Pièces jointes

Solution
Bonsoir,
VB:
Sub test()
ThisWorkbook.Sheets("Format TXT").Range("A1").CurrentRegion.Copy 'LLe fichier Schema.ini contient le format du fichier tex à créer  {voire onglet Format TXT}!
CreerTxt ThisWorkbook.Path & "\Schema.ini", Replace(PressePapier, vbTab, " ")
CreerTxt ThisWorkbook.Path & "\TEST.CSV", ""
With CreateObject("Adodb.connection") 'Fichier vierge !
    .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & ";Extended Properties=""Text;HDR=No;FMT=FixedLength;"""
    .Execute "insert  into [TEST#CSV] select * from [Donnees$] in '" & ThisWorkbook.FullName & "' 'excel 12.0;HDR=no;IMEX=1;'"
    .Close
End With
End Sub
Private Sub CreerTxt(Fichier, TxtDefault As String) 'Ici  on génère un fichier text
Dim FSO...
Bonjour,
Je ne suis pas sûr de comprendre si tu veux transformer un fichier Excel contenant des données en fichier Texte avec des colonnes de longueur déterminées ou si tu veux seulement générer un fichier Texte sans données (ou peut-être seulement les titres de colonnes) avec des colonnes de longueur déterminée.
 
Dans le 1er cas, il va falloir une macro qui contrôle la longueur des données pour:
- les couper en morceaux pour qu'elles rentrent dans la colonne
- et/ou les compléter avec des espaces pour qu'elles remplissent la colonne
sachant que la largeur de caractère est fixe dans un fichier texte.
 
Bonjour Dudu,
Oui je dois générer un fichier texte de longueur totale déterminée ( 680 caractères) avec des colonnes de longueur fixes ( le nombre de caractères par colonne se trouve dans l'onglet Format txt) à partir d'un fichier excel contenant les données (sans titre de colonnes) mais avec certaines colonnes vides comme les cellules excel. J'imagine que c'est parce que la récupération de ces données va s'effectuer à partir du décompte de caractère.
J'ai vérifié qu'aucune des données du fichier excel ne dépasse le nombre de caractère max de chaque colonne
 
Non aucun séparateur juste le nombre de caractère par colonne donc je pense que l'exploitation se fait avec le n° des caractères dans le fichier txt ce qui permettrait d'identifier les colonnes vides.
J'ai peut-être qque chose avec notepad++ et une macro que j'ai trouvé sur le site mais que je n'arrivais pas à faire fonctionner ou j'arrive bien à un fichier txt où les lignes font bien 680 caractères puis on passe à la ligne suivante ce qui devrait résoudre mon pb.
C'est quand même effectivement plus simple avec les séparateurs intégrés dans le fichier txt pour identifier instantanément les colonnes même vides
J'envoie ça et j'attends le retour si c'est ok
Je reviens sur le sujet en fonction du retour
Merci Dudu
 
Bonsoir,
VB:
Sub test()
ThisWorkbook.Sheets("Format TXT").Range("A1").CurrentRegion.Copy 'LLe fichier Schema.ini contient le format du fichier tex à créer  {voire onglet Format TXT}!
CreerTxt ThisWorkbook.Path & "\Schema.ini", Replace(PressePapier, vbTab, " ")
CreerTxt ThisWorkbook.Path & "\TEST.CSV", ""
With CreateObject("Adodb.connection") 'Fichier vierge !
    .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & ";Extended Properties=""Text;HDR=No;FMT=FixedLength;"""
    .Execute "insert  into [TEST#CSV] select * from [Donnees$] in '" & ThisWorkbook.FullName & "' 'excel 12.0;HDR=no;IMEX=1;'"
    .Close
End With
End Sub
Private Sub CreerTxt(Fichier, TxtDefault As String) 'Ici  on génère un fichier text
Dim FSO, NewFichier
Set FSO = CreateObject("Scripting.FileSystemObject")
Set NewFichier = FSO.OpenTextFile(Fichier, 2, True)
NewFichier.Write TxtDefault
NewFichier.Close
Set NewFichier = Nothing
Set FSO = Nothing
End Sub
Public Property Let PressePapier(Value) 'Ici  place un texte dans le press papier
Const DATAOBJECT_BINDING As String = "new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"
    With CreateObject(DATAOBJECT_BINDING)
        .SetText Value
        .PutInClipboard
    End With
End Property
Public Property Get PressePapier() 'Ici  on récupère le  texte du  press papier
Const DATAOBJECT_BINDING As String = "new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"
    With CreateObject(DATAOBJECT_BINDING)
        .GetFromClipboard
        PressePapier = .GetText
    End With
End Property
 

Pièces jointes

Ce fichier exporte la feuille active en fichier texte en respectant les largeurs de colonnes indiquées.

S'il faut sortir la Macro dans un classeur dédié capable de traiter d'autres feuilles d'autres classeurs, c'est facile à faire.
 

Pièces jointes

Re

dysorthographie
Comme l'indique le [Juste pour infos] et l'emoticone dans mon précédent message, il ne fallait voir qu'un trait d'humour.
Ni plus, ni moins.

NB: Et accessoirement, si un Maciste passait par ici, il est prévenu et ne pourra pas dire: "Bah, la macro ne fonctionne pas"
😉
 
Je n'y es vu que de l'humour rien d'autre!

Maciste est un personnage de fiction créé en 1913 par Gabriele d'Annunzio et Giovanni Pastrone dans le film Cabiria en tant que simple personnage secondaire, mais qui devient ensuite le héros d'une vingtaine de films dans les années 1910-1930 et 1960-1970. Héros solitaire, toujours au service du bien.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…