Je voudrais savoir comment ma macro peut détecter la fin d'éxécution d'un programme externe .exe?
je lance cet .exe depuis ma macro par la commande shell, il génére un fichier résultat, et la macro doit attendre ce fichier avant de poursuivre son éxécution. Cet exe est une fenêtre DOS.
je me débrouille en faisant un sleep de la macro pendant un certain nombre de seconde mais c'est pas très propre...
j'ai pensé détecter le nom de la command prompt et voir quand celle ci disparait des fenêtres active mais je sais pas comment faire?
Merci de votre aide!!!
A voir également:
Vba attendre fin execution
Vba shell attendre fin execution - Meilleures réponses
Vba attendre fin actualisation - Meilleures réponses
c'est du visual basic pour excel....
t'as une idée?
j'ai fais un tour sur le forum et on parle de shellexecuteex ou waitforsingleobject mais je suis perdu!! aide moi stp!!
La fonction shell renvoie le task id du prog que tu lances, personellement j'ai jamais utilisé, (je pense que c'est pas la handle) mais tu devrais pouvoir trouver une fonction utilisant ce paramètre, et lorsque la fonction te renvoie 0 ou une erreur, c'est que le prog est terminé... Cherche du coté de ce task id...
dim h as double
h=shell(...)
while LaFonctionATrouver(h)<>0
doevents
wend
ok je viens de faire ce que tu m'as dis mais il me met un message d'erreur comme quoi "le type défini par l'utilisateur est non défini ". il met l'erreu sur les 3 premiere lignes (dim Proc as Process_information,etc...) où je déclare les variables?
j'ai copié les lignes de code de modApi.bas dans un nouveau module module, j'ai bien remplacé Shell "D:\TBRG\TBRG.exe par ExecCmd "D:\TBRG\TBRG de la macro, et j'obtient le message "objet requis" sur la ligne if createprocessA de la fonction ExecCmd?
Désolé de rien comprendre...
merci de ta patience...
OK ya plus d'erreu mais l'éxécutable ne se lance pas, j'ai essayé de faire un pas à pas et il ne rentre pas dans la boucle if createprocess, il passe directement à else?
le ExecCmd devrait lancer le prog non?