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 Sub

Jusque 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
- Copie des entrées vers mon Workbook principal

- 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

Up !

Rechercher des sujets similaires à "probleme lie utilisation shell macro"