VBA dans excel pour lancer deux lignes de commandes DOS [Résolu] - VB/VBA/VBS - Programmation
Marsh Posté le 19-12-2006 à 22:16:01
Eh non, l'interpreteur de commande du DOS ne permet pas de traiter plusieurs instructions à la fois. Donc, il faut passer par un fichier .bat intermédiaire.
Marsh Posté le 29-12-2006 à 18:12:31
En fait en faisait un
ChDir ("C:\My Documents\30. yyy\" ) dans mon code vba avant de lancer ma commande shell,
ca m'a fait l'équivelant d'un cd "C:\My Documents\30. yyy\" en DOS, donc plus besoin de ma premiere ligne, donc ca roule pour mon shell
Marsh Posté le 19-04-2007 à 21:43:13
Désolé, je déterre mon propre post, mais finalement j'ai besoin de passer par un .bat intermédiaire dans ma macro excel. J'ai toujours le même problème, à savoir faire un cd c:\trukchmut avant de lancer une autre commande à la ligne suivante.
Je suis toujours aussi nul en programmation, donc je tente l'exemple sur le site de microsoft
Open "TESTFILE" For Output As #1 ' Open file for output. |
Le problème, c'est que dans mon testfile, j'ai un "Hello World" alors que je voudrai juste un hello world (sans le guillement au début et la fin donc ) car DOS ne comprend pas mon CD si j'ai des " en début de ligne...
Est-ce qu'une bonne âme pourrait me diriger vers un moyen d'exporter du texte "brute" dans un fichier texte sans avoir des guillement en début et en fin de ligne ? Ou en d'autre mot, quelqu'un saurait me dire comment faire un fichier .bat ?
Un grand merci
Marsh Posté le 20-04-2007 à 12:22:03
Bonjour,
je te communique ma commande de sauvegarde ( non commentée), qui peut t'aider à faire ta procédure . Elle fonctionne.
Les guillemets sont nécessaires sous dos pour traiter le répertoires contenant des espaces.
Private Sub Commande2_Click()
Open "c:\totoasup.bat" For Output As #1
dossiercourt = "N:\ESSAIdu" & Format(Date, "ddmmyyyy" ) & "a" & Format(Time, "hhmm" )
unespace = " "
quot = """"
cible1 = dossiercourt & "\mes documents"
cible2 = dossiercourt
origine1 = "%homepath%\mes documents"
origine2 = "%homepath%\local settings\application data\identities"
origine3 = "%homepath%\application data\microsoft\address book\*.wab"
Print #1, "md"; unespace; quot; cible1; quot
Print #1, "xcopy"; unespace; quot; origine1; quot; unespace; quot; cible1; quot; " /s"
Print #1, "xcopy"; unespace; quot; origine2; quot; unespace; quot; cible2; quot; " /s /h /r /y /k"
Print #1, "xcopy"; unespace; quot; origine3; quot; unespace; quot; cible2; quot; " /s /h /r /y /k"
Print #1, "pause 'aaa'"
Close #1
ret = Shell("c:\totoasup.bat", 1)
Application.Quit
End sub
Cordialement
Marsh Posté le 20-04-2007 à 16:11:48
Merci beaucoup, il me fallait donc un print #1, ... au lieu d'un write #1, ...
Merci
Marsh Posté le 19-12-2006 à 18:19:36
Salut à tous,
Premier message sur le forum
Je vais essayer d'être clair, j'ai pas trouvé de question similaire à la mienne. J'ai un fichier excel, avec dans une cellule le chemin vers un répertoire, et dans une autre un chemin vers un programme. Ces deux cellules sont modifiables et donc potentiellement différentes chez l'utilisateur.
en C10 j'ai C:\My Documents\30. yyy\
en C12 j'ai c:\program files\xxx22.3\xxx.exe
Je dois en fait passer ces deux lignes avec du texte en plus vers une fenetre DOS depuis excel. Du style
cd "C:\My Documents\30. yyy\"
"c:\program files\xxx22.3\xxx.exe" "C:\My Documents\30. yyy\blabla.gms" wkdir="C:\My Documents\30. yyy\"
J'ai essayé avec un shell, et un retour à la ligne après le cd "C:\My Documents\30. yyy\" Chr(13) ou Chr(10) ou Chr(13) & Chr(10) puis ma deuxième ligne, mais ca n'a pas l'ai de passer en DOS. Pourtant quand je visualise le truc par un MsgBox, c'est exactement ce que je voudrai qui apparaisse en DOS.
Pour le moment, je me dis que je passe mes deux lignes vers un fichier texte, que je renomme en .bat, et je lance le .bat depuis mon code vba. Ca à l'air de fonctionner, mais le fait de créer un fichier supplémentaire ne m'excite pas trop. Est-ce qu'il y aurait moyen de lancer les deux lignes de commande DOS directement depuis un code vba pour excel ?
Evidement dans le code final, je n'aurais pas "C:\My Documents\30. yyy\" coder en dur mais une référence à la cellule où le chemin se trouve...
Merci pour toute aide éventuelle
Message édité par stresslab le 20-04-2007 à 16:12:11