Convertir excel en txt avec le caractère |

Fermé
marckherv Messages postés 87 Date d'inscription mardi 1 août 2017 Statut Membre Dernière intervention 20 juin 2021 - 1 juil. 2019 à 08:46
Patrice33740 Messages postés 8549 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 7 mai 2022 - 1 juil. 2019 à 10:48
Bonjour,

Pourriez-vous me donner la procédure à suivre afin de convertir un fichier excel en txt avec le caractère | comme séparateur de colonne.

En vous remerciant

2 réponses

contrariness Messages postés 17847 Date d'inscription samedi 10 juillet 2010 Statut Membre Dernière intervention 27 septembre 2022 5 874
Modifié le 1 juil. 2019 à 09:08
Perso j'irai au plus rapide :
Export depuis Excel en format texte avec tabulation comme separateur
Et ensuite dans Word, remplacement (global) des tabulations par le caractere | ....
0
marckherv Messages postés 87 Date d'inscription mardi 1 août 2017 Statut Membre Dernière intervention 20 juin 2021
1 juil. 2019 à 09:40
je vais tester votre méthode, merci
0
contrariness Messages postés 17847 Date d'inscription samedi 10 juillet 2010 Statut Membre Dernière intervention 27 septembre 2022 5 874 > marckherv Messages postés 87 Date d'inscription mardi 1 août 2017 Statut Membre Dernière intervention 20 juin 2021
1 juil. 2019 à 09:47
Et bien sur depuis Word.. enregistrement en format "TXT"..!!
Je ne me souviens plus si il redemande le type de codage.. mais il me semble bien que si Word le demande, il montre un exemple du resultat.
0
Patrice33740 Messages postés 8549 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 7 mai 2022 1 756
Modifié le 1 juil. 2019 à 09:26
Bonjour,

La question manque cruellement de précisions sur le but recherché, devinant qu'il pourrait s'agit d'obtenir un pseudo tableau lisible sous éditeur de texte où le caractères | servirait, non pas de séparateur de colonnes, mais de pseudo ligne verticale comme ça se pratiquait il y a 50 ans avant l'apparition des PC.

Cordialement
Patrice
0
marckherv Messages postés 87 Date d'inscription mardi 1 août 2017 Statut Membre Dernière intervention 20 juin 2021
1 juil. 2019 à 09:41
l'objectif est d'obtenir un txt ayant pour séparateur de colonne le caractère |
0
Patrice33740 Messages postés 8549 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 7 mai 2022 1 756 > marckherv Messages postés 87 Date d'inscription mardi 1 août 2017 Statut Membre Dernière intervention 20 juin 2021
Modifié le 1 juil. 2019 à 10:56
Donc la solution de contrariness (que je salue) convient.

Un code VBA pour ceux qui seraient intéressés par un pseudo tableau :
' Par exemple :
––––––––––––––––––––––––––––––––––––––––––––
| Prénom     | Nom       | Sexe | Né_le    |
––––––––––––––––––––––––––––––––––––––––––––
| Rodolphe   | Philippe  | M    | 25/12/57 |
| Christiane | Françoise | F    | 13/01/45 |
| Frédéric   |           | M    | 05/10/69 |
––––––––––––––––––––––––––––––––––––––––––––

Option Explicit
Option Private Module
Public Sub EnregistrerPseudoTableau()
' Enregistre la feuille 1 comme un tableau lisible avec un éditeur de texte.
'
Dim z As Range                    'Zone
Dim r As Range                    'Ligne
Dim c As Range                    'Cellule
Dim t() As Long                   'Tableau largeur de colonne
Dim nomComplet As String          'Nom complet du fichier
Dim str As String                 'Texte du fichier
Dim nbc As Long                   'Nombre de caractères du champ
Dim lgr As Long                   'Longueur du tableau
Dim lgn As String                 'Caractère pour ligne
Const sep As String = " |"        'Séparateur de champs

  lgn = Chr(150)  ' tiret semi-cadratin 'ou Chr(151) tiret cadratin
  With ThisWorkbook
    nomComplet = .Path & "\Fichiers texte\Test xls vers texte ANSI pseudo-tableau.txt"  'à adapter au besoin
    With Worksheets(1)
      Set z = .Range("A1").CurrentRegion  'Tableau à exporter (à adapter)
      ' 1° passe : recherche de la longueur de chaque colonne
      ReDim t(1 To z.Columns.Count)
      For Each r In z.Rows
        For Each c In r.Cells
          nbc = Len(c.Text)
          If nbc > t(c.Column) Then t(c.Column) = nbc
        Next c
      Next r
      ' 2° passe : longueur d'une ligne du tableau
      For Each c In z.Rows(1).Cells
        lgr = lgr + t(c.Column) + 3
      Next c
      lgr = lgr + 1
      ' 3° passe : création du pseudo-tableau
      ' - première ligne
      str = String(lgr, lgn) & vbCrLf
      ' - autres lignes
      For Each r In z.Rows
        str = str & "|"
        For Each c In r.Cells
          nbc = Len(c.Text)
          str = str & " " & c.Text & String(t(c.Column) - nbc, " ") & sep
        Next c
        str = str & vbCrLf
        If r.Row = 1 Then
          ' - ligne de séparation des titres
          str = str & String(lgr, lgn) & vbCrLf
        End If
      Next r
      ' - dernière ligne+
      str = str & String(lgr, lgn) & vbCrLf
    End With
    If Not EstEcritTexte(str, nomComplet) Then
      MsgBox "L'écriture de « " & .Name & " » a échoué."
    End If
  End With

End Sub

Private Function EstEcritTexte(texteASCII As String, nomCompletFichier As String) As Boolean
' Effectivité de l'écriture d'un fichier binaire sous forme de texte (caractères ASCII).
'
Dim n°F As Integer                'numéro du fichier
Dim rèp As Integer                'réponse MsgBox
  
  If Dir(nomCompletFichier) <> "" Then
    If MsgBox("Le fichier " & nomCompletFichier & " existe déjà." & vbCr & vbCr & _
              "Voulez-vous l'écraser ? ", vbExclamation + vbYesNo + vbDefaultButton2) _
              <> vbYes Then Exit Function
    Kill nomCompletFichier
  End If
  n°F = FreeFile
  On Error Resume Next
  Open nomCompletFichier For Binary Access Write As #n°F
  Put #n°F, , texteASCII
  EstEcritTexte = True
  Close #n°F
  On Error GoTo 0

End Function
0