Créer des répertoires et sous répertoires avec MKDIR

Comment créer un répertoire en ligne de commande depuis excel ?

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, 0

La 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, 0

Et 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 Sub

La commande Kill ou RmDir ne fait pas cela.

Auteur :

Mots clefs associés à cette page : , ,

Nouveau

1 Nouvelle page ajoutée ce mois-ci dont :

Mises à jour

3 pages modifiées ce mois-ci dont :