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.
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.
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