Problème lié à l'utilisation de Shell dans une macro
Bonjour à tous !
Je rencontre un problème depuis plusieurs jours, et c'est à m'en arracher les cheveux !
J'ai besoin, sous vba, de lancer un exe qui vient lire des données d'entrée dans un fichier qu'on appellera IN et écrire des résultats dans un fichier OUT.
Pour ce faire, j'utilise la routine ShellWait ci-dessous:
Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo))
'', vbHide))''
Do
DoEvents
Sleep 10
GetExitCodeProcess hProcess, RetVal
Loop While RetVal = STILL_ACTIVE
End Sub
Public Sub Main()
Open "D:\Users\xxxxxx\Documents\IN.DAT" For Output As #1
Print #1, "mes inputs"
Close #1
'Exécution
ShellWait ("D:\Users\xxxxxx\Documents\monexe.exe")
End SubJusque là, tout fonctionne quand je lance ma routine.
J'ai maintenant besoin d'utiliser cette routine Main au sein d'une routine plus importante qui vient batcher plusieurs cas à la suite. Voici les opérations que la macro est censée effectuer:
- Ouvrir un second Workbook contenant la liste des mes cas de calcul
- Boucle for sur les cas de calculs
- Quelques petits calculs très simples
- Ecriture du fichier IN
- ShellWait
- Ecriture du fichier OUT
- Une autre série de calculs simples
- Copie des résultats vers le Workbook qui contient la liste des cas de calcul
- Fermeture du second Workbook
Et là, tout fonctionne jusqu'au lancement du ShellWait. Le second Workbook s'ouvre, les calculs se font, le fichier IN s'écrit, l'exe se lance correctement, mais m'informe (ligne de code codée dans l'exe) qu'il n'arrive pas à trouver le fichier IN. Alors que lancer manuellement l'exe fonctionne !
J'ai l'impression qu'il y a un lien étroit entre l'erreur que je rencontre et l'ouverture du second Workbook car j'ai testé plusieurs fois ma routine Main qui fonctionne. Ce n'est que lorsque je passe à la routine plus globale que je rencontre cette erreur
Quelqu'un aurait-il une idée ? Merci d'avance