Bonsoir,
Voilà, je voudrais en apprendre un peu plus sur les procédures évènementielles.
J'ai un classeur avec beaucoup de feuilles et je voulais que lorsqu'on le ferme ou que l'on clique sur Sauvegarder, que toutes les feuilles soient protégées avant d'enregistrer.
Alors, sachant que l'évènement BeforeClose s'exécute avant BeforeSave, j'ai mis ça dans le module ThisWorkbook :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Not Me.Saved Then proteger ' une procedure qui protege toutes les feuilles End If End SubJ'ai pensé qu'en faisant cela,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub Workbook_BeforeClose(Cancel As Boolean) If Not Me.Saved Then Me.Save End If End Sub
- si on clique sur Sauvegarder, les feuilles vont etre protegees (là ça marche pas de problème)
- si on ferme le classeur : BeforeClose s'exécute, ensuite Me.Save va appeler BeforeSave qui va proteger mes feuilles et sauvegarder le classeur, et du coup l'utilisateur ne sera pas invité à le faire (la sauvegarde).
Mais il semble que ça ne marche pas tout à fait comme ça puisque en rouvrant mon classeur les feuilles ne sont pas protégées (Excel ne propose pas d'enregister mais les modif. sont bien enregistrées sauf pour la protection !)
Alors depuis j'ai réglé le problème en faisant ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Not Me.Saved Then proteger ' une procedure qui protege toutes les feuilles End If End SubMais en fait, je voudrais bien comprendre comment ça marche vraiment !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub Workbook_BeforeClose(Cancel As Boolean) If Not Me.Saved Then proteger ' une procedure qui protege toutes les feuilles Me.Save End If End Sub
Parce que le premier raisonnement me semblait tellement logique ! et est ce qu'une instruction dans une procédure évènementielle peut appeler une autre procédure évènementielle (Save dans BeforeClose devrait appeler BeforeSave non ?!)
Merci d'avance...
Partager