1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| Option Explicit
Const TypeFichier As String = "xls"
Const sNomFeuilleAImporter As String = "Feuil1"
Const sCellData1 As String = "A1"
Private Function ExtraireValeur(sDossier As String, sFichier As String, sFeuille As String, sCellule As String)
Dim Argument As String
sDossier = Replace(sDossier, "'", "''")
sFichier = Replace(sFichier, "'", "''")
Argument = "'" & sDossier & "[" & sFichier & "]" & sFeuille & "'!" & Range(sCellule).Address(, , xlR1C1)
ExtraireValeur = ExecuteExcel4Macro(Argument)
End Function
Private Sub ImportDatas()
Dim iNumeroLigne As Long, i As Long
Dim sNomFichier As String, sDossier As String
Dim NbFichiers As Long
iNumeroLigne = 1
NbFichiers = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To NbFichiers
sNomFichier = Feuil1.Range("A" & i)
sDossier = Left$(sNomFichier, InStrRev(sNomFichier, "\"))
sNomFichier = Right$(sNomFichier, Len(sNomFichier) - Len(sDossier))
With Feuil1
.Cells(iNumeroLigne, 2) = ExtraireValeur(sDossier, sNomFichier, sNomFeuilleAImporter, sCellData1)
End With
iNumeroLigne = iNumeroLigne + 1
Next i
End Sub
Private Sub Liste(sChemin As String, iRow As Long, bSousDossier As Boolean)
Dim FSO As Object, Dossier As Object, sFichier As String
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Dossier = FSO.GetFolder(sChemin)
sFichier = Dir$(sChemin & "\*.*")
Do While Len(sFichier) > 0
If UCase$(sFichier) <> UCase$(ThisWorkbook.Name) And _
UCase$(TypeFichier) = UCase$(FSO.GetExtensionName(sFichier)) Then
Feuil1.Cells(iRow, 1) = sChemin & "\" & sFichier
iRow = iRow + 1
End If
sFichier = Dir$()
Loop
If bSousDossier Then
For Each Dossier In Dossier.SubFolders
Liste Dossier.Path, iRow, True
Next Dossier
End If
Set Dossier = Nothing
Set FSO = Nothing
End Sub
Sub SelDossierRacine()
Dim sChemin As String
sChemin = ThisWorkbook.Path
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = sChemin & "\"
.Title = "Sélectionner un Dossier"
.AllowMultiSelect = False
.ButtonName = "Sélection Dossier"
.Show
If .SelectedItems.Count > 0 Then
DoEvents
Application.StatusBar = ""
Application.ScreenUpdating = False
Feuil1.Cells.Clear
Liste .SelectedItems(1), 1, False
ImportDatas
With Application
.ScreenUpdating = True
.StatusBar = "Terminé"
End With
End If
End With
End Sub |
Partager