Importer un fichier .txt sous forme de tableau

Bonjour à tous,

Actuellement en stage, je dois programmer une macro excel qui compare deux feuilles de calcul pour trouver si des lignes sont présentes dans les deux feuilles. Pour me faciliter la tâche, j'aimerais pouvoir importer mes deux fichiers .txt dans les feuilles de calcul sous forme de tableau.

Voici mon code actuel :

Private Sub CommandButton1_Click()
On Error Resume Next
Worksheets("Import1").Activate                                          'Active la feuille "Import1"
   ButtonImport1.Visible = True                                           'Rend visible le bouton d'import
   With Application.FileDialog(msoFileDialogOpen)            'Ouvre une fenêtre de type "Parcourir..."
        AllowMultiSelect = False
        .Title = "Sélectionnez un fichier .txt"                           'avec pour titre "Sélectionnez un fichier .txt"
        .Show
        .Filters.Clear
        .Filters.Add "Text File", "*.txt"                                      'Ajoute un filtre à la sélection de fichier (ici que des .txt)
        .FilterIndex = 1
        FormImport.TextBoxImport1.Text = .SelectedItems(1)      'Ecrit le nom du fichier sélectionné dans la textbox
        If (.SelectedItems.Count = 0) Then
                ButtonImport1.Visible = False
            Else
            ButtonImport1.Visible = True
            End If
    End With
End Sub

__________________________________________________________________________________________________________________________________________
Sub Extraction(Fichier As String, _
     NbLignesParFeuille As Long, _
     Separateur As Variant)

    Dim Wb As Workbook
    Dim Counter As Double
    Dim Tableau() As String
    Dim i As Integer
    Dim ContenuLigne As String

    Application.ScreenUpdating = False

    Counter = 1

    Open Fichier For Input As #1                            'Ouverture du fichier .txt
        Do While Not EOF(1)
            If Counter > NbLignesParFeuille Then
                Wb.Worksheets.Add
                Counter = 1
            End If

            Line Input #1, ContenuLigne                     'découpe la chaine en fonction des espaces " "
                                                            'le résultat de la fonction Split est stocké dans un tableau

            Tableau = Split(ContenuLigne, Separateur)

            For i = 0 To UBound(Tableau)                    'boucle sur le tableau pour extraire les données
                ActiveSheet.Cells(Counter, i + 1) = Tableau(i)

            Next i

            Counter = Counter + 1

        Loop
    Close #1

    Application.ScreenUpdating = True
    MsgBox "Opération effectuée avec succès.", vbInformation, "Import"
End Sub
__________________________________________________________________________________________________________________________________________
Private Sub ButtonImport1_Click()
    On Error Resume Next                                                        
    Extraction TextBoxImport1.Text, 300000, vbTab                
End Sub

L'import est effectué sans erreur, mais tout le fichier texte est importé dans une seule colonne, ce qui me rend la tâche encore plus difficile pour comparer les deux feuilles, étant donné que cela prend plus ou moins 400 000 lignes.

Les fichiers textes à importer comportent des lignes de données de type varchar et number séparées par des ";". (exemple en PJ)

J'aimerais donc ranger dans une colonne chaque donnée délimitée par les ";".

Si je n'ai pas été très clair, n'hésitez pas à me le faire savoir et à me demander des précisions si nécessaire.

Merci d'avance

151exempleexcel.txt (59.00 Octets)

Voici une macro qui convertir un fichier texte ouvert dans Excel et occupant la seule colonne A (après avoir sélectionné cette colonne):

Sub Convertir()
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1)), _
        TrailingMinusNumbers:=True
End Sub

Bonjour et merci de votre réponse,

Justement, mon problème c'est qu'avec mon code, le fichier texte s'importe seulement dans la colonne A, et j'aimerais qu'il s'importe dans 11 colonnes différentes afin qu'il soit plus lisible et prenne moins de place.

Cordialement

Si ton fichier texte a une extension .csv, Excel devrait l'interpréter en ouverture; Par contre s'il a l'extension .txt Excel l'ouvrira sur une seule colonne.

Mon idée était d'ouvrir le fichier .txt et dès l'ouverture de lancer la macro de conversion.

Merci, votre fonction de conversion fonctionne bien, mais j'ai quelques questions par rapport à celle-ci :

  • Est-il possible de sélectionner toute la colonne A sans devoir le faire manuellement ? Car étant donné le nombre de données, cela prend du temps.
  • Il y a plusieurs lignes vides entre chaque ligne de données, comment pourrais-je rectifier cela ?
  • Serait-il possible de donner à titre à chaque colonne ?

En vous remerciant encore une fois pour votre aide précieuse

Pour les lignes vides, en début de macro

Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Sélectionner toute la colonne A :

Columns("A:A").Selecto

en début de macr

Merci beaucoup à vous c'est parfaitement ce que je voulais !

Bonne continuation !

Cordialement.

Rechercher des sujets similaires à "importer fichier txt forme tableau"