Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Répertoire existe-t-il

8 réponses
Avatar
Magic Man
Je veux dans une macro Excel créer un répertoire avec mkdir. Mais qu'elle
est la commande pour vérifier si le répertoire existe déjà.
Genre if exist "c:\toto" then msgbox("répertoire existe")

Merci.

--
Magic Man
magicman@zefo.ca
Le partage de connaissance est une richesse !

8 réponses

Avatar
MichDenis
Si tu promets de ne le dire à personne, il y a ceci :

Pour vérifier l'existence d'un répertoire :

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:AAADenisDanieltotoBozo"

'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
'---------------------------



"Magic Man" a écrit dans le message de news:

Je veux dans une macro Excel créer un répertoire avec mkdir. Mais qu'elle
est la commande pour vérifier si le répertoire existe déjà.
Genre if exist "c:toto" then msgbox("répertoire existe")

Merci.

--
Magic Man

Le partage de connaissance est une richesse !
Avatar
Jacky
Bonjour "MichDenis"

Si tu promets de ne le dire à personne, .....


Intéressé par cette commande,
je promets de ne rien dévoiler sur l'explication de ce code:
Commande = Environ("comspec") & " /c mkdir " & Chemin
particulièrement sur:

("comspec")


--
Par avance , merci
JJ


"MichDenis" a écrit dans le message de news:

Si tu promets de ne le dire à personne, il y a ceci :

Pour vérifier l'existence d'un répertoire :

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:AAADenisDanieltotoBozo"

'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
'---------------------------



"Magic Man" a écrit dans le message de news:

Je veux dans une macro Excel créer un répertoire avec mkdir. Mais qu'elle
est la commande pour vérifier si le répertoire existe déjà.
Genre if exist "c:toto" then msgbox("répertoire existe")

Merci.

--
Magic Man

Le partage de connaissance est une richesse !





Avatar
MichDenis
| Commande = Environ("comspec") & " /c mkdir " & Chemin

Si tu préfères, tu peux la remplacer 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 machineSYSTEMCurrentControlSetControlSession ManagerEnvironmentComSpec
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é dans le répertoire
System32 du répertoire racine où est situé windows -> donc là :
c:WindowsSystem32Cmd.exe

Effectivement, si tu y tiens, tu pourrais utiliser cette ligne de commande :
Commande = "c:WindowsSystem32Cmd.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 de
lancer 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:AAADenistoto" -> pour créer le répertoire "toto"
Shell "command.com /c " & " mkdir " & Chemin

Ouf, je ne suis pas prêt à me commettre dans une autre réponse, si je dois
les expliquer en détail !!!! ;-)




"Jacky" a écrit dans le message de news:
Bonjour "MichDenis"

Si tu promets de ne le dire à personne, .....


Intéressé par cette commande,
je promets de ne rien dévoiler sur l'explication de ce code:
Commande = Environ("comspec") & " /c mkdir " & Chemin
particulièrement sur:

("comspec")


--
Par avance , merci
JJ


"MichDenis" a écrit dans le message de news:

Si tu promets de ne le dire à personne, il y a ceci :

Pour vérifier l'existence d'un répertoire :

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:AAADenisDanieltotoBozo"

'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
'---------------------------



"Magic Man" a écrit dans le message de news:

Je veux dans une macro Excel créer un répertoire avec mkdir. Mais qu'elle
est la commande pour vérifier si le répertoire existe déjà.
Genre if exist "c:toto" then msgbox("répertoire existe")

Merci.

--
Magic Man

Le partage de connaissance est une richesse !





Avatar
Jacky
Re...
Ouf, je ne suis pas prêt à me commettre dans une autre réponse, si je dois
les expliquer en détail !!!! ;-)
Tout à fait inutile ;o)

C'est claire pour moi, et je te remercie pour les explications.
Cela me sera utile, moi qui fait souvent des créations de répertoire.
Jusqu'a ce jour, je les faisais les uns après les autres avec Mkdir.
Merci beaucoup
--
Salutations
JJ


"MichDenis" a écrit dans le message de news:

| Commande = Environ("comspec") & " /c mkdir " & Chemin

Si tu préfères, tu peux la remplacer 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 machineSYSTEMCurrentControlSetControlSession
ManagerEnvironmentComSpec
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é dans le
répertoire
System32 du répertoire racine où est situé windows -> donc là :
c:WindowsSystem32Cmd.exe

Effectivement, si tu y tiens, tu pourrais utiliser cette ligne de commande
:
Commande = "c:WindowsSystem32Cmd.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 de
lancer 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:AAADenistoto" -> pour créer le répertoire "toto"
Shell "command.com /c " & " mkdir " & Chemin

Ouf, je ne suis pas prêt à me commettre dans une autre réponse, si je dois
les expliquer en détail !!!! ;-)




"Jacky" a écrit dans le message de news:

Bonjour "MichDenis"

Si tu promets de ne le dire à personne, .....


Intéressé par cette commande,
je promets de ne rien dévoiler sur l'explication de ce code:
Commande = Environ("comspec") & " /c mkdir " & Chemin
particulièrement sur:

("comspec")


--
Par avance , merci
JJ


"MichDenis" a écrit dans le message de news:

Si tu promets de ne le dire à personne, il y a ceci :

Pour vérifier l'existence d'un répertoire :

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:AAADenisDanieltotoBozo"

'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
'---------------------------



"Magic Man" a écrit dans le message de news:

Je veux dans une macro Excel créer un répertoire avec mkdir. Mais qu'elle
est la commande pour vérifier si le répertoire existe déjà.
Genre if exist "c:toto" then msgbox("répertoire existe")

Merci.

--
Magic Man

Le partage de connaissance est une richesse !











Avatar
MichDenis
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:AAAtoto"

Si un de vos 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:AAADenis""Daniel Gingras""totoBozo"
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, lorsque
l'on interpelle 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")
ça donne quelque chose comme ceci :
C:Program FilesMicrosoft OfficeOFFICE11;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32
`
À partir ce que qui précède, on pourrait lancer des applications comme:
NotePad , Calculatrice, WordPad ... word... excel

Commande = Environ("comspec") & " /c write " ' WordPad
OU
Commande = "c:WindowsSystem32Cmd.exe /c " & "Write"

Commande = Environ("comspec") & " /c NotePad " ' NotePad
OU
Commande = "c:WindowsSystem32Cmd.exe /c " & "NotePad"

Commande = Environ("comspec") & " /c Calc " ' Calculatrice
OU
Commande = "c:WindowsSystem32Cmd.exe /c " & "Calc"

Commande = Environ("comspec") & " /c WinWord " ' Word
OU
Commande = "c:WindowsSystem32Cmd.exe /c " & "WinWord"

Commande = Environ("comspec") & " /c Excel " ' Excel
OU
Commande = "c:WindowsSystem32Cmd.exe /c " & "Excel"

Voilà !
Avatar
MichDenis
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:AAADenis dans le répertoire de destination c:Michel
/s -> inclus les sous-répertoires
/e -> Inclus les sous-répertoires même vides...
Source
destination
commande = Environ("comspec") & " /c XCOPY C:AAADenis c:Michel /s/e "
Shell commande, 0
Avatar
Jacky
Merci de l'info.
Comme quoi les bonnes veilles méthodes dos sont encore d'actualité
;-)

--
Salutations
JJ


"MichDenis" a écrit dans le message de news:

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:AAADenis dans le répertoire de destination c:Michel
/s -> inclus les sous-répertoires
/e -> Inclus les sous-répertoires même vides...

Source
destination
commande = Environ("comspec") & " /c XCOPY C:AAADenis c:Michel /s/e "
Shell commande, 0




Avatar
MichDenis
Et celle là,

La commande Kill ou RmDir ne fait pas cela.

'--------------------------------
Sub TEST1()
'Supprimer tous les fichiers et sous-répertoires
'y compris le répertoire lui-même Michel
commande = Environ("comspec") & " /c RD C:Michel /S/Q "
Shell commande, 0
End Sub
'--------------------------------

Bon j'arrête sinon, je vais devoir te facturer !
;-))