Cours VBA : les événements Worksheet

A la page précédente les événements concernaient le classeur entier. Sur celle-ci, nous allons nous focaliser sur les événements liés à une feuille.


Worksheet_SelectionChange (au changement de sélection)

Pour exécuter des instructions en fonction d'un événement pour une feuille en particulier, sélectionnez la feuille dans l'éditeur, puis Worksheet :

worksheet evenements feuille

L'événement SelectionChange est ajouté par défaut, il agit lors d'un changement de sélection :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

Par exemple, voici un code qui colore la ou les cellules sélectionnées et qui supprime automatiquement la coloration de la dernière sélection lors d'un changement de sélection :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Static selectionPrecedente As String

    'Suppression de la couleur de fond de la sélection précédente
    If selectionPrecedente <> "" Then
        Range(selectionPrecedente).Interior.ColorIndex = xlColorIndexNone
    End If

    'Coloration de la sélection actuelle
    Target.Interior.Color = RGB(181, 244, 0)

    'Enregistrement de l'adresse de la sélection actuelle
    selectionPrecedente = Target.Address

End Sub

Worksheet_Activate (à l'activation de la feuille)

Cet événement se déclenche lorsque la feuille est activée :

Private Sub Worksheet_Activate()

End Sub

Par exemple, sélection de la cellule D5 à l'activation de la feuille :

Private Sub Worksheet_Activate()
    
    Range("D5").Select
    
End Sub

Worksheet_Deactivate (à la sortie de la feuille)

Cet événement se déclenche lorsqu'une autre feuille du classeur est activée :

Private Sub Worksheet_Deactivate()

End Sub

Par exemple, effacement du contenu des cellules B2 à B10 après avoir quitté la feuille :

Private Sub Worksheet_Deactivate()
    
    Range("B2:B10").ClearContents
    
End Sub

Worksheet_BeforeDoubleClick (au double-clic)

Cet événement se déclenche lors d'un double-clic sur une cellule de la feuille :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub

Par exemple, coloration de la cellule double-cliquée en vert (ou en blanc si elle est déjà colorée) :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    If Target.Interior.Color = 16777215 Then 'Si blanc
        Target.Interior.Color = RGB(200, 255, 100) 'Couleur verte
    Else 'Sinon
        Target.Interior.Color = 16777215 'Couleur blanche
    End If
    
End Sub

Le double-clic peut être annulé en attribuant la valeur True à la variable Cancel.

Worksheet_BeforeRightClick (au clic droit)

Cet événement se déclenche lors d'un clic droit sur la feuille :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

End Sub

Par exemple, ajout de la date du jour par clic droit si la cellule cliquée est dans la colonne C :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

    'Si cellule de la colonne 3 (C)
    If Target.Column = 3 Then
        Target = Date 'Ajout de la date du jour
        Cancel = True 'Annulation du clic droit
    End If
    
End Sub

Le clic droit peut être annulé en attribuant la valeur True à la variable Cancel (dans ce cas, le menu contextuel ne sera pas affiché).

Worksheet_Change (à chaque modification de cellule)

Cet événement se déclenche lors de modifications du contenu des cellules de la feuille :

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Désactiver temporairement tous les événements

Pour exécuter du code sans déclencher d'événements, placez-le entre ces deux lignes :

Application.EnableEvents = False 'Désactive les événements

'Instructions ...

Application.EnableEvents = True 'Réactive les événements