bonjour
on peu s'amuser a tout faire soi même
libre a vous de laisser le caractere de séparation ou pas
libre a vous d'augmenter la marge
adapter le chemin du fichier bien sur
Sub recordformatCadText()
Dim Mask$, T, tbClenCol, Lig&, C&, TxT$, X&, marge&, tVal$
marge = 1
With Feuil1
T = [A1].Resize(.UsedRange.Rows.Count, .UsedRange.Columns.Count)
ReDim tbClenCol(UBound(T, 2))
'création de la matrice de chaine pour chaque colonne
'les chaines auront le len correspondant a la chaine la plus longue de la colonne
For Lig = 1 To UBound(T)
For C = 1 To UBound(T, 2)
tbClenCol(C) = Application.Max(tbClenCol(C), Len(Trim(T(Lig, C))))
Next
Next
'inscription dans la variable texte
For Lig = 1 To UBound(T)
For C = 1 To UBound(T, 2)
Mask = String(Val(tbClenCol(C)) + marge, " ")
tVal = Replace(Trim(T(Lig, C)), Chr(34), vbNullString)
Mid(Mask, 1, Len(tVal)) = tVal
TxT = TxT & Mask & "|"
Next
TxT = TxT & vbCrLf
Next
End With
'ecriture du fichier text
fichier = ThisWorkbook.Path & "\" & Replace(ThisWorkbook.Name, ".xlsm", ".txt")
X = FreeFile: Open fichier For Output As #X: Print #X, TxT: Close #X
End Sub
resultat