Cours VBA : les événements Workbook
Nous pouvons exécuter du code lors de certains événements du classeur (ouverture, fermeture, etc).
Workbook_Open (à l'ouverture) :
Pour exécuter des instructions à l'ouverture du classeur, rendez-vous dans ThisWorkbook et sélectionnez Workbook :
L'événement Workbook_Open est ajouté par défaut, il agit à l'ouverture du classeur :
Private Sub Workbook_Open()
End SubPar exemple, en ajoutant l'instruction suivante, une boîte de dialogue sera affichée à l'ouverture du classeur :
Private Sub Workbook_Open()
MsgBox "Message de bienvenue"
End SubWorkbook_BeforeClose (avant fermeture) :
Pour éxécuter des instructions juste avant la fermeture du classeur, choisissez BeforeClose :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
End SubLa fermeture du classeur peut être annulée en attribuant la valeur True à la variable "Cancel".
Voici un exemple où l'utilisateur doit confirmer la fermeture du classeur :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Si l'utilisateur répond NON, la variable Cancel vaudra TRUE (ce qui annulera la fermeture)
If MsgBox("Etes-vous certain de vouloir fermer ce classeur ?", 36, "Confirmation") = vbNo Then
Cancel = True
End If
End SubWorkbook_BeforeSave (avant enregistrement) :
Cet événement se déclenche juste avant l'enregistrement :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
End SubL'enregistrement peut être annulé en attribuant la valeur True à la variable "Cancel".
Workbook_BeforePrint (avant impression) :
Cet événement se déclenche juste avant l'impression :
Private Sub Workbook_BeforePrint(Cancel As Boolean)
End SubL'impression peut être annulée en attribuant la valeur True à la variable "Cancel".
Workbook_AfterSave (après enregistrement) :
Cet événement se déclenche juste après l'enregistrement :
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
End SubWorkbook_SheetActivate (à l'activation d'une feuille) :
Cet événement se déclenche à chaque changement de feuille :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
End SubPar exemple, affichage du nom de la feuille dans une boîte de dialogue :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox "Nom de la feuille : " & Sh.Name
End SubWorkbook_SheetBeforeDoubleClick (avant double-clic) :
Cet événement se déclenche juste avant un double-clic sur une cellule :
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
End SubPar exemple, coloration d'une cellule double-cliquée en fonction de la feuille :
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Sh.Name = "Feuil1" Then
Target.Interior.Color = RGB(255, 108, 0) 'Couleur orange
Else
Target.Interior.Color = RGB(136, 255, 0) 'Couleur verte
End If
End SubWorkbook_SheetBeforeRightClick (avant clic droit) :
Cet événement se déclenche juste avant un clic droit sur une cellule :
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
End SubWorkbook_SheetChange (à chaque modification de cellule) :
Cet événement se déclenche à chaque modification du contenu d'une cellule :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
End SubWorkbook_SheetCalculate (à chaque recalcul) :
Cet événement se déclenche à chaque recalcul de données d'une feuille :
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
End SubWorkbook_SheetSelectionChange (à chaque changement de sélection) :
Cet événement se déclenche à chaque changement de sélection sur une feuille de calcul :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
End SubPar exemple, coloration de la sélection si A1 est vide :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Range("A1") = "" Then
Target.Interior.Color = RGB(124, 255, 255) 'Bleu clair
End If
End SubWorkbook_NewSheet (à l'insertion d'une feuille) :
Cet événement se déclenche à chaque insertion d'une nouvelle feuille :
Private Sub Workbook_NewSheet(ByVal Sh As Object)
End SubWorkbook_SheetFollowHyperlink (au clic sur un lien) :
Cet événement se déclenche lors d'un clic sur un lien hypertexte :
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
End Sub
