Sub test()
Dim racine$, Destinationfolder$
originalPath = "H:\fond d'ecran\"
Destinationfolder = "C:\Users\polux\DeskTop\toto"' le nouveau dossier est sur le bureau pour les tests
liste = listeAndCopyfich_récursive(originalPath, Destinationfolder)
End Sub
'
'
Private Function listeAndCopyfich_récursive(originalPath, Optional newpath As String) As Variant
Dim FSO As Object, Lparent As Object, SubFolder As Object, Fichier,fich$
Set FSO = CreateObject("scripting.filesystemobject") ' on declare l'object
Set Lparent = FSO.GetFolder(originalPath) 'on attribue a l'object.getfolder le dossier demandé 'Scripting.Folder
If GetAttr(Lparent) <> 22 Then
For Each Fichier In Lparent.Files 'on boucle sur les fichiers qui sont dans ce dossier
fich = Mid(Fichier, InStrRev(Fichier, "\") + 1) 'recup le nom dans le chemin
Fichier.Copy newpath & "\" & fich
Next
'boucles sur les sous dossiers
For Each SubFolder In Lparent.SubFolders 'on boucle sur les dossiers qui sont dans ce dossiers
listeAndCopyfich_récursive SubFolder.Path, newpath 'si sub sub dossiers on rappelle la fonction en interne (récursivité)
Next SubFolder
End If
End Function