Sub ImporterDonneesTxtAvecDialogue()
Dim MonDossier As String
Dim MonFichier As String
Dim CheminComplet As String
Dim MonWb As Workbook
Dim DerniereLigne As Long
Dim i As Long
' Affiche une boîte de dialogue pour sélectionner le dossier
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Sélectionnez le dossier contenant les fichiers texte"
If .Show = -1 Then
MonDossier = .SelectedItems(1) & "\"
Else
MsgBox "Aucun dossier sélectionné. L'opération a été annulée."
Exit Sub
End If
End With
' Définissez la première ligne d'Excel
DerniereLigne = 2
' Activez l'application Excel pour éviter que les messages d'alerte ne s'affichent
Application.ScreenUpdating = False
' Parcourez tous les fichiers texte dans le dossier spécifié
MonFichier = Dir(MonDossier & "*.txt")
Do While MonFichier <> ""
CheminComplet = MonDossier & MonFichier
' Ouvrez le fichier texte
Workbooks.OpenText Filename:=CheminComplet, Origin:=437, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), Array(18, 2), Array(38, 1), Array(58, 1), Array(76, 2), Array(96, 2), Array(118, 2), Array(136, 1), Array(154, 2), Array(172, 2), Array(192, 1), Array(212, 2), Array(230, 2), Array(250, 2), Array(270, 1), Array(288, 2), Array(306, 2), Array(326, 2), Array(346, 2), Array(366, 2))
' Copiez les données du fichier texte dans la feuille Excel
Set MonWb = Workbooks(MonFichier)
ThisWorkbook.Sheets(2).Cells(DerniereLigne, 1).Value2 = MonWb.Sheets(1).Cells(18, 1).Resize(1, 9).Value2
ThisWorkbook.Sheets(2).Cells(DerniereLigne, 2).Value2 = MonWb.Sheets(1).Cells(16, 1).Resize(1, 50).Value2
ThisWorkbook.Sheets(2).Cells(DerniereLigne, 3).Value2 = MonWb.Sheets(1).Cells(21, 1).Resize(1, 7).Value2
ThisWorkbook.Sheets(2).Cells(DerniereLigne, 4).Value2 = MonWb.Sheets(1).Cells(34, 1).Resize(1, 50).Value2
ThisWorkbook.Sheets(2).Cells(DerniereLigne, 5).Value2 = MonWb.Sheets(1).Cells(38, 1).Resize(1, 5).Value2
ThisWorkbook.Sheets(2).Cells(DerniereLigne, 6).Value2 = MonWb.Sheets(1).Cells(45, 1).Resize(1, 3).Value2
ThisWorkbook.Sheets(2).Cells(DerniereLigne, 7).Value2 = MonWb.Sheets(1).Cells(53, 1).Resize(1, 10).Value2
' Fermez le fichier texte
MonWb.Close SaveChanges:=False
' Passez à la ligne suivante dans Excel
DerniereLigne = DerniereLigne + 1
' Passez au fichier texte suivant
MonFichier = Dir
Loop
' Réactivez la mise à jour de l'application Excel
Application.ScreenUpdating = True
MsgBox "Importation terminée!"
End Sub