Import données txt dans Excel avec nombre de colonnes variables

Bonjour a tous,

J'essaye de developper une macro pour extraire des données de fichiers .txt dans un feuille de classeur excel. Mon but est de faire un copier coller identique entre le txt et excel.

Grâce a la vidéo de "Tuto de Rien - Excel VBA : Importer des données depuis un fichiers CSV et TXT" j'ai pu adapter son exemple.

La longeur maximale dans mon fichier est de 23 cellules/données et lorsque j'essaie le code adapté avec un fichier test comportant a chaque ligne les 23 cellules/données, le code fonctionne très bien.

Malheureusement mon fichier txt qui est généré par l'équipement que j'utilise est étrangement fichu et certaines lignes ont moins de 23 entrées. Lorsque la macro arrive sur ces lignes il plante.

J'ai mis en pièce jointe un exemple de fichier qui est généré. Au cas ou, ici le fichier contient les entrées de données pour 4 plaques mais il peut être plus long et aller jusqu'à 10.

Merci de votre aide,

HB

14valeur-abs.txt (12.42 Ko)
Sub ImportCSV()
    Dim dialogBox As FileDialog
    Dim Selectedfile As String
    Set dialogBox = Application.FileDialog(msoFileDialogFilePicker)

    With dialogBox
        .Filters.Add "TXT", "*.txt", 1
        .AllowMultiSelect = False

            If .Show = True Then
            Selectedfile = .SelectedItems(1)
            End If
        Debug.Print Selectedfile
    End With

    If Selectedfile <> "" Then

        Open Selectedfile For Input As #1
            Dim rowNumber As Long
            Dim lineFromfile As String
            Dim lineItems As Variant
            Dim iteration As Integer

            rowNumber = 1

            Do Until EOF(1)
                Line Input #1, lineFromfile
                lineItems = Split(lineFromfile, vbTab)

                For iteration = 0 To 22
                    Cells(rowNumber, iteration + 1) = lineItems(iteration)
                Next
                rowNumber = rowNumber + 1
            Loop

    Close #1
    End If

End Sub

Bonjour,

Je pense qu'il suffit d'adapter la longueur de la boucle for au nombre d'élément par ligne :

Sub ImportCSV()
    Dim dialogBox As FileDialog
    Dim Selectedfile As String
    Set dialogBox = Application.FileDialog(msoFileDialogFilePicker)

    With dialogBox
        .Filters.Add "TXT", "*.txt", 1
        .AllowMultiSelect = False

            If .Show = True Then
            Selectedfile = .SelectedItems(1)
            End If
        Debug.Print Selectedfile
    End With

    If Selectedfile <> "" Then

        Open Selectedfile For Input As #1
            Dim rowNumber As Long
            Dim lineFromfile As String
            Dim lineItems As Variant
            Dim iteration As Integer

            rowNumber = 1

            Do Until EOF(1)
                Line Input #1, lineFromfile
                lineItems = Split(lineFromfile, vbTab)

                For iteration = 0 To UBound(lineItems)
                    Cells(rowNumber, iteration + 1) = lineItems(iteration)
                Next
                rowNumber = rowNumber + 1
            Loop

    Close #1
    End If

End Sub

on est passé à For iteration = 0 To UBound(lineItems).

Cordialement,

Super !!!

Un grand merci et bonne journée !

HB

Rechercher des sujets similaires à "import donnees txt nombre colonnes variables"