Bonjour,
selon toute probabilité le pb est par là :
Set mywb = ActiveWorkbook
Au moment où se déclenche le workbook_open, le classeur qui contient la macro n'est pas actif, tu dois toujours récupérer le classeur "appelant".
Il faut bien distinguer Activeworkbook qui est le classeur au premier plan et ThisWorkbook (sauf si tu changé son CodeName) qui est le classeur qui contient le code en cours d'exécution.
Du coup une fois que tu utilises ThisWorkbook, tu n'as plus besoin d'intercepter le classeur à l'ouverture, tu peux directement dans le close faire :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call enregsitre
End Sub
Sub enregsitre()
ThisWorkbook.SaveAs "D:\Toto\essai.xlsm"
End Sub
Partager