Evénements de classeur
(WorkBook)
|
|||
Nom d'événement
|
Se passe quand
|
Paramètres
|
|
ACTIVATION / DESACTIVATION (Voir également plus bas Workbook_ SheetDeactivate et |
Workbook_Activate() | On clique dans une cellule du classeur ou se trouve cette procédure. Elle ne se déclenche pas si on était dans un autre onglet du même classeur, ni si on était dans un autre programme | |
Workbook_Deactivate() | Lorsqu'on clique sur un autre classeur (Donc pas sur un autre onglet du même classeur, ni sur une autre application) | ||
Workbook_WindowActivate(ByVal Wn As Window) | Je ne vois pas la différence avec Workbook_Activate | ByVal
Wn As Window Représente la fenêtre dans laquelle on vient de cliquer. Comme on vient de l'activer, on n'a pas encore eu le temps de se positionner dans une cellule particulière. Aussi l'instruction : MsgBox Wn.ActiveCell.AddressLocal Va donner l'adresse de la cellule qui était active la denière fois qu'on était dans cette fenêtre, et pas la cellule précisément dans laquelle on clique |
|
Workbook_WindowDeactivate(ByVal Wn As Window) | Je ne vois pas la différence avec Workbook_Deactivate | ByVal
Wn As Window Représente la fenêtre qu'on vient de quitter. l'instruction : MsgBox Wn.ActiveCell.AddressLocal Renvoie l'adresse de la dernière cellule qui était active juste avant qu'on quitte la fenêtre. |
|
SEULEMENT DANS LES MACROS COMPLE-MENTAIRES XLA
|
Workbook_AddinInstall() |
Pour comprendre cette procédure il faut parfaitement comprendre
le fonctionnement des Macros Complémentaires (XLA). |
|
Workbook_AddinUninstall() | S'exécute au même instant que AddinInstall, mais lorsqu'on clique sur OK après avoir retiré la coche. | ||
Workbook_Open() |
Lorsqu'on ouvre un classeur, c'est la première procédure qui s'exécute avant les autres (Activate, etc...) Il existe une autre façon d'exécuter du code automatiquement à l'ouverture du classeur : Il suffit de mettre dans n'importe quel module une procédure dont le nom est Auto_Open. Cet Auto_Open s'exécutera après Workbook_Open |
||
Workbook_BeforeClose(Cancel As Boolean) |
Intervient avant de fermer le classeur de quelconque façon. Excel ne fermera pas le classeur tant que la procédure n'est pas terminée. Il existe une autre façon d'exécuter du code automatiquement à l'ouverture du classeur : Il suffit de mettre dans n'importe quel module une procédure dont le nom est Auto_Close. Cet Auto_Close s'exécutera après Workbook_BeforeClose |
Cancel |
|
Workbook_BeforePrint(Cancel As Boolean) | Intervient avant l'envoi à l'imprimante. L'imprimante n'imprime rien tant que cette procédure n'est pas terminée | Cancel Si on met dans la procédure Cancel = True Alors, il ne sera pas possible d'imprimer le classeur |
|
Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) |
Intervient avant de sauvegarder (Fichier Enregistrer, Enregistrer sous
- Avant l'affichage de la boîte de dialogue, lors de CTRL-S ou de
clic sur l'icône disquette). |
SaveAsUI Cancel |
|
Workbook_NewSheet(ByVal Sh As Object) | Lorsqu'on crée un nouvel onglet | ByVal
Sh As Object Le type est un objet générique et pas un Sheet, car il peut s'agir d'une feuille de calcul ou d'un graphique Comme c'est un objet générique, quand on écrit MsgBox Sh. Il n'y a pas d'aide à la saisie, car selon que c'est une feuille ou un graphique, les méthodes et les propriétés diffèrent. On peut toutefois écrire MsgBox Sh.Type Pour avoir un numéro en retour qui dit quel genre d'objet c'est (Voir l'exemple plus bas dans cette page) |
|
Workbook_WindowResize(ByVal Wn As Window) |
On redimensionne la fenêtre qui contient le classeur, ou qu'on
la mette en plein écran, ou qu'on la rétrécisse,
mais pas quand on ferme classeur (c'est WorkBook_BeforeClose dans ce cas.) |
ByVal Wn As
Window Représente la fenêtre qu'on vient de redimensionner. Window est un objet qui comporte de nombreuses propriétés, et par ce biais, on peut connaître, entre autre, la taille de la fenêtre, si elle est masquée, si elle est réduite au minimum, etc. |
|
A partir d'ici, tous les événements ont une équivalence dans Sheet : | |||
Workbook_SheetActivate(ByVal Sh As Object) | Lorsqu'on clique sur un autre onglet du même classeur, quel qu'il soit. |
On constate que pour tous les événements
qui suivent, qui ont donc une équivalence avec les Sheets, nous
avons chaque fois le paramètre
ByVal Sh As Object qui,
à mon avis, précise s'il s'agit d'une feuille de calcul
ou d'un graphique... |
|
Workbook_SheetDeactivate(ByVal Sh As Object) | Lorsqu'on change d'onglet dans le même classeur (Donc pas lorsqu'on clique sur un autre classeur, ou une autre application) | ||
Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) | Survient dès qu'on clique 2 fois dans une cellule (pour
l'éditer par exemple). Cet événement survient juste après WorkSheet_BeforeDoubleClick |
||
Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) | Survient dès qu'on clique dans une cellule
ou une plage de cellules avec le bouton droit de la souris (pour faire apparaître
le menu contextuel). Cet événement survient juste après Worksheet_BeforeRightClick |
||
Workbook_SheetCalculate(ByVal Sh As Object) | Dès qu'on demande un recalcul de la feuille (F9). Cet
événement ne survient jamais si le mode de calcul est automatique
(Outils/Options/Calcul/Mode de calcul) Cet événement survient juste avant Worksheet_Calculate |
||
Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) | Dès qu'on crée, modifie ou efface le contenu
d'une cellule. Cet événement survient juste avant Worksheet_Change |
||
Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) | Lorsqu'on clique sur un lien hypertexte, par exemple un service Web, on quitte automatiquement Excel pour aller dans le navigateur. Cette procédure s'exécutera juste après Worksheet_FollowHyperlink | ||
Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) |
Dès qu'on change la sélection : Déplacement avec
la souris, le clavier, Enter, sélection d'une ligne, d'une colonne,
de tout le tableau. |
Private Sub Workbook_Activate()
MsgBox "Workbook_Activate()"
End Sub
Private Sub Workbook_AddinInstall()
' Cet exemple montre comment ajouter un contrôle
à la barre d'outils standard lorsque le classeur est installé
sous la forme d'une macro complémentaire.
With Application.CommandBars("Standard").Controls.Add
.Caption = "The AddIn's menu item"
.OnAction = "'ThisAddin.xls'!Amacro"
End With
MsgBox "Workbook_AddinInstall()"
End Sub
Private Sub Workbook_AddinUninstall()
MsgBox "Workbook_AddinUninstall()"
End Sub
Private Sub Workbook_BeforeClose(Cancel
As Boolean)
MsgBox "Workbook_BeforeClose(Cancel As Boolean)"
End Sub
Private Sub Workbook_BeforePrint(Cancel
As Boolean)
MsgBox "Workbook_BeforePrint(Cancel As Boolean)"
'
Cet exemple montre comment recalculer toutes les feuilles de calcul du classeur
actif avant l'impression de quoi que ce soit.
For Each wk In Worksheets
wk.Calculate
Next
End Sub
Private Sub Workbook_BeforeSave(ByVal
SaveAsUI As Boolean, Cancel As Boolean)
' Cet exemple montre comment inviter l'utilisateur
à répondre par oui ou par non à la question de l'enregistrement
du classeur.
a = MsgBox("Do you really want to save the workbook?",
vbYesNo)
If a = vbNo Then Cancel = True
MsgBox "Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)"
End Sub
Private Sub Workbook_Deactivate()
MsgBox "Workbook_Deactivate()"
End Sub
Private Sub Workbook_NewSheet(ByVal
Sh As Object)
MsgBox "Workbook_NewSheet(ByVal Sh As Object)"
'
Cet exemple place le nouvel onglet, qui peut être une feuille ou un graphique,
après le dernier onglet :
Sh.Move After:= Sheets(Sheets.Count)
'
Il est possible de savoir s'il s'agit d'une feuille ou d'un graphique que l'on
vient de créer :
MsgBox Sh.Type ' -4167 si c'est une feuille
(Ou n'importe quoi d'autre qu'un graphique), et 3 si c'est un graphique
End Sub
Private Sub Workbook_Open()
MsgBox "Workbook_Open()"
End Sub
Private Sub Workbook_SheetActivate(ByVal
Sh As Object)
MsgBox "Workbook_SheetActivate(ByVal Sh As Object)"
End Sub
Private Sub Workbook_SheetBeforeDoubleClick(ByVal
Sh As Object, ByVal Target As Range, Cancel As Boolean)
MsgBox "Workbook_SheetBeforeDoubleClick(ByVal Sh As Object,
ByVal Target As Range, Cancel As Boolean)"
End Sub
Private Sub Workbook_SheetBeforeRightClick(ByVal
Sh As Object, ByVal Target As Range, Cancel As Boolean)
MsgBox "Workbook_SheetBeforeRightClick(ByVal Sh As Object,
ByVal Target As Range, Cancel As Boolean)"
End Sub
Private Sub Workbook_SheetCalculate(ByVal
Sh As Object)
MsgBox "Workbook_SheetCalculate(ByVal Sh As Object)"
End Sub
Private Sub Workbook_SheetChange(ByVal
Sh As Object, ByVal Target As Range)
MsgBox "Workbook_SheetChange(ByVal Sh As Object, ByVal Target
As Range)"
End Sub
Private Sub Workbook_SheetDeactivate(ByVal
Sh As Object)
MsgBox "Workbook_SheetDeactivate(ByVal Sh As Object)"
End Sub
Private Sub Workbook_SheetFollowHyperlink(ByVal
Sh As Object, ByVal Target As Hyperlink)
MsgBox "Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal
Target As Hyperlink)"
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal
Sh As Object, ByVal Target As Range)
MsgBox "Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal
Target As Range)"
End Sub
Private Sub Workbook_WindowDeactivate(ByVal
Wn As Window)
MsgBox "Workbook_WindowDeactivate(ByVal Wn As Window)"
End Sub
Private Sub Workbook_WindowResize(ByVal
Wn As Window)
MsgBox "Workbook_WindowResize(ByVal Wn As Window)"
End Sub
Private Sub Workbook_WindowActivate(ByVal
Wn As Window)
MsgBox "Workbook_WindowActivate(ByVal Wn As Window)"
End Sub