IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Philippe Tulliez

Comment créer des dossiers et sous-dossier en VBA Excel

Noter ce billet
par , 24/04/2021 à 09h45 (3920 Affichages)
Pour créer un nouveau dossier avec VBA, nous pouvons utiliser l'instruction MkDir

Ainsi, si nous souhaitons créer un sous-dossier nommé "Archive" depuis le dossier où se trouve le classeur contenant le code VBA, nous écrirons
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
MkDir ThisWorkbook.path & "\" & "Archive"
Si le sous-dossier existe déjà, le VBA renverra une erreur. Il y a donc lieu de vérifier au préalable son existence et pour cela nous utiliserons la fonction Dir

Le code ci-dessous, créera le sous-répertoire Archive si celui n'existe pas
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Const SubFolder As String = "Archive"
Dim FullPath As String
FullPath = ThisWorkbook.Path & "\" & SubFolder
If Dir(FullPath, vbDirectory) = "" Then MkDir FullPath

Si nous souhaitons créer plusieurs sous-répertoires à partir du répertoire racine (ThisWorkbook.Path) comme par exemple Archive\Compta\2021 et que les deux premiers sous-répertoires (Archive et Compta) ne sont pas déjà créé, l'instruction ci-dessous renverra une erreur
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
MkDir ThisWorkbook.path & "\Archive\Compta\2021"

L'instruction MkDir permet donc de créer un répertoire mais pas plusieurs en une seule instruction

Pour cela, nous devrons passer par une procédure VBA qui se chargera de créer l'ensemble des sous-répertoires

Code de la procédure CreateSubFolder
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub CreateSubFolder(FullPath As String, RootFolder As String, Optional Delimiter As String = "\")
  ' Création de sous-répertoire d'un réperoire racine (maximum 255)
  ' Philippe Tulliez www.magicoffice.be
  ' Arguments
  '   FullPath     Nom du ou des répertoires à créer. Il y a lieu de séparés par un délimiteur s'il y a plus d'un répertoire
  '   RootFolder   Chemin complet du répertoire racine
  '   [Delimiter]  caractère qui délimite les noms (\ par défaut)
  ' Déclaration
  Dim PathName As String
  Dim Tbl As Variant
  Dim Elem As Byte
  Tbl = Split(FullPath, Delimiter)
  PathName = RootFolder
  For Elem = 0 To UBound(Tbl)
    PathName = PathName & Delimiter & Tbl(Elem)
    If Dir(PathName, vbDirectory) = vbNullString Then MkDir PathName
  Next
End Sub

Exemple de son utilisation
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Sub TestCreateSubFolder()
  Dim SubFolder As String
  SubFolder = "\Archive\Compta\2020"
  CreateSubFolder SubFolder, ThisWorkbook.path
End Sub

Envoyer le billet « Comment créer des dossiers et sous-dossier en VBA Excel » dans le blog Viadeo Envoyer le billet « Comment créer des dossiers et sous-dossier en VBA Excel » dans le blog Twitter Envoyer le billet « Comment créer des dossiers et sous-dossier en VBA Excel » dans le blog Google Envoyer le billet « Comment créer des dossiers et sous-dossier en VBA Excel » dans le blog Facebook Envoyer le billet « Comment créer des dossiers et sous-dossier en VBA Excel » dans le blog Digg Envoyer le billet « Comment créer des dossiers et sous-dossier en VBA Excel » dans le blog Delicious Envoyer le billet « Comment créer des dossiers et sous-dossier en VBA Excel » dans le blog MySpace Envoyer le billet « Comment créer des dossiers et sous-dossier en VBA Excel » dans le blog Yahoo

Mis à jour 04/04/2022 à 06h40 par Philippe Tulliez

Tags: excel, folder, path, vba
Catégories
VBA Excel

Commentaires