[VBA] Commande shell

Fermé
Utilisateur anonyme - 19 sept. 2007 à 11:03
blux Messages postés 26003 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 - 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

7 réponses

blux Messages postés 26003 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289
19 sept. 2007 à 11:20
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......")
1
Utilisateur anonyme
19 sept. 2007 à 11:42
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...
0
blux Messages postés 26003 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289
19 sept. 2007 à 16:22
Faut peut-être mettre les instructions entre "...
0
Utilisateur anonyme
20 sept. 2007 à 11:17
Non, si je met les "", VB m'indique une erreur de syntaxe
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blux Messages postés 26003 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289
20 sept. 2007 à 11:35
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...
0
Utilisateur anonyme
20 sept. 2007 à 11:48
La commande dir fonctionne chez moi également mais pas For
0
blux Messages postés 26003 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289
20 sept. 2007 à 12:35
La commande FOR marche, mais ce sont les arguments que tu as donné qui gênent...

Dans l'aide de CMD, il est dit que certains car. spéciaux doivent être mis entre guillemets : <espace> &()[]{}^=;!'+,`~

Il faut donc préparer une chaîne avec les guillemets aux bons endroits pour contenter VBA et DOS en même temps.

Avec des chr(34) et de nombreux essais, tu devrais t'en sortir...:-)
0
bfiguig > blux Messages postés 26003 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024
3 déc. 2008 à 12:25
bonjour à tous,
j'ai le meme le probleme avec ce code:

Shell cmd.exe /c D:\Fiche BDD\oraclehash.exe
j'ai erreur 53 fichier introuvable
et dans la fenetre dos j'ai ce message :
"'D:\Fiche' n'est pas reconnu en tant que commande interne ou externe, un programmeexecutable ou un fichier de commandes"
le Shell ne supporte pas un nom de repertoire composé de deux noms separer par de l'espace
est ce qu'il y a une solution pour resoudre ce probleme

en fait je lance ce code :Shell cmd.exe /c D:\Fiche BDD\oraclehash.exe
à partir d'une macro dans un fichier excel

merci d'avance
0
blux Messages postés 26003 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289 > bfiguig
3 déc. 2008 à 13:11
Mettre des guillemets ?
0
bfiguig > blux Messages postés 26003 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024
3 déc. 2008 à 13:38
ou mettre les guillemets ??
merci
0
blux Messages postés 26003 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289 > bfiguig
3 déc. 2008 à 14:08
"D:\Fiche BDD\oraclehash.exe" ?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 déc. 2008 à 15:09
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+
0
blux Messages postés 26003 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289
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.
0