Claudinedu13
XLDnaute Junior
Bonjour,
Grâce à une solution donnée dans cette discussion
par @patricktoulon , je peux faire des sauvegardes de répertoires/sous répertoires
la copie de mes répertoires et fichiers se fait rapidement (le poids est de 2Go) , mais excel reste bloqué sur "ne répond pas"
J'ai testé sur du petit contenu , ça ne bloque pas
Avez-vous une solution svp ?
Grâce à une solution donnée dans cette discussion
XL 2010 - Comment copier tous les fichiers d'un répertoire et de ses sous-répertoires vers un dossier unique ?
Bonjour Je travaille sous Excel 2010 sous Windows 2010 Entreprise Je cherche une macro vba qui me permettrait d'extraire (copier), tous les fichiers d'un répertoire et de ses sous-répertoires, vers un répertoire unique (nommé par exemple : extract). Je pense que ceci doit être très facile pour...
excel-downloads.com
par @patricktoulon , je peux faire des sauvegardes de répertoires/sous répertoires
la copie de mes répertoires et fichiers se fait rapidement (le poids est de 2Go) , mais excel reste bloqué sur "ne répond pas"
J'ai testé sur du petit contenu , ça ne bloque pas
Avez-vous une solution svp ?
VB:
Sub test()
Dim racine$
racine = "C:\Users\" & VBA.Environ("USERNAME") & "\Desktop\Fournitures"
tableau = recherche_récursive(racine)
'Cells(1, 1).Resize(UBound(tableau) + 1, 1) = Application.Transpose(tableau)
End Sub
'
'
Private Function recherche_récursive(dparent, Optional L As String) As Variant
Dim FSO As Object, Lparent As Object, SubFolder As Object, Ficher
Set FSO = CreateObject("scripting.filesystemobject") ' on declare l'object
' regard sur les fichiers
Set Lparent = FSO.GetFolder(dparent) 'on attribue a l'object.getfolder le dossier demandé 'Scripting.Folder
SourceCopie = "C:\Users\" & VBA.Environ("USERNAME") & "\Desktop\Fournitures"
DestinationCopie = "C:\Users\" & VBA.Environ("USERNAME") & "\Desktop\Save"
'MsgBox GetAttr(Lparent)
If GetAttr(Lparent) <> 22 Then
For Each Ficher In Lparent.Files 'on boucle sur les fichiers qui sont dans ce dossier
L = L & Ficher & vbCrLf
FSO.CopyFolder SourceCopie, DestinationCopie
'!!!!!!!!!!!!!c'est ici qu'il faut faire la copie!!!!!!!!!!!!!
Next
'boucles sur les sous dossiers
For Each SubFolder In Lparent.SubFolders 'on boucle sur les dossiers qui sont dans ce dossiers
L = L & SubFolder.Path & vbCrLf
recherche_récursive SubFolder.Path, L ' on rappelle la fonction avec pour argument le chemin du sous dossier ainsi que l'extension et L qui est déjà peut être remplie
Next SubFolder
End If
recherche_récursive = Split(L, vbCrLf) 'on coupe la liste par les saut de lignes on a maintenant un array la fonction devient cet array
End Function