OVH Cloud OVH Cloud

Macro lancée lors de la modification d'une cellule

2 réponses
Avatar
Gilgamesh
Bonjour, comme écrit dans le titre je voudrais lancer une suite
d'instructions dès que l'utilisateur à changé la valeur d'une cellule A
PARTIR D'UNE LISTE (=> le curseur ne quitte pas la cellule)

Dans Excelabo, j'ai bien trouvé ce qui suit, mais si j'ai bien compris,
l'événement n'est lancé qui si le curseur quitte la cellule ?

En fait c'est l'instruction

Not Intersect(Target, Range("B:B")) Is Nothing

que j'aimerais qu'on m'explicite.

merci


=============
http://www.excelabo.net/xl/macros.php#macromodifcellule
Q : Comment peut-on détecter, pour traitement VBA, la modification d'une
valeur intervenue dans une
cellule ? Worksheet_change est exécutée à la modification de n'importe
quelle cellule de la
feuille.

R: Tu peux "limiter l'évènement" à une cellule ou une plage !!
Pour une plage un truc du style :
If Not Intersect(Target, Range("B:B")) Is Nothing Then ...
blabla...
et pour une cellule
If target.address="$A$1" then ... blabla...

Attention: Target de l'évènement SelectionChange renvoie la cellule
d'arrivée, et pas la
cellule de départ. Ainsi, si l'on veut limiter l'évènement à $A$1, il ne
faut pas utiliser
Target lorsque l'on quitte $A$1, mais lorsque l'on va y arriver.

2 réponses

Avatar
Nicolas B.
Salut Gilganesh,

Dans Excelabo, j'ai bien trouvé ce qui suit, mais si j'ai bien
compris,
l'événement n'est lancé qui si le curseur quitte la cellule ?


L'évènement Selection_Change se déclenche même si le curseur ne se
déplace pas.


Not Intersect(Target, Range("B:B")) Is Nothing


En français : si l'intersection de la plage modifiée avec la plage B:B
n'est pas vide, alors faire ci, sinon faire ça.
Autrement dit : si une des cellules modifiée est en colonne B, alors...
sinon...


A+
Nicolas B.


Gilgamesh wrote:

Bonjour, comme écrit dans le titre je voudrais lancer une suite
d'instructions dès que l'utilisateur à changé la valeur d'une cellule A
PARTIR D'UNE LISTE (=> le curseur ne quitte pas la cellule)

Dans Excelabo, j'ai bien trouvé ce qui suit, mais si j'ai bien compris,
l'événement n'est lancé qui si le curseur quitte la cellule ?

En fait c'est l'instruction

Not Intersect(Target, Range("B:B")) Is Nothing

que j'aimerais qu'on m'explicite.

merci


============ > http://www.excelabo.net/xl/macros.php#macromodifcellule
Q : Comment peut-on détecter, pour traitement VBA, la modification d'une
valeur intervenue dans une
cellule ? Worksheet_change est exécutée à la modification de n'importe
quelle cellule de la
feuille.

R: Tu peux "limiter l'évènement" à une cellule ou une plage !!
Pour une plage un truc du style :
If Not Intersect(Target, Range("B:B")) Is Nothing Then ...
blabla...
et pour une cellule
If target.address="$A$1" then ... blabla...

Attention: Target de l'évènement SelectionChange renvoie la cellule
d'arrivée, et pas la
cellule de départ. Ainsi, si l'on veut limiter l'évènement à $A$1, il ne
faut pas utiliser
Target lorsque l'on quitte $A$1, mais lorsque l'on va y arriver.


Avatar
Gilgamesh
Not Intersect(Target, Range("B:B")) Is Nothing


En français : si l'intersection de la plage modifiée avec la plage B:B
n'est pas vide, alors faire ci, sinon faire ça.
Autrement dit : si une des cellules modifiée est en colonne B, alors...
sinon...


-- Merci bcp.

J'ai changé le nom de la macro, qui n'est plus liée à un CommandButton.
Je l'ai renommée Worksheet_Change,

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$D$26" Then...

mais j'avoue qu'à nouveau je ne maitrise pas trop la syntaxe.

Résultat : le premier changement en D26 marche mais au second : plantage
et fermeture d'XL :-(

A quoi ça peut tenir ? Comment faire qqchose de "propre" ?

merci

==