Créer des répertoires et sous répertoires avec MKDIR
Chemin est une variable contenant le chemin et le répertoire à créer
If Dir(Chemin, vbDirectory) = "" Then MsgBox "Créer le répertoire" End If
Et puis, tu as ceci
Sub test()
Dim Chemin As String, Commande As String
'Crée d'un seul coup tous les répertoires
'et sous-répertoires s'ils sont absents et
'ne touche à rien s'ils sont présents
Chemin = "c:\AAA\Denis\Daniel\toto\Bozo\"
'S'assurer d'être sur le bon lecteur où les répertoires
'doivent être créé
ChDrive "C"
Commande = Environ("comspec") & " /c mkdir " & Chemin
Shell Commande, 0
End Sub
La ligne
Commande = Environ("comspec") & " /c mkdir " & Chemin peut être remplacée par
Commande = "cmd.exe " & " /c mkdir " & Chemin
Comspec est l'une des "variables d'environnement" que l'on peut utiliser. Ces variables sont définies au niveau de la base registre de Windows.
Dans le cas de Comspec, tu peux la retrouver là dans la base de registre :
KeyLocal machine\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\ComSpec
Et si tu double-cliques sur Comspec, tu verras que la valeur de cette clé est :
%SystemRoot%system32cmd.exe
En français, on peut traduire ceci par la commande Cmd.exe située dans le répertoire System32 du répertoire racine où est situé windows -> donc là :
C:\Windows\System32\Cmd.exe
Si tu préfères, tu pourrais utiliser cette ligne de commande :
Commande = "c:\Windows\System32\Cmd.exe " & " /c mkdir " & Chemin.
Pour ce qui est de la commande Environ(), c'est une méthode qui appartient à la bibliothèque VBA... si on devait y mettre toute la rigueur, on l'appellerait ainsi :
vba.Interaction.Environ()
-> Voir l'aide d'Excel sur Environ.
Et pour finir : cmd.exe : C'est un processus (cmd signifiant Windows Command Prompt)générique de Windows NT/2000/XP ouvrant une console en mode texte permettant delancer des applications à l'aide de commandes.
Et en supplément, tu peux toujours utiliser cette ligne de commande pour ne créer que "LE DERNIER" répertoire manquant au "chemin" ... cependant tu dois prendre note de ne pas terminer le chemin par un "\" comme ceci "c:\AAA\Denis\toto" -> pour créer le répertoire "toto" Shell "command.com /c " & " mkdir " & Chemin
Et pour ceux qui n'auraient pas encore tout compris ...
Si vous tapez Cmd.exe dans la fenêtre "Démarrer/Exécuter"
OU
Si vous appelez "Invite de commande" par le menu Démarrer/Tous les programmes/Accessoires
Vous vous retrouvez dans les 2 cas dans une fenêtre "DOS"
Vous pouvez alors taper directement votre commande pour créer vos répertoires
Mkdir "c:\AAA\toto"
Si un des répertoires de votre chemin a un espace dans son nom, mettre des guillemets comme ceci:
Mkdir c:\AAA\"toto tata"\bozo
En VBA, il faut utiliser les double guillemets comme ceci :
Chemin = "c:\AAA\Denis\""Daniel Gingras""\toto\Bozo\"
Commande = Environ("comspec") & " /c mkdir " & Chemin
Shell Commande, 0La commande Cmd.exe ou l'invite de la commande de la fenêtre "DOS" attend un exécutable -> une commande comme paramètre
Afin de trouver où est situé cette commande (fichier), elle utilise une variable d'environnement
%Path%
où sont définis les principaux répertoires où les exécutables sont situés. En conséquence, lorsqu'on appelle un exécutable à l'aide de la commande, on n'a pas à définir son chemin, la commande se charge de chercher le bon chemin en utilisant que contient %Path%
Pour visualiser ce que %Path% représente sur votre bécane
range("A1") = Environ("Path")renvoie quelque chose comme ceci :
C:\Program Files\Microsoft Office\OFFICE11\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32
`
À partir ce que qui précède, on pourrait lancer des applications comme NotePad , Calculatrice, WordPad ... word... excel
Commande = Environ("comspec") & " /c write " ' WordPad
Commande = "c:\Windows\System32\Cmd.exe /c " & "Write"
Commande = Environ("comspec") & " /c NotePad " ' NotePad
Commande = "c:\Windows\System32\Cmd.exe /c " & "NotePad"
Commande = Environ("comspec") & " /c Calc " ' Calculatrice
Commande = "c:\Windows\System32\Cmd.exe /c " & "Calc"
Commande = Environ("comspec") & " /c WinWord " ' Word
Commande = "c:\Windows\System32\Cmd.exe /c " & "WinWord"
Commande = Environ("comspec") & " /c Excel " ' Excel
Commande = "c:\Windows\System32\Cmd.exe /c " & "Excel"
Une petite dernière qui peut dépanner en bien des occasions...
On peut utiliser la commande XCOPY (DOS) qui contient une gamme complète de paramètre (voir l'aide dans une fenêtre de dos -> en passant
la commande XCOPY /? à l'invite pour copier fichier et sous répertoire d'une destination à l'autre....une des commandes les plus performantes pour la copie... à découvrir !!!
Exemple de commande : Pour copier tous les fichiers et sous-répertoires de c:\AAA\Denis dans le répertoire de destination c:\Michel
/s -> inclut les sous-répertoires
/e -> Inclut les sous-répertoires même vides...
commande = Environ("comspec") & " /c XCOPY C:\AAA\Denis c:\Michel /s/e "
Shell commande, 0Et enfin,
Sub supprime()
'Supprimer tous les fichiers et sous-répertoires
'y compris le répertoire Michel lui-même
commande = Environ("comspec") & " /c RD C:\Michel /S/Q "
Shell commande, 0
End SubLa commande Kill ou RmDir ne fait pas cela.
Auteur : Denis Michon
Mots clefs associés à cette page : répertoire, dossier, dos
- Vous devez vous identifier ou créer un compte pour écrire des commentaires
