Importer plusieurs fichier .txt dans la même feuille

Bonjour à tous,

J'ai actuellement une fonction qui me permet d'importer un fichier .txt dans une feuille de calcul via une IHM, mais je peux en importer qu'un dans chaque feuille (si j'en importe il deuxième, il écrasera le premier). Voici mon code :

Fonction:
Public Sub Extraction(fichier As String, _
     NbLignesParFeuille As Long)

    Dim Counter As Double
    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)
            Line Input #1, ContenuLigne
                ActiveSheet.Cells(Counter, 1) = ContenuLigne
            Counter = Counter + 1
        Loop
    Close #1
    Application.ScreenUpdating = True
    MsgBox "Opération effectuée avec succès.", vbInformation, "Import"
End Sub

Bouton parcourir de mon ihm :
Private Sub CommandButton2_Click()
    On Error Resume Next
    RenommerFeuilles
    Worksheets("Import1").Activate
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        .Title = "Sélectionnez un fichier texte"
        .Show
        .Filters.Clear
        .Filters.Add "Text File", "*.txt"
        .FilterIndex = 1
        FormImport.TextBox1.Text = .SelectedItems(1)
            If (.SelectedItems.count = 0) Then
                ButtonImport.Visible = False
            Else
            ButtonImport.Visible = True
            End If
    End With

Bouton import de mon ihm :
Private Sub ButtonImport_Click()                         
              Extraction.Extraction TextBox1.Text, 300000   
End Sub

Je suis sûr que cela doit être faisable en même pas 3 lignes mais je ne vois vraiment pas...

Merci d'avance!

Bonjour

A tester

Public Sub Extraction(fichier As String, _
     NbLignesParFeuille As Long)

    Dim Counter As Double
    Dim i As Integer
    Dim ContenuLigne As String

    Application.ScreenUpdating = False
    Counter = Range("A" & Rows.Count).End(xlUp).row+1
    Open fichier For Input As #1                            'Ouverture du fichier .txt

Bonjour,

J'avais déjà essayé un truc dans le genre, mais ça ne marche pas. Avec ton code, rien du tout s'importe, les feuilles restent blanches.

En faisant comme ça :

Public Sub Extraction(Fichier As String, _
     NbLignesParFeuille As Long)

    Dim Counter As Double
    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)
            Line Input #1, ContenuLigne
                ActiveSheet.Cells(Counter, 1) = ContenuLigne
            Counter = Range("A" & Rows.count).End(xlUp).row + 1
        Loop
    Close #1

    Application.ScreenUpdating = True
    MsgBox "Opération effectuée avec succès.", vbInformation, "Import"
End Sub

Quand j'importe un deuxième fichier, Excel me demande si je veux écraser mes données, si je fais "annuler" ça les importe quand même mais après, impossible de les trier avec ma fonction.

J'ai essayé de faire une variable int pour faire "#int" au lieu de "#1#, en donnant +1 à l'int en fin de boucle, mais ça ne marche pas non plus.

Bonjour,

essaie ainsi

Fonction:
Public Sub Extraction(fichier As String, _
     NbLignesParFeuille As Long)

    Dim Counter As Double
    Dim i As Integer
    Dim ContenuLigne As String

    Application.ScreenUpdating = False
    Counter = cells(rows.count,1).end(xlup).row+1
    Open fichier For Input As #1                            'Ouverture du fichier .txt
       Do While Not EOF(1)
            Line Input #1, ContenuLigne
                ActiveSheet.Cells(Counter, 1) = ContenuLigne
            Counter = Counter + 1
        Loop
    Close #1
    Application.ScreenUpdating = True
    MsgBox "Opération effectuée avec succès.", vbInformation, "Import"
End Sub

Bouton parcourir de mon ihm :
Private Sub CommandButton2_Click()
    On Error Resume Next
    RenommerFeuilles
    Worksheets("Import1").Activate
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        .Title = "Sélectionnez un fichier texte"
        .Show
        .Filters.Clear
        .Filters.Add "Text File", "*.txt"
        .FilterIndex = 1
        FormImport.TextBox1.Text = .SelectedItems(1)
            If (.SelectedItems.count = 0) Then
                ButtonImport.Visible = False
            Else
            ButtonImport.Visible = True
            End If
    End With

Bouton import de mon ihm :
Private Sub ButtonImport_Click()                         
              Extraction.Extraction TextBox1.Text, 300000   
End Sub
 

Bonjour

Blodsvept a écrit :

J'avais déjà essayé un truc dans le genre, mais ça ne marche pas. Avec ton code, rien du tout s'importe, les feuilles restent blanches.

Étonnant mais si tu le dis

A part l'initialisation de la variable Counter je n'ai rien fait d'autre

Donc avant tu n'importais rien non plus

Bonjour,

Même problème, excel me demande si je veux écraser mes données déjà existantes, si je dis non ça me les écrit quand même mais la fonction que j'appelle lorsque je clique sur le bouton d'import de mon IHM ne s'applique sur sur le premier fichier importé.

La fonction en question, si nécessaire :

Sub Convertir()
On Error Resume Next
    Worksheets("Import1").Rows("1:500").RowHeight = 15               'Définit la hauteur des lignes de 1 à 500 =15

    Columns("A:A").Select
    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))
    Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete      'Supprime les lignes vides

Elle me permet de séparer une ligne de texte de type xx;xx;xx;xx;xx;xx;xx;xx;xx;xx par ses semicolons et les transférer dans les colonnes A à J, de supprimer les lignes vides et de redimensionner les rows.

EDIT : Banzai, j'ai copié/collé ton code et ça ne marchait pas, et même en changeant juste le counter ça ne marche pas non plus de toute manière.

Mais, le problème majeur est qu'excel me demande si je veux écraser les données déjà existantes alors que le deuxième fichier que j'importe s'écrit sur les lignes vides en dessous du premier fichier importé...

J'ai fini par trouver, finalement.

Merci quand même de l'aide.

Rechercher des sujets similaires à "importer fichier txt meme feuille"