Rechercher : dans
Par :

[VBA] Commande shell

Dernière réponse le 3 déc 2008 à 15:30:26 wsl1912, le 19 sep 2007 à 11:03:05 
 Signaler ce message aux modérateurs

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
Seules les forces obscures peuvent ouvrir et fermer les portes de Silent Hill

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « [VBA] Commande shell » dans :
[Shell] Accès aux dernières commandes de l'historique VoirLe shell Linux/Unix regorge de fonctionnalités permettant de gagner du temps. Ainsi, il est possible de remonter dans l'historique des dernières commandes grâce aux flèches de navigation en appuyant sur la flèche du haut. Mais il y a moyen...
Comment récupérer le résultat d'une commande dans une variable VoirComment récupérer le résultat d'une commande dans une variable Préambule Syntaxe Exemples Préambule Il est bien souvent nécessaire de récupérer le résultat d'une commande (ou de son code retour) dans une variable afin de pouvoir...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Télécharger CDBF Shell VoirCertains fichiers de votre ordinateur sont dans un format appelé DBF. Ce sont généralement des bases de données issues de DBase. Il y a par exemple les fichiers liés à Outlook Express qui sont dans ce format. CDBF Shell est une application vous...
Systèmes UNIX - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire entre le système...
Linux - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire le système...
Linux - Ordonnancement des taches VoirIntroduction à l'ordonnancement des tâches L'ordonnancement des tâches consiste à exécuter automatiquement une tâche (une application, une commande, ...) à intervalles de temps réguliers ou bien à des moments précis. Généralement ce type de...

1

blux, le 19 sep 2007 à 11:20:56

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......")
A+ Blux

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

2

wsl1912, le 19 sep 2007 à 11:42:04

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...
Seules les forces obscures peuvent ouvrir et fermer les portes de Silent Hill

Répondre à wsl1912

3

blux, le 19 sep 2007 à 16:22:31

Faut peut-être mettre les instructions entre "...
A+ Blux

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

4

wsl1912, le 20 sep 2007 à 11:17:23

Non, si je met les "", VB m'indique une erreur de syntaxe
Seules les forces obscures peuvent ouvrir et fermer les portes de Silent Hill

Répondre à wsl1912

5

blux, le 20 sep 2007 à 11:35:30

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...
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

6

wsl1912, le 20 sep 2007 à 11:48:37

La commande dir fonctionne chez moi également mais pas For
Seules les forces obscures peuvent ouvrir et fermer les port­es de Silent Hill

Répondre à wsl1912

7

blux, le 20 sep 2007 à 12:35:53

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...:-)
A+ Blux

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

8

bfiguig, le 3 déc 2008 à 12:25:35

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

Répondre à bfiguig

9

blux, le 3 déc 2008 à 13:11:14

Mettre des guillemets ?

A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

10

bfiguig, le 3 déc 2008 à 13:38:33

Ou mettre les guillemets ??
merci

Répondre à bfiguig

11

blux, le 3 déc 2008 à 14:08:32

"D:\Fiche BDD\oraclehash.exe" ?

A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

12

bfiguig, le 3 déc 2008 à 14:32:50

Re-bonjour,
voici mon code "D:\Fiche BDD\oraclehash.exe"
je crois que c'esrt un probleme d'espace entre Fiche et BDD (le nom du repertoire) car quand je colle les deux noms ficheBDD je n'ai plus d'erreur
alors je ne sais pas quoi faire pour resoudre ce probleme

cordialement

Répondre à bfiguig

13

blux, le 3 déc 2008 à 14:38:10

Copie ta ligne de code telle qu'elle est frappée, car cela m'étonnerait qu'il n'y ait pas besoin de guillemets ou de parenthèses quelque part...

A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

14

bfiguig, le 3 déc 2008 à 14:51:19

Voici la ligne de code :

Shell "cmd.exe /c" & "D:\Fiche BDD\oraclehash.exe " & USER & " " & mot_de_passe & ">" & "D:\Fiche BDD\" & USER & "_" & iInd & ".txt", vbNormalFocus

voici mon code
je te precise que ca marche quand le nom du repertoire n'est pas composé

voila
merci

Répondre à bfiguig

15

blux, le 3 déc 2008 à 14:58:35

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

A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

17

bfiguig, le 3 déc 2008 à 15:28:32

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

Répondre à bfiguig

19

 blux, le 3 déc 2008 à 15:30:26

je suis sur c'est un probleme d'espace
Je n'ai jamais dit le contraire !

Colle le code pour voir...

A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

16

lermite222, le 3 déc 2008 à 15:09:51

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+ L'expérience instruit plus sûrement que le conseil. (André Gide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

18

blux, le 3 déc 2008 à 15:29:16

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.

A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux