Définir une place pour l'événement : Worksheet_SelectionChange

Bonjour,

et meilleurs vœux !

J'utilise un code pour lancer des procédures uniquement lorsque l'utilisateur change de cellule sur la colonne 'A'.

J'utilise cette variable Target.Column > 1.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column > 1 Then Exit Sub 'On vérifie les actions sur la colonne A    
Application.EnableEvents = False    
' ici le code
Application.EnableEvents = True
End Sub

Si cela est possible, j'aimerais aller plus loin en vérifiant sur la colonne A deux plages de cellules définies :

  • A5:A20
  • A25:A32

Hélas je sollicite votre aide car je ne sais pas s'il est possible de réaliser cela.

Merci d'avance.

Horusbk

Bonjour Horusbk, bonjour le forum,

Peut-être comme ça :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub 'On vérifie les actions sur la colonne A
Application.EnableEvents = False
If Not Application.Intersect(Target.Range("A5:A20")) Is Nothing Then
    'code pour la plage A5:A20
End If
If Not Application.Intersect(Target.Range("A25:A32")) Is Nothing Then
    'code pour la plage A25:A32
End If
Application.EnableEvents = True
End Sub

Salut horusbk,

Salut ThauTheme,

Petite erreur d'inattention, sûrement...

If Not Application.Intersect(Target, Range("A5:A20")) Is Nothing Then

Autre question : tes procédures doivent-elles se lancer lors de la SÉLECTION de ces cellules ou lors d'un CHANGEMENT de valeur de ces cellules ?

Si SÉLECTION alors, oui, Sub Worksheet_SelectionChange sinon Sub Worksheet_Change.

Private Sub Worksheet_Change(ByVal Target As Range)
'
Application.EnableEvents = False
'
If Not Application.Intersect(Target, Range("A5:A20")) Is Nothing Then
    'Code
End If
If Not Application.Intersect(Target, Range("A25:A32")) Is Nothing Then
    'Code
End If
'
Application.EnableEvents = True
'
End Sub

A+

Salut curulis57,

Salut ThauTheme,

curulis57 a écrit :

Autre question : tes procédures doivent-elles se lancer lors de la SÉLECTION de ces cellules ou lors d'un CHANGEMENT de valeur de ces cellules ?

Uniquement lors de la sélection des cellules Lorsque mes conditions sont vérifiées, ma macro lance un export des données. Lorsque j'utilisais Sub Worksheet_Change, à savoir lorsque l'utilisateur validait une nouvelle donnée, cette valeur était également prise dans l'export... et c'était pas ce que voulais. Sub Worksheet_SelectionChange Me parait donc un meilleur compromis.

Merci pour vos réponses !

Il y a une partie du code que je ne comprends pas, à quoi sert Target dans le code ?

If Not Application.Intersect(Target, Range("A5:A20")) Is Nothing Then

Horusbk.

Bonjour le fil, bonjour le forum,

Merci Curulis de corriger mes erreurs !...

Target représente la cellule active dans l'événement SelectionChange ou la cellule modifiée dans l'événement Change, ou la cellule double-cliquée dans l'événement BeforeDoubleClick. Bref, la cellule sur laquelle on a agit selon l'événement...

Bonsoir,

Génial merci pour ces explications ThauThème

Je passe le sujet en résolu. Merci à vous deux !!

Horusbk

Rechercher des sujets similaires à "definir place evenement worksheet selectionchange"