Microsoft 365 Macros dans Worksheet ou dans Workbook ?

Daniel200666

XLDnaute Junior
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
 

Daniel200666

XLDnaute Junior
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
 

Dranreb

XLDnaute Barbatruc
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:

Daniel200666

XLDnaute Junior
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
 

Discussions similaires

Réponses
26
Affichages
378

Statistiques des forums

Discussions
312 207
Messages
2 086 240
Membres
103 162
dernier inscrit
fcfg