VIVEZ LE
FOOTBALL !

Posez votre question Signaler

[VBA] Commande shell

wsl1912 1176Messages postés 3 novembre 2006Date d'inscription - Dernière réponse le 3 déc. 2008 à 15:30
Bonjour à tous
J'essai de réaliser cette instruction en VBA:
Shell ("CMD.EXE FOR %%I IN (*.txt) DO MOVE D:\rep1\%%I D:\rep2")
seulement, cela ne fonctionne pas, cela n'ouvre qu'une fenêtre dos... pourquoi ?
Merci d'avance
Lire la suite 

[VBA] Commande shell »

19 réponses
Réponse
+0
moins plus
Salut,

Tape cmd /? dans une fenêtre et tu verras tous les paramètres autorisés...

Pas de commandes sur la ligne de commande ! ;-)

As-tu essayé cmd.exe /C "for......")
Ajouter un commentaire
Réponse
+0
moins plus
Dans une fenêtre dos, la commande
 FOR %%I IN (*.txt) DO MOVE D:\rep1\%%I D:\rep2\ 
fonctionne parfaitement mais si je la rajoute dans un programme Visual Basic Application pour Excel, comme ceci:

Shell("CMD.EXE /C FOR %%I IN (*.txt) DO MOVE D:\rep1\%%I D:\rep2\")


cela ne fonctionne pas...
Ajouter un commentaire
Réponse
+0
moins plus
Faut peut-être mettre les instructions entre "...
Ajouter un commentaire
Réponse
+0
moins plus
Non, si je met les "", VB m'indique une erreur de syntaxe
Ajouter un commentaire
Réponse
+0
moins plus
C'est normal, il faut mettre les guillemets avec leur code ascii pour que vb ne grogne pas :
Dim a As String
a = "CMD.EXE /K " & Chr(34) & " dir " & Chr(34)
Shell (a)
Ca marche chez moi...
Ajouter un commentaire
Réponse
+0
moins plus
La commande dir fonctionne chez moi également mais pas For
bluxblux - 3 déc. 2008 à 14:58
C'est normal que ça ne marche pas...

Les guillemets sont là pour séparer les différents de la chaine donnée à shell, il faut les doubler pour le paramètre contenant des espaces, soit avec " soit avec un chr(34).

Le but du jeu est de donner :
cmd.exe /c "d:\fiche BDD\...." et non cmd.exe /c d:\fiche BDD\...

Je l'ai expliqué dans mon message 8...

Shell "cmd.exe /c" & chr(34) & "D:\Fiche BDD\oraclehash.exe "& chr(34) & USER & " " & mot_de_passe & ">" & chr(34) & "D:\Fiche BDD\" & chr(34) & USER & "_" & iInd & ".txt", vbNormalFocus
bfiguig - 3 déc. 2008 à 15:28
j'espere que je te prend pas la tête car j'ai mis le code que tu m'a envoyé et ca ne marche pas
et je repete quand j'ai collé les noms composés du repertoire ca fonctionne
je ne comprend rien
je suis sur c'est un probleme d'espace
merci quand meme du temps que tu as passé pour m'aider
blux- 3 déc. 2008 à 15:30
je suis sur c'est un probleme d'espace
Je n'ai jamais dit le contraire !

Colle le code pour voir...
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour tous,
essaye avec...
& "D:\FicheBDD\oracle~1.exe "& etc..
En dos maximum 8 signes +3 pour l'extension, idem pour les répertoirs. Les espaces sont tous simplement supprimés.
les noms de rép ou de fichier sont numérotés
Exemple:
Christianne.exe = Christ~1.exe
Christian.exe = Christ~2.exe
A+
blux- 3 déc. 2008 à 15:29
Je ne l'utilise pas pour des raisons pratiques, il faut faire un DIR /B sous CMD pour avoir le vrai nom, qui n'est pas forcément ~1 pour des logiciels comme oracle qui crée des tas de sous-rép.
Ajouter un commentaire
Ce document intitulé « [VBA] Commande shell » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?