Vous avez apprécié ?
Partagez ;-)

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 :

workbook - evenements classeur

L'événement Workbook_Open est ajouté par défaut, il agit à l'ouverture du classeur :

Private Sub Workbook_Open()

End Sub

Par 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 Sub

Workbook_BeforeClose (avant fermeture)

Pour éxécuter des instructions juste avant la fermeture du classeur, choisissez BeforeClose :

close - evenements classeur
Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub

La 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 Sub

Workbook_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 Sub

L'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 Sub

L'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 Sub

Workbook_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 Sub

Par 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 Sub

Workbook_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 Sub

Par 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 Sub

Workbook_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 Sub

Workbook_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 Sub

Workbook_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 Sub

Workbook_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 Sub

Par 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 Sub

Workbook_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 Sub

Workbook_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