Import de données sur excel

Résolu
Bonjour,

Je cherche à importer un fichier EDI dans Excel, mon problème est que l'ensemble du fichier tient sur une ligne sans retour à la ligne. Je ne peux pas lui indiquer un séparateur car je dépasse les limites du nombre de colonnes.
Est-il possible avec vba d'indiquer qu'à chaque séparateur les données doivent être renvoyées sur une nouvelle ligne ?
Par exemple un fichier :
Jean;Jacques;Paul;Bernard;.... avec plus de 256 prénoms. séparateur ";" pour faire simple
Je voudrais le convertir sous la forme :
Jean
Jacques
Paul
Bernard

Merci de votre aide

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    voici un vba à coller dans un module
    Sub SplitFichierEDIT()
    Dim objFSO, objEDI
    Dim Ligne, Champ, RangChamp, NewLigne
    Dim FichierExcel, Feuille
    
    Const ForReading = 1
    Const ForWriting = 2
    
    'Définition du fichier EDI
    Set objFSO = CreateObject("Scripting.filesystemobject")
    Set objEDI = objFSO.opentextfile("D:\Data\Fichiers\Test\TestEDI.txt", ForReading)
    
    'Définition du fichier Excel
    Set FichierExcel = ActiveWorkbook
    Set Feuille = ActiveSheet
    
    
    'Lecture des données
    NewLigne = 2
    Do While objEDI.AtEndOfStream <> True
    
        'Lecture de la ligne
        Ligne = objEDI.readline
        Champ = Split(Ligne, ";", -1)
        If Ligne <> "" Then
            For RangChamp = 0 To UBound(Champ, 1)
                Feuille.Range("A" & NewLigne) = Champ(RangChamp)
                NewLigne = NewLigne + 1
            Next
        End If
    Loop
    End Sub


    Il faut changer le chemin du fichier original. La macro écrit dans la feuille active. Il est possible de pointer sur une feuille donnée.

    1. C'est exactement ce qu'il me fallait,

      Merci beaucoup, je vais analyser cette macro pour ma culture vba.