Pour mon travail, je souhaiterai automatiser l’import de deux fichiers textes (qu’on choisirait grâce à une boite de dialogue) dans deux onglets différents sous excel.
J’ai trouvé des procédures sur vos forums cependant deux problèmes persistent :
- je n’arrive pas à faire apparaître une boite de dialogue pour choisir mon fichier.
- mon fichier txt est délimité par des | et je n’arrive pas à paramétrer cela dans ma macro. Sinon, si j’importe mes données avec l’assistant, cela marche très bien.
Auriez-vous la solution svp ?
P.S : je suis relativement novice en VBA.
Merci d’avance pour votre aide.
Elly
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour,
Essaie ceci.
Ceci est disponible de mémoire pour les versions Excel 2003 et plus récentes. Application.FileDialog(msoFileDialogFilePicker)
Dans la boîte de dialogue, tu peux sélectionner plusieurs fichiers, chacun sera importé dans un nouvelle onglet dans le classeur. L'onglet aura le nom du fichier.
'------------------------------------------------- Sub Import() Dim Fd As FileDialog, Elt As Variant Dim A As Integer, T As Variant Dim Sep As String Dim WholeLine As String, FName As String Dim Répertoire As String, Sh As Worksheet
'Séparateur du fichier texte Sep = "|"
'Ouverture sur le répertoire par défaut... Répertoire = "c:" & Environ("Username") & "Documents"
Set Fd = Application.FileDialog(msoFileDialogFilePicker) With Fd .AllowMultiSelect = True .ButtonName = "Importer" .InitialFileName = Répertoire .Filters.Add "Fichier texte", "*.txt; *.txt", 1 If .Show = -1 Then 'Pour chaque fichiers sélectionnées For Each Elt In .SelectedItems 'Ajout d'une nouvelle feuille Set Sh = ThisWorkbook.Worksheets.Add With Sh Sh.Name = Split(Elt, "")(UBound(Split(Elt, ""))) FName = Chemin & Elt Open FName For Input Access Read As #1 A = 1 While Not EOF(1) Line Input #1, WholeLine T = Split(WholeLine, Sep) .Range("A" & A).Resize(, UBound(T) + 1) = T A = A + 1 Wend Close #1 End With Next Elt End If End With Set Fd = Nothing End Sub '-------------------------------------------------
Ceci est disponible de mémoire pour les versions
Excel 2003 et plus récentes.
Application.FileDialog(msoFileDialogFilePicker)
Dans la boîte de dialogue, tu peux sélectionner plusieurs
fichiers, chacun sera importé dans un nouvelle onglet
dans le classeur. L'onglet aura le nom du fichier.
'-------------------------------------------------
Sub Import()
Dim Fd As FileDialog, Elt As Variant
Dim A As Integer, T As Variant
Dim Sep As String
Dim WholeLine As String, FName As String
Dim Répertoire As String, Sh As Worksheet
'Séparateur du fichier texte
Sep = "|"
'Ouverture sur le répertoire par défaut...
Répertoire = "c:" & Environ("Username") & "Documents"
Set Fd = Application.FileDialog(msoFileDialogFilePicker)
With Fd
.AllowMultiSelect = True
.ButtonName = "Importer"
.InitialFileName = Répertoire
.Filters.Add "Fichier texte", "*.txt; *.txt", 1
If .Show = -1 Then
'Pour chaque fichiers sélectionnées
For Each Elt In .SelectedItems
'Ajout d'une nouvelle feuille
Set Sh = ThisWorkbook.Worksheets.Add
With Sh
Sh.Name = Split(Elt, "")(UBound(Split(Elt, "")))
FName = Chemin & Elt
Open FName For Input Access Read As #1
A = 1
While Not EOF(1)
Line Input #1, WholeLine
T = Split(WholeLine, Sep)
.Range("A" & A).Resize(, UBound(T) + 1) = T
A = A + 1
Wend
Close #1
End With
Next Elt
End If
End With
Set Fd = Nothing
End Sub
'-------------------------------------------------
Ceci est disponible de mémoire pour les versions Excel 2003 et plus récentes. Application.FileDialog(msoFileDialogFilePicker)
Dans la boîte de dialogue, tu peux sélectionner plusieurs fichiers, chacun sera importé dans un nouvelle onglet dans le classeur. L'onglet aura le nom du fichier.
'------------------------------------------------- Sub Import() Dim Fd As FileDialog, Elt As Variant Dim A As Integer, T As Variant Dim Sep As String Dim WholeLine As String, FName As String Dim Répertoire As String, Sh As Worksheet
'Séparateur du fichier texte Sep = "|"
'Ouverture sur le répertoire par défaut... Répertoire = "c:" & Environ("Username") & "Documents"
Set Fd = Application.FileDialog(msoFileDialogFilePicker) With Fd .AllowMultiSelect = True .ButtonName = "Importer" .InitialFileName = Répertoire .Filters.Add "Fichier texte", "*.txt; *.txt", 1 If .Show = -1 Then 'Pour chaque fichiers sélectionnées For Each Elt In .SelectedItems 'Ajout d'une nouvelle feuille Set Sh = ThisWorkbook.Worksheets.Add With Sh Sh.Name = Split(Elt, "")(UBound(Split(Elt, ""))) FName = Chemin & Elt Open FName For Input Access Read As #1 A = 1 While Not EOF(1) Line Input #1, WholeLine T = Split(WholeLine, Sep) .Range("A" & A).Resize(, UBound(T) + 1) = T A = A + 1 Wend Close #1 End With Next Elt End If End With Set Fd = Nothing End Sub '-------------------------------------------------