Bonjour à tous,

j'essaie de mettre au point un traitement complet de macros lancées à partir d'un fichier batch.

Lorsque le traitement se lance, la macro est parfaitement executée, mais ensuite, une fois l'enregistrement effectué, la ligne qui vient fermer Excel ne s'execute pas, pire, elle est clairement ignorée
Voici le code simplifié :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Private Sub Workbook_Open()
'instructions
Thisworkbook.Save
Debug.Print "Fin A"
thisworkbook.Application.Quit
Debug.Print "Fin B"
End Sub
Les Fin A et Fin B s'affichait même dans ma fenetre d'execution.

J'ai mis du temps à comprendre l'origine du problème !

Sans avoir d'absolue certitude sur les contraintes, il apparait tout simplement comme non permis que Application.Quit se déclenche directement dans l'évènement Workbook_Open...

Pour "crosser" le système, je suis finalement passé par une macro appelée à partir de Application.OnTime, qui appellera donc la macro 5 secondes plus tard.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Private Sub Workbook_Open()
'instructions
Thisworkbook.Save
Debug.Print "Fin A"
Application.OnTime Now + TimeValue("00:00:05"), "FermetureEnDecale"
Debug.Print "Fin B"
End Sub
avec dans un module
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Public Sub FermetureEnDecale()
Thisworkbook.Application.Quit
End Sub