Microsoft 365 Macros dans Worksheet ou dans Workbook ?

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Daniel200666

XLDnaute Occasionnel
Bonjour à tous

j'ai un fichier excel que je suis en train de créer mais j'ai deux macros "beforeclose" à mettre en place; et j'ai l'impression qu'il y a une incompatibilité
est-il possible, à votre avis de prévoir
- une macro dans une feuille excel car cette macro ne va concerner que cette feuille
- une seconde macro dans Workbook, car elle doit concerner l'ensemble du classeur
Merci beaucoup de votre aide et bonne journée
Daniel
 
Bonjour.
L'évènement Workbook_BeforeClose ne peut être pris en charge que dans le module ThisWorkbook.
Vous pouvez cependant conditionner selon le nom de la feuille active le traitement qui y est programmé.
bonjour @Dranreb , je comprends mais comment fait-on pour conditionner selon le nom de la feuille; auriez vous un exemple dans une macro de cette condition svp ? Merci
 
Vous pouvez aussi équiper le ThisWorkbook d'une propriété booléenne.
Dans ThisWorkbook :
VB:
Option Explicit
Public FeuilleSpéciale As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   If FeuilleSpéciale Then
' code à exécuter pour la feuille spéciale
   Else
' code à exécuter pour les autres feuilles
      End If
   End Sub
Dans le module de l'objet Worksheet représentant la feuille spéciale :
VB:
Option Explicit
Private Sub Worksheet_Activate()
   ThisWorkbook.FeuilleSpéciale = True
   End Sub
Private Sub Worksheet_Deactivate()
   ThisWorkbook.FeuilleSpéciale = False
   End Sub
Sinon le nom de la feuille active c'est ActiveSheet.Name et le nom de l'objet VBA qui la représente c'est ActiveSheet.CodeName.
 
Dernière édition:
Vous pouvez aussi équiper le ThisWorkbook d'une propriété booléenne.
Dans ThisWorkbook :
VB:
Option Explicit
Public FeuilleSpéciale As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   If FeuilleSpéciale Then
' code à exécuter pour la feuille spéciale
   Else
' code à exécuter pour les autres feuilles
      End If
   End Sub
Dans le module de l'objet Worksheet représentant la feuille spéciale :
VB:
Option Explicit
Private Sub Worksheet_Activate()
   ThisWorkbook.FeuilleSpéciale = True
   End Sub
Private Sub Worksheet_Deactivate()
   ThisWorkbook.FeuilleSpéciale = False
   End Sub
re
merci beaucoup, cela semble clair, je vais regarder et je vous dis
bonne fin de journée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
18
Affichages
333
T
  • Résolu(e)
Microsoft 365 pb effacement macro
Réponses
8
Affichages
577
Themax
T
Réponses
9
Affichages
580
Retour