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
| Option Explicit
Const TypeFichier As String = "xls"
Const sNomFeuilleAImporter As String = "Feuil1"
Const sCellData As String = "D13"
Private Function ExtraireValeur(Dossier As String, Fichier As String, Feuille As String, Cellule As String)
Dim Argument As String
Argument = "'" & Dossier & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Address(, , xlR1C1)
ExtraireValeur = ExecuteExcel4Macro(Argument)
End Function
Private Sub ImportDatas()
Dim i As Long
Dim sNomFichier As String, sDossier As String
Dim NbFichiers As Long
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(i, 2) = ExtraireValeur(sDossier, sNomFichier, sNomFeuilleAImporter, sCellData)
.Cells(i, 2).NumberFormat = "#,##0.00 $"
End With
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