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

Signaler
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011
-
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011
-
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

12 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
salut,

shell CHEMIN_BAT

++
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
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
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

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^^)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
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
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

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 =(
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

A tien ca a marcher qu'une fois, quand je relance excel ca fonctionne plus, c'est bizarre quand meme ca
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

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??
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
... 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
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

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
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

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.
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

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.
Messages postés
308
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
27 octobre 2011

Aaaaah d'accooooord, j'avais pas compris ca (suis nouveau en VB ^^)

Merci beaucoup pour ces precisions