TOP

VBA-Leçon 11.1. Événements de classeur (événements Workbook)

Nous pouvons avoir des événements de classeur (comme l'ouverture, la fermeture, etc.) qui peuvent être des déclencheurs (commutateurs) pour le code VBA.


Workbook_Open (ouverture du livre)

Pour suivre les instructions à l'ouverture du classeur, accédez à ThisWorkbook et sélectionnez Workbook :

L'événement Workbook_Open sera ajouté par défaut et se déclenchera à l'ouverture du classeur :

Private Sub Workbook_Open()

End Sub

Par exemple, si nous ajoutons l'instruction suivante, alors la boîte de dialogue s'affichera à l'ouverture du classeur :

Private Sub Workbook_Open()
     MsgBox "Welcome"
End Sub

Workbook_BeforeClose (Événement avant la fermeture du classeur)

Pour exécuter les instructions avant de fermer le classeur, sélectionnez BeforeClose :

Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub

La fermeture du classeur peut être annulée en définissant la variable "Cancel" sur True.

Voici un exemple dans lequel l'utilisateur est invité à confirmer la fermeture du classeur :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
     'Si l'utilisateur répond par NO, alors la variable Cancel aura la valeur TRUE (ce qui annulera la fermeture du classeur)
     If MsgBox("Do you really want to close this workbook ?", 36, "I confirm") = vbNo Then
         Cancel = True
     End If
End Sub

Workbook_BeforeSave (Événement avant l'enregistrement du classeur)

Cet événement se produit immédiatement avant l'enregistrement du classeur :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub

L'enregistrement d'un fichier peut être annulé en définissant la variable "Cancel" sur True.

Workbook_BeforePrint (Événement avant l'impression du livre)

Cet événement se produit avant l'impression du classeur :

Private Sub Workbook_BeforePrint(Cancel As Boolean)

End Sub

L'impression du fichier peut être annulée en définissant la variable "Cancel" sur True.

Workbook_AfterSave (Événement après l'enregistrement du classeur)

Cet événement se produit immédiatement après l'enregistrement du classeur :

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

End Sub

Workbook_SheetActivate (événement de changement de feuille de calcul)

Cet événement se produit chaque fois que vous basculez entre les feuilles de calcul d'un classeur :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

End Sub

Dans cet exemple, le nom de la feuille active est affiché dans la boîte de dialogue :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     MsgBox "Name of Sheet : " & Sh.Name
End Sub

Workbook_SheetBeforeDoubleClick (événement de double-clic sur une cellule)

Cet événement se produit lorsqu'un double-clic sur une cellule de feuille de calcul :

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

Par exemple, nous pouvons utiliser cet événement pour ajouter une couleur de remplissage à une cellule, en fonction de la feuille sélectionnée :

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
     If Sh.Name = "Sheet1" Then
         Target.Interior.Color = RGB(255, 108, 0) 'Orange
     Else
         Target.Interior.Color = RGB(136, 255, 0) 'Vert
     End If
End Sub

Workbook_SheetBeforeRightClick (Événement avant clic droit)

Cet événement se produit avant le clic droit de la souris :

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

Workbook_SheetChange (événement de modification du contenu de la feuille)

Cet événement se produit chaque fois que le contenu de la feuille de calcul change :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

Workbook_SheetCalculate (événement SheetCalculate)

Cet événement se produit chaque fois que les données d'une feuille de calcul sont calculées ou recalculées :

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)

End Sub

Workbook_SheetSelectionChange (événement de changement de plage de cellules sélectionnée)

Cet événement se produit chaque fois que le contenu de la plage de cellules sélectionnée dans la feuille de calcul change :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

Dans cet exemple, la couleur de remplissage change si la cellule 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
    End If
End Sub

Workbook_NewSheet (Ajouter un nouvel événement de feuille)

Cet événement se produit chaque fois qu'une nouvelle feuille est ajoutée au classeur :

Private Sub Workbook_NewSheet(ByVal Sh As Object)

End Sub

Workbook_SheetFollowHyperlink (événement de clic sur un lien)

Cet événement se produit lorsqu'un lien (hypertexte) est cliqué :

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)

End Sub