Macro lancée lors de la modification d'une cellule
2 réponses
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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.
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.
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
==
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" ?
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" ?