Lancer un fichier .bat depuis une macro excel [Résolu]

cs_faucheuse 309 Messages postés jeudi 10 janvier 2008Date d'inscription 27 octobre 2011 Dernière intervention - 18 mars 2008 à 10:00 - Dernière réponse : cs_faucheuse 309 Messages postés jeudi 10 janvier 2008Date d'inscription 27 octobre 2011 Dernière intervention
- 18 mars 2008 à 14:14
Bonjours ami(e)s programmeurs et programmeuzes,

bon la question est dans le titre : comment je peux faire pour lancer un fichier BAT depuis une macro ecxel?
En cherchant sur internet j'ai trouvé plusieurs solutions et aucune ne fonctionne =(.

Merci d'avance
Afficher la suite 

12 réponses

Répondre au sujet
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 18 mars 2008 à 10:17
+3
Utile
salut,

shell CHEMIN_BAT

++
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 18 mars 2008 à 11:16
+3
Utile
Private Declare Function 
GetCurrentDirectory
Lib
"kernel32" 
Alias 
"GetCurrentDirectoryA" 
(
ByVal 
nBufferLength 
As Long

ByVal 
lpBuffer
As String
)
As Long


Private Sub 
Form_Paint()


    'KPD-Team
2000


    'URL:
http://www.allapi.net/


    'E-Mail:
KPDTeam@allapi.net

    Dim sSave As String
    'create a buffer
    sSave = String(255, 0)
    'retrieve the current
directory
    GetCurrentDirectory 255, sSave
    MsgBox sSave
End Sub

Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
Private Sub Form_Paint()
    'KPD-Team
2000
    'URL:
http://www.allapi.net/
    'E-Mail:
KPDTeam@allapi.net
    SetCurrentDirectory App.Path
End Sub
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
cs_faucheuse 309 Messages postés jeudi 10 janvier 2008Date d'inscription 27 octobre 2011 Dernière intervention - 18 mars 2008 à 11:30
+3
Utile
OMG!!! J'ai trouvé, la réponse est vraiment, mais alors vraiment très bête, et il m'a fallu une heure au moins pour la trouver : j'ai changer le fichier BAT
J'ai rajouter au debut : cd C:\Documents and Settings\moi\bureau

Merci pour ton aide lol, expliue quand meme ton code, si ca te dérange pas, ca pourra toujours me servir ( ou servir a un autre qui passe par ici^^)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_faucheuse
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 18 mars 2008 à 11:40
+3
Utile
je disais : voir CURDIR
mais c'est en lecture seule et ta demande est de changer le répertoire par défaut

donc les API....
je te montre GetCurrentDirectory juste pour voir mais ce qui intéresse est SetCurrentDirectory pour modifier...

et j'vois pas comme expliquer une seule ligne de code.... on déclare l'API et on l'utilise...

lancer le BAT (par shell), il se met avec le répertoire par défaut.
donc je te proposais d'essayer (par exemple) un
SetCurrentDirectory "C:"
juste avant de lancer le bat, pour voir ce que çà donne....

mais une autre possibilité est simpement de lancer le RUN et pas le BAT
Shell "cmd.exe CHEMIN_COMPLET.bat", vbNormalFocus

là tu auras le répertoire de l'appli (excel) et la fenêtre ne se fermera pas
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
cs_faucheuse 309 Messages postés jeudi 10 janvier 2008Date d'inscription 27 octobre 2011 Dernière intervention - 18 mars 2008 à 10:22
0
Utile
Ok en rajoutant des parenthèses et des guillemets ca marche impec' (moi j'essayer tous les trucs compliqués avec plein d'arguments et tout =(
Commenter la réponse de cs_faucheuse
cs_faucheuse 309 Messages postés jeudi 10 janvier 2008Date d'inscription 27 octobre 2011 Dernière intervention - 18 mars 2008 à 10:30
0
Utile
A tien ca a marcher qu'une fois, quand je relance excel ca fonctionne plus, c'est bizarre quand meme ca
Commenter la réponse de cs_faucheuse
cs_faucheuse 309 Messages postés jeudi 10 janvier 2008Date d'inscription 27 octobre 2011 Dernière intervention - 18 mars 2008 à 10:41
0
Utile
Alors j'ai un nouveau probleme en fait, maintenant le fichier se lance depuis le dossier ou je l'ai mis, mais quand je lui demande de m'ouviri une commande >DOS il l'ouvre dans Mes Documents.
J'ai donc entrer le chemin complet dans le code : Call Shell("C:\moi\bureau\machin.bat")
Et maintenant il maffiche les options de la commande FTP et s'eteint aussito.

Mon fichier.bat contient la ligne : ftp -s:autrefichier.ftp

Quelqu'un saurait comment faire fonctionner cette macro correctment??
Commenter la réponse de cs_faucheuse
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 18 mars 2008 à 10:49
0
Utile
... la macro fonctionne, elle lance le bat.

tu veux en faire quoi? normal que la fenêtre se ferme...
quand au dossier (mes docs), c'est celui par défaut.
voir CURDIR ou les API..

++
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Commenter la réponse de PCPT
cs_faucheuse 309 Messages postés jeudi 10 janvier 2008Date d'inscription 27 octobre 2011 Dernière intervention - 18 mars 2008 à 10:57
0
Utile
En fait ce .bat (comme tu l'aura sans doute compris) lance un fichier ftp contenant un code simple qui connecte l'ordianteur a un serveur FTP et récupère un fichier. Or la il ne fait rien (a part m'afficher les options de FTP.

Au cas ou, le fichier FTP contient :
open 10.0.0.15
name
pass
get machin.txt
close
Commenter la réponse de cs_faucheuse
cs_faucheuse 309 Messages postés jeudi 10 janvier 2008Date d'inscription 27 octobre 2011 Dernière intervention - 18 mars 2008 à 11:08
0
Utile
D'ailleurs comment est ce qu'on fait pour qu'il ne lance pas le fichier BAT dans Mes Documents? ca reglerait peut etre tout.
Commenter la réponse de cs_faucheuse
cs_faucheuse 309 Messages postés jeudi 10 janvier 2008Date d'inscription 27 octobre 2011 Dernière intervention - 18 mars 2008 à 11:24
0
Utile
Oula oula, comprend pas tout, tu pourrais expliquer stp?
Je pense comprendre un peu(dis moi si je me trompe), tu créer deux fonctions : GetCurrentDirectory et SetCurrentDirectory, attachés tout les deux à la librairie Kernel32, ensuite je comprend pas ce qu'il se passe.
Commenter la réponse de cs_faucheuse
cs_faucheuse 309 Messages postés jeudi 10 janvier 2008Date d'inscription 27 octobre 2011 Dernière intervention - 18 mars 2008 à 14:14
0
Utile
Aaaaah d'accooooord, j'avais pas compris ca (suis nouveau en VB ^^)

Merci beaucoup pour ces precisions
Commenter la réponse de cs_faucheuse

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.