Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3022 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Résolu] VBA dans excel pour lancer deux lignes de commandes DOS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] VBA dans excel pour lancer deux lignes de commandes DOS

n°1493696
stresslab
Posté le 19-12-2006 à 18:19:36  profilanswer
 

Salut à tous,  
 
Premier message sur le forum  :sweat:  
 
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  :hello:


Message édité par stresslab le 20-04-2007 à 16:12:11
mood
Publicité
Posté le 19-12-2006 à 18:19:36  profilanswer
 

n°1493808
olivthill
Posté le 19-12-2006 à 22:16:01  profilanswer
 

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.

n°1493917
stresslab
Posté le 20-12-2006 à 09:54:52  profilanswer
 

:cry: merci quand même pour la réponse

n°1497187
stresslab
Posté le 29-12-2006 à 18:12:31  profilanswer
 

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  :)

n°1545435
stresslab
Posté le 19-04-2007 à 21:43:13  profilanswer
 

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.
Write #1, "Hello World"
Close #1    ' Close file  


 
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  :sweat: ) 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  :whistle: ?
 
Un grand merci  

n°1545668
seniorpapo​u
Posté le 20-04-2007 à 12:22:03  profilanswer
 

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


Message édité par seniorpapou le 20-04-2007 à 12:23:11
n°1545855
stresslab
Posté le 20-04-2007 à 16:11:48  profilanswer
 

Merci beaucoup, il me fallait donc un print #1, ... au lieu d'un write #1, ...  
 
Merci  :jap:


Message édité par stresslab le 20-04-2007 à 16:12:35

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Résolu] VBA dans excel pour lancer deux lignes de commandes DOS

 

Sujets relatifs
Site en ligne pour s'autoformer au VBA[Javascript] la fonction charAt(); [résolu]
[Résolu ] [Cobol et JCL] Paramètre d'un programmeLancer une commande unix dans CGI
[RESOLU]Formulaire et tableau: maj tableRécupérer le code VBA d'un formulaire Access
[VBA Excel] Construire formule à partir de variable lettre de colonne[Résolu] [MySQL] Contenu du répertoire data
[Vba Word] action sur les shapes 
Plus de sujets relatifs à : [Résolu] VBA dans excel pour lancer deux lignes de commandes DOS


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR