Bonjour sebbbbb,
Tu as écrit : « Y a-t-il un moyen d'éviter que le MsgBox bloque la macro de destruction ? »
et : « mais seulement si la date fatidique est arrivée. »
1) Réponse par rapport à la date fatidique : de toute façon, si la date fatidique n'est
pas atteinte ou dépassée, la sub AutoDestroy() ne se déclenchera pas, donc il ne
pourra pas y avoir d'interférences entre le MsgBox et la sub AutoDestroy().
2) Réponse par rapport au blocage : je vois mal comment le MsgBox pourrait bloquer
la sub AutoDestroy(), puisque cette sub AutoDestroy() se déclenche en premier, dès
l'ouverture du fichier ; cela si l'appel de AutoDestroy() est dans Workbook_Open() ;
ou alors, aurais-tu choisi la méthode plus perverse de mettre l'appel de AutoDestroy()
dans Workbook_BeforeClose() ? 😉 note que dans _BeforeClose() ça sert seulement
si tu veux être méchant et saboter le travail de l'utilisateur, celui du jour d'ouverture
du fichier (et qui sera le jour de la Date d'Expiration ... ou un peu après s'il n'a pas
ouvert le fichier ce jour-là) ; sinon, je ne vois pas l'intérêt de placer l'appel de la sub
AutoDestroy() dans Workbook_BeforeClose() plutôt que dans Workbook_Open() ;
ceci pour dire que tu pourrais déplacer l'appel d'AutoDestroy() du _BeforeClose()
dans le _Open(), et ainsi, il n'y aura plus d'interférence possible avec le MsgBox
puisque AutoDestroy() se déclenche en premier à l'ouverture du fichier, et ferme
le fichier (ou le détruit, selon ton choix ; mais je n'ai jamais essayé de faire une
autodestruction du fichier en cours, et cela est peut-être impossible : Excel et / ou
Windows pourraient râler et avertir qu'il est impossible de supprimer un fichier
en cours d'utilisation ; il te faudrait l'avis d'un autre intervenant que moi, qui
serait plus calé sur ce genre de choses).
3) Si tu as effectivement placé l'appel de la sub AutoDestroy() dans _BeforeClose(),
alors d'évidence, le code de _BeforeClose() ne se déclenchera qu'à la fermeture
du classeur Excel ; donc idem pour la sub AutoDestroy() puisque son appel est
fait dedans ; aussi, là encore, je vois mal comment il peut y avoir une interférence
entre le MsgBox (qui se déclenche lors de la session de travail sur le classeur Excel)
et la sub AutoDestroy() (qui ne se déclenche que suite à la fermeture du classeur) ;
disons que si vraiment ça pose problème (même si je ne vois pas comment), alors
en dernier recours, je te propose de mettre un test devant l'instruction d'affichage
du MsgBox (comme je te l'avais déjà indiqué dans mon post #21) :
If Date < DateExpiration Then MsgBox "..."
Pour cette demande de ton post #31, je n'ai rien d'autre à proposer ; peut-être
qu'un autre intervenant aura une meilleure idée là-dessus ? 🙂
soan