Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

evenement SelectionChange

  • Initiateur de la discussion Initiateur de la discussion alexane
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

alexane

XLDnaute Occasionnel
bonjour à tous
J'ai sur une feuille une procédure évenementielle selectionchange. J'aimerais que cette procedure ne se déclenche pas sur changement de n'importe que cellule mais juste lorsque les cellules A1:C10 sont modifiées
Merci
 
Re : evenement SelectionChange

Bonjour alexane,

Essaie avec ce code:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A10:C10")) Is Nothing Then
    'ton code
End If
End Sub

Bonne journée,

mth
 
Re : evenement SelectionChange

Bonjour,
juste pour comprendre mireille🙂 :
Code:
If Not Intersect(Target, Range("A10:C10")) Is Nothing Then
peut-il s'écrire
Code:
If Intersect(Target, Range("A10:C10")) Then
?
Si oui alors pourquoi l'écrire de cette manière (if not....is nothing) ?
Si non quelle est la différence de résultat entre les 2 ?
On pourrait peut-être également écrire quelque chose (non testé) dans le genre :
Code:
if target.address = Range("A10:C10") Then
A+
 
Re : evenement SelectionChange

Bonjour tous,
Alexane,
Mimi🙂
David🙂

Code:
Intersect(Target, Range("A10:C10"))
Si target n'est pas dans A10:C10
L'intersection des deux 'Est rien' -> erreur car vba ne sait pas travailler sur rien.

Donc il faut l'interroger pour savoir si l'intersection est quelquechose (pas rien) ou rien.

A+
 
Re : evenement SelectionChange

Bonjour alexane, Mireille, David, Hasco,

Pour compléter l'explication de Hasco :

if target.address = Range("A10:C10") Then

n'est pas vraiment correct, Target.Address va renvoyer une adresse de cellule, c'est à dire un texte du type "$A$10"

donc on pourrait être tenté par

Code:
if target.address = "$A$10:$C$10" Then

mais dans ce cas la procédure ne se lance que si la plage est parfaitement égale à $A$10:$C$10, pas s'il y a certaines cellules en commun... d'où l'intéret d'Intersect
 
Re : evenement SelectionChange

re 🙂

Bonjour David 🙂

Bon Hasco et Tototiti ont tout dit, bien mieux que ce que j'aurais pu en dire moi même, alors un grand merci à tous les deux 🙂

Bonne journée à tous,
et plein de bises Ges 🙂

m
 
Re : evenement SelectionChange

Re
Merci Hasco 🙂
Code:
L'intersection des deux 'Est rien' -> erreur car [B]vba ne sait pas travailler sur rien.[/B]
expliqué comme ça je comprends.

Tototiti 🙂
Code:
mais dans ce cas la procédure ne se lance que [B]si la plage est parfaitement égale à $A$10:$C$10[/B], pas s'il y a certaines cellules en commun... d'où l'intérêt d'Intersect
Merci, c'est clair également.
A+
 
Re : evenement SelectionChange

Bonjour à tous,
Juste pour mettre en avant ma science infuse 🙄, les 2 peuvent très bien s'écrire, tout dépend de ce que l'on en fait après
Code:
If Not Intersect(Target, Range("A10:C10")) Is Nothing Then ...
Code:
If Intersect(Target, Range("A10:C10")) Is Nothing Then ...
A+
kjin
 
Re : evenement SelectionChange

Re
oui kjin ça je l'avais compris. J'ai d'ailleurs ressorti le fichier exemple que tu m'avais fait pour expliquer intersect😉. La question ne portait pas sur :
If Intersect(Target, Range("A10:C10")) Is Nothing Then ..
mais sur
If Intersect(Target, Range("A10:C10")) Then
Pour moi If Intersect(Target, Range("A10:C10")) Then et If Not Intersect(Target, Range("A10:C10")) Is Nothing Then ... voulaient dire la même chose🙄.
Ce qui m'a permis de comprendre la différence entre les 2 c'est l'explication de Hasco:
"vba ne sait pas travailler sur rien."
A+
 
Re : evenement SelectionChange

Re,
Bonjour kjin,

Allez, encore à mon tour 😉

Code:
If Intersect(Target, Range("A10:C10")) Then

L'autre chose qui n'est pas correcte dans cette expression est que ce qui se trouve entre le If et le Then doit renvoyer un Booléen ou quelque chose de compréhensible comme un Booléen (True ou False, -1 ou 0)

Or Intersect ne renvoie pas un Booléen mais soit un objet Range, soit Nothing...
 
Re : evenement SelectionChange

Re 🙂
je ne sais pas si ta science est infuse ou non mais je sais qu'en matière de VBA, elle est grande😱😱😱.
Merci à toi de me répondre quand je pose une question dans ce domaine et sache que je suis très sensible à tes petits fichiers explicatifs (sur intersect et la notion des variables tableau par exemple) qui valent souvent mieux qu'un long discours et que je garde dans un répertoire à ton nom😉.
Cordialement
David
 
Re : evenement SelectionChange

Re
Merci pour ces réponses. je vais tester tout ça pour bien comprendre.
Je serais très interessée par ces "petits fichiers explicatifs" (intersect et variables tableau). J'ai bien un petit exemple d'utilisation d'une variable tableau à 1 dim. qui compte le nombre d'occurences de chaque lettre d'un mot, mais franchement, ce code est vraiment pas simple (si y a des amateurs, je le mets en fichier joint)
 

Pièces jointes

Re : evenement SelectionChange

Salut alexane et le forum
J'ai juste jeté un oeil sur les postes, et il y a une chose que je ne comprends pas :
J'ai sur une feuille une procédure évenementielle selectionchange. J'aimerais que cette procedure ne se déclenche pas sur changement de n'importe que cellule mais juste lorsque les cellules A1:C10 sont modifiées
Or, chez moi, SelectionChange ne se déclenche qu'au changement de sélection, pas quand une cellule est modifiée. Donc, plutôt que la manière de limiter la plage concernée, je me pose la question de savoir si ce n'est pas Worksheet_Change qu'il faudrait utiliser ?
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
464
Réponses
2
Affichages
112
Réponses
5
Affichages
157
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…