Bonsoir,
Je t'ai proposé un système simpliste qui ne correspond sans doute pas à ce que tu as décidé de vouloir faire mais quii a le mérite de fonctionner fiablement sans créer de problèmes par ailleurs.
Il n'y a pas lieu de se focaliser sur un bouton, en soi un bouton n'a aucune importance, ce qui compte c'est la procédure qu'il lance, dont tu estimes qu'elle doit l'être avant fermeture. L'objectif est donc dans tous les cas de passer par cette procédure.
[Si la problématique est autre, je sortirai de la discussion, considérant que cela n'a aucun intérêt. L'intérêt c'est la maîtrise de la fermeture du classeur quand il y a un objectif pour ne le faire qu'à certaines conditions, la question de supprimer la croix ou la rendre inopérante est d'ordre purement esthétique. Cela peut faire un certain plaisir de manipuler des fonctions API, et c'est dans certains cas nécessaires quand il n'y a pas d'autre moyen, mais ne disposant pas de la documentation professionnelle afférante complète, on est réduit à aller à la pêche aux paramètres qui conviennent et l'utilisation se fait dans des conditions plus ou moins précaires dans la mesure où on ne la maîtrise pas pleinement...]
Il existe une procédure qui permet d'intercepter la fermeture du classeur, et c'est là que tu peux intervenir pour y placer le code que tu veux exécuter avant, parce que toute action conduisant à la femeture passera par là.
Evidemment, il faut définir clairement les conditions aboutissant à valider ou non la fermeture. Si ce qui est à faire avant de fermer ne nécessite pas l'intervention de l'utilisateur, la procédure le fait, puis la fermeture intervient. Si l'intervention de l'utilisateur est requise, dans ce cas il convient de pouvoir tester qu'elle a eu lieu conformément à ce qui était attendu, et on ne ferme que si la condition est satisfaite, tant qu'elle ne l'est pas on bloque alors la fermeture.
En ce qui concerne ton code, celui de BeforeClose est totalement à reprendre : tu utilises des paramètres qui ne concernent que Microsoft Forms et qu'Excel ne reconnaît pas, et il ne faut annuler la fermeture que sous condition sans quoi tu t'interdis de fermer ce qui n'est pas le but. La procédure que tu associes au bouton est à déplacer vers BeforeClose, où elle sera opérante (j'espère que tu y mets autre chose qu'un enregistrement du classeur ! car là une simple instruction ThisWorkbook.Save suffisait et tout ce déploiement n'avait pas lieu d'être...), le bouton n'est alors plus là que pour diriger vers la fermeture où tout va se faire.
Cordialement.