Définir une place pour l'événement : Worksheet_SelectionChange Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
horusbk
Membre fidèle
Membre fidèle
Messages : 235
Appréciation reçue : 1
Inscrit le : 3 février 2017
Version d'Excel : Excel 2010 à 2019

Message par horusbk » 7 janvier 2020, 11:11

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. :lole:
Merci d'avance.

Horusbk
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'876
Appréciations reçues : 180
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 7 janvier 2020, 11:34

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
1 membre du forum aime ce message.
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'747
Appréciations reçues : 226
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 7 janvier 2020, 12:26

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
8-)
A+
1 membre du forum aime ce message.
Avatar du membre
horusbk
Membre fidèle
Membre fidèle
Messages : 235
Appréciation reçue : 1
Inscrit le : 3 février 2017
Version d'Excel : Excel 2010 à 2019

Message par horusbk » 7 janvier 2020, 12:37

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 :wink: 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. :wink:

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.
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'876
Appréciations reçues : 180
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 7 janvier 2020, 13:49

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...
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
Avatar du membre
horusbk
Membre fidèle
Membre fidèle
Messages : 235
Appréciation reçue : 1
Inscrit le : 3 février 2017
Version d'Excel : Excel 2010 à 2019

Message par horusbk » 7 janvier 2020, 21:15

Bonsoir,

Génial merci pour ces explications ThauThème ;;)

Je passe le sujet en résolu. Merci à vous deux !!
Horusbk
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message