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
| Private Function Importer(FeuilleOrigine As String, Cell_Adress As String, FeuilleVierge As String, Extens As String) As Variant()
'Paramètres :
'FeuilleOrigine = Nom de la feuille qui contient la donnée à extraire (commune à tous les classeurs)
'Cell_Adress = Adresse de la cellule qui contient la donnée à extraire (commune à tous les classeurs)
'FeuilleVierge = une feuille du classeur ou se trouve la macro : cette feuille doit être vide de toutes données
'Extens = extension des classeurs à importer (ex : xls ou xlsx...)
Dim objShell As Object, objFolder As Object
Dim Temp(), i As Long
Dim Chemin As String, fichier As String
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
If objFolder Is Nothing Then
MsgBox "Abandon opérateur", vbCritical, "Annulation"
Else
Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
fichier = Dir(Chemin & "*." & Extens)
Do While Len(fichier) > 0
If fichier <> ThisWorkbook.Name Then
ThisWorkbook.Names.Add "maPlageRienQuaMoi", _
RefersTo:="='" & Chemin & "[" & fichier & "]" & FeuilleOrigine & "'!" & Cell_Adress
With Sheets(FeuilleVierge)
.Range(Cell_Adress) = "=maPlageRienQuaMoi"
ReDim Preserve Temp(i)
Temp(i) = .Range(Cell_Adress).Value
i = i + 1
End With
ThisWorkbook.Names("maPlageRienQuaMoi").Delete
End If
fichier = Dir()
Loop
Importer = Temp
End If
End Function |
Partager