Déplacer le contenu d’un dossier entier en VBA
Suite à l’article Déplacer un fichier en VBA, voici comment déplacer le contenu d’un dossier source vers un autre dossier. En d’autres termes, vider un dossier et transférer son contenu dans un autre.
Le code
Recopiez la fonction qui suit dans un module standard de votre base de données :
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 |
' --- ' DEPLACEMENT DU CONTENU D'UN DOSSIER ' --- ' Function DeplacerDossier( _ ByVal strDossierSource As String, _ ByVal strDossierCible As String) As Long ' Quelques variables Dim strFichier As String Dim lngTotal As Long ' Vérifier que les dossiers source et cible existent bien strDossierSource = AddBackslash(strDossierSource) strDossierCible = AddBackslash(strDossierCible) If Dir(strDossierSource, vbDirectory) = "" _ Or Dir(strDossierCible, vbDirectory) = "" Then MsgBox "Dossier source ou cible introuvable !", vbExclamation Exit Function End If ' Parcourir tous les fichiers du dossier On Error Resume Next lngTotal = 0 strFichier = Dir(strDossierSource & "*.*", vbNormal) While strFichier <> "" ' Déplacer le fichier Name strDossierSource & strFichier As strDossierCible & strFichier lngTotal = lngTotal + 1 ' Lire le fichier suivant strFichier = Dir Wend DeplacerDossier = lngTotal End Function |
Pour simplifier un peu le passage de paramètres, cette fonction utilise la fonction AddBackslash() également publiée sur le blog. Vous devrez reprendre cette autre fonction pour que tout fonctionne.
Tester
La fonction reçoit 2 chemins : le chemin du dossier à « vider », et le chemin du dossier cible. Elle renvoie en résultat le nombre de fichiers déplacés.
Pour la tester, vous pouvez :
- Faire apparaître la fenêtre Exécution (
Ctrl
+G
). - Taper quelque chose comme :
1 |
? DeplacerDossier("C:\Users\Hervé\Documents\Dossier1", "C:\Users\Hervé\Desktop\Dossier2") |
La fonction proposée ne gère pas les dossiers imbriqués : elle ne déplace que les fichiers situés directement dans le dossier source.