Autres Evenements VBA - Fermeture du classeur (Croix grise sur fond jaune) / fermeture de l'application (Croix rouge sur fond blanc)

papat0

XLDnaute Nouveau
Bonjour,

J'aurais besoin de vos lumières sur le ou les évènements VBA sous Excel 2007 correspondant à la fermeture d'un classeur ("Fermer la fenêtre" - Croix grise sur fond jaune) et à la fermeture de l'application ("Fermer" - Croix rouge sur fond blanc).

Je souhaite programmer une macro complémentaire permettant de vérifier, quand l'utilisateur ferme le classeur ou l'application, si le ou les classeurs ouverts ont subi des modifications depuis leurs derniers enregistrements et si toutes les feuilles de ce ou ces classeurs sont protégées. A ce jour, quand l'utilisateur ferme l'application au moyen de la croix rouge (et donc le classeur ouvert), la macro complémentaire (Workbook_BeforeClose) se déclenche. Par contre, quand l'utilisateur ferme le classeur au moyen de la croix grise, la macro complémentaire ne se déclenche pas. J'ai du mal à comprendre pourquoi.

Merci pour toutes vos suggestions

Patrice
 

patricktoulon

XLDnaute Barbatruc
Bonjour
je crois que tu t'es emmêle les pinceaux là
la Before_close est un event déclenché avant fermeture du fichier ,pas une macro complémentaire
tu parles de croix rouge ou grise mais , alors j'ai une idée d’où tu va chercher la rouge mais la grise
incognito pour moi
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Papat, Patrick,
J'ai fait le test de cette PJ sur mon PC ( Win10, XL2007 )
Placée dans Thisworkbook cette macro a bien le même comportement qu'on ferme le fichier ou qu'on ferme l'appli.
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    MsgBox "Fermeture du fichier dès clic sur OK."
End Sub
Pouvez vous tester ?
 

Pièces jointes

  • Fermeture.xlsm
    10.2 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
tu parles de croix rouge ou grise
Je pense que c'est fermeture fichier ou fermeture appli. 😅
1698940770352.png
 

papat0

XLDnaute Nouveau
Merci pour vos réponses.

Je souhaite programmer une macro complémentaire afin que tout classeur ouvert dans Excel soit soumis à une vérification d enregistrement et de protection des onglets.

La croix grise sur fond jaune est celle figurant en haut à droite des classeurs s ouvrant dans Excel. La croix rouge sur fond blanc est celle figurant en haut à droite d Excel.

Je ne sais pas si c est plus clair.

J avais fait le même test que toi sylvanu et effectivement en plaçant ton code dans ma macro complémentaire dans Workbook Before_Close, le message s affiche que le classeur soit fermé en cliquant sur la croix rouge ou la croix jaune.
 

papat0

XLDnaute Nouveau
Pour l affichage d un message, je ne rencontre pas de souci. Par contre quand il s agit de tester si les onglets du fichier sont protégés, de les protéger le cas échéant, de vérifier si le classeur a été modifié depuis le dernier enregistrement ..., la procédure Workbook Before Close se déroule si l on ferme le classeur en fermant l application mais pas en fermant uniquement le classeur
 

patricktoulon

XLDnaute Barbatruc
oui @sylvanu j'avais fini par oublié que les classeurs sur 2007 et W7 sont dans une même fenêtre

cela dit la demande c'est
a la fermeture par la croix rouge ou grise le ou les classeur ai un avertissement si il y a eu modif

là je pige pas puisque c'est déjà le cas en natif

de plus et la c'est le pompon
la demande supplémentaire a veiller a ce que toute les feuilles soient protégées
si donc si dans l’éventualité ou une feuille aurait été déprotégée il est évident qu'il y a eu modif donc avertissement en natif

bref ;
soit la demande n'est pas exprimée correctement
soit notre ami @papa0 cherche a inventer ce qui existe déjà
 

papat0

XLDnaute Nouveau
Patrick a raison, j ai été trop approximatif dans ma demande.

Voici quelques éléments complémentaires :
_ les classeurs susceptibles d être ouverts comportent un ou plusieurs onglets. Chacun de ces onglets est susceptible de contenir des cellules verrouillées ou non verrouillées
_ Je souhaite uniquement vérifier si les cellules verrouillées des différents onglets sont protégées et si il y a eu ou non modification sans enregistrement postérieur des cellules non verrouillées des différents onglets
_ a la fermeture du ou des classeurs , je souhaite que les différents onglets soient protégés+ enregistrement (obligatoire) ou si les onglets sont déjà protégés mais qu il y a eu modification des cellules non verrouillées, je souhaite que l utilisateur ait le choix de procéder à l enregistrement ou non de ces modifications.

J espère que c est plus clair
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
la procédure Workbook Before Close se déroule si l on ferme le classeur en fermant l application mais pas en fermant uniquement le classeur
C'est ça que je ne comprends pas.
Le comportement de cette procédure est le même qu'on ferme le classeur ou l'appli. Qu'il y ait eu des modifs ou non avant le dernier enregistrement.
Donc si l'ensemble des vérifications se font dans cette procédure, je ne vois pas dans quel cas cela pose problème.
 

papat0

XLDnaute Nouveau
Merci pour ton idée Patrick, je vais essayer cette procédure.
Sylvanu, je t'ai dit une bêtise, l'affichage d'une simple MsgBox dont la ligne de code est placée dans Workbook Before_Close d'un fichier de macro complémentaire se produit si le classeur est fermé par fermeture de l'application mais ne se produit pas si le classeur est fermé par fermeture du seul classeur. Peut être que l'utilisation de Before_Save permettra de contourner cette bizarrerie ? Peut-être que mon installation d'Excel 2007 a un souci ?
 

papat0

XLDnaute Nouveau
Malgré mes recherches et mes modifications, la procédure BeforeClose ne se déclenche que si le classeur est fermé par un clic sur la croix rouge qui ferme l'application. Un clic sur la croix blanche qui ferme le classeur ne déclenche pas la procédure. Je n'y comprends rien !
 

Discussions similaires

Statistiques des forums

Discussions
315 127
Messages
2 116 522
Membres
112 766
dernier inscrit
Ptitlouis