Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Déclencher macro depuis une liste déroulante

10 réponses
Avatar
Pierre F.
Bonjour à toutes et tous


J'ai cherché sur ce forum mais tout ce que j'ai trouvé et essayé ne
fonctionne pas...
Je dois être un peu nul...

En B3, j'ai une liste déroulante (validation) qui peut contenir les
nombres 6, 12, 18, 24 ou 30

Je souhaiterais que lorsqu'on choisi 12 par exemple, la macro (présente
dans un module "normal") nommée mepq12 soit lancée...

Dans le code de la feuille, j'ai écrit ceci:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(ActiveCell, [B3]) Is Nothing Then
Select Case Target
Case 6: mepq6
Case 12: mepq12
Case 18: mepq18
Case 24: mepq24
Case 30: mepq30
End Select
End If
End Sub

J'ai essayé de placer ce code dans le ThisWorkbook... mais ça ne va pas
mieux :-(

Il y a des jours comme ça :-)

Merci pour votre aide.

Cordialement,
Pierre F.

10 réponses

Avatar
Jacky
Bonjour,
La code en question fonctionne parfaitement chez moi.(ActiveCell==>target ne
change rien)
http://cjoint.com/?kpnp7R02Ld
Reboot le pc.
--
Salutations
JJ


"Pierre F." a écrit dans le message de news:
a75b6$48f5c88c$55da2eb8$
Bonjour à toutes et tous


J'ai cherché sur ce forum mais tout ce que j'ai trouvé et essayé ne
fonctionne pas...
Je dois être un peu nul...

En B3, j'ai une liste déroulante (validation) qui peut contenir les
nombres 6, 12, 18, 24 ou 30

Je souhaiterais que lorsqu'on choisi 12 par exemple, la macro (présente
dans un module "normal") nommée mepq12 soit lancée...

Dans le code de la feuille, j'ai écrit ceci:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(ActiveCell, [B3]) Is Nothing Then
Select Case Target
Case 6: mepq6
Case 12: mepq12
Case 18: mepq18
Case 24: mepq24
Case 30: mepq30
End Select
End If
End Sub

J'ai essayé de placer ce code dans le ThisWorkbook... mais ça ne va pas
mieux :-(

Il y a des jours comme ça :-)

Merci pour votre aide.

Cordialement,
Pierre F.


Avatar
JPMonnier
Bonjour,
en plaçant le code dans la feuille (VBA) contenant la liste déroulant, ça
fonctionne chez moi
mais placé dans ThisWorkbook ça ne fonctionne pas
--
Cordialement

"Pierre F." a écrit dans le message de
news:a75b6$48f5c88c$55da2eb8$
Bonjour à toutes et tous


J'ai cherché sur ce forum mais tout ce que j'ai trouvé et essayé ne
fonctionne pas...
Je dois être un peu nul...

En B3, j'ai une liste déroulante (validation) qui peut contenir les
nombres 6, 12, 18, 24 ou 30

Je souhaiterais que lorsqu'on choisi 12 par exemple, la macro (présente
dans un module "normal") nommée mepq12 soit lancée...

Dans le code de la feuille, j'ai écrit ceci:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(ActiveCell, [B3]) Is Nothing Then
Select Case Target
Case 6: mepq6
Case 12: mepq12
Case 18: mepq18
Case 24: mepq24
Case 30: mepq30
End Select
End If
End Sub

J'ai essayé de placer ce code dans le ThisWorkbook... mais ça ne va pas
mieux :-(

Il y a des jours comme ça :-)

Merci pour votre aide.

Cordialement,
Pierre F.


Avatar
Daniel.C
Bonjour.
Non, c'est bien, il faut le mettre dans le module feuille (clic droit sur
l'onglet et clic sur "visualiser le code". Remplace aussi activecell par
"target", les deux pouvant être différents.
--
Cordialement.
Daniel
"Pierre F." a écrit dans le message de news:
a75b6$48f5c88c$55da2eb8$
Bonjour à toutes et tous


J'ai cherché sur ce forum mais tout ce que j'ai trouvé et essayé ne
fonctionne pas...
Je dois être un peu nul...

En B3, j'ai une liste déroulante (validation) qui peut contenir les
nombres 6, 12, 18, 24 ou 30

Je souhaiterais que lorsqu'on choisi 12 par exemple, la macro (présente
dans un module "normal") nommée mepq12 soit lancée...

Dans le code de la feuille, j'ai écrit ceci:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(ActiveCell, [B3]) Is Nothing Then
Select Case Target
Case 6: mepq6
Case 12: mepq12
Case 18: mepq18
Case 24: mepq24
Case 30: mepq30
End Select
End If
End Sub

J'ai essayé de placer ce code dans le ThisWorkbook... mais ça ne va pas
mieux :-(

Il y a des jours comme ça :-)

Merci pour votre aide.

Cordialement,
Pierre F.


Avatar
Daniel.C
Bonjour.
J'ai eu un jour un gros souci avec un utilisateur dont la sélection descend
d'une cellule après validation, auquel cas target <> activecell
--
Cordialement.
Daniel
"Jacky" a écrit dans le message de news:

Bonjour,
La code en question fonctionne parfaitement chez moi.(ActiveCell==>target
ne
change rien)
http://cjoint.com/?kpnp7R02Ld
Reboot le pc.
--
Salutations
JJ


"Pierre F." a écrit dans le message de news:
a75b6$48f5c88c$55da2eb8$
Bonjour à toutes et tous


J'ai cherché sur ce forum mais tout ce que j'ai trouvé et essayé ne
fonctionne pas...
Je dois être un peu nul...

En B3, j'ai une liste déroulante (validation) qui peut contenir les
nombres 6, 12, 18, 24 ou 30

Je souhaiterais que lorsqu'on choisi 12 par exemple, la macro (présente
dans un module "normal") nommée mepq12 soit lancée...

Dans le code de la feuille, j'ai écrit ceci:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(ActiveCell, [B3]) Is Nothing Then
Select Case Target
Case 6: mepq6
Case 12: mepq12
Case 18: mepq18
Case 24: mepq24
Case 30: mepq30
End Select
End If
End Sub

J'ai essayé de placer ce code dans le ThisWorkbook... mais ça ne va pas
mieux :-(

Il y a des jours comme ça :-)

Merci pour votre aide.

Cordialement,
Pierre F.







Avatar
Jacky
Bonjour Daniel

Oui, tu as tout à fait raison.
Perso, je ne déplace pas le curseur après validation d'ou ce manque de
vérification.
Donc Pierre,
If Not Intersect(ActiveCell, [B3]) Is Nothing Then
à remplacer par
If Not Intersect(Target, [B3]) Is Nothing Then


--
Salutations
JJ


"Daniel.C" a écrit dans le message de news:

Bonjour.
J'ai eu un jour un gros souci avec un utilisateur dont la sélection
descend d'une cellule après validation, auquel cas target <> activecell
--
Cordialement.
Daniel
"Jacky" a écrit dans le message de news:

Bonjour,
La code en question fonctionne parfaitement chez moi.(ActiveCell==>target
ne
change rien)
http://cjoint.com/?kpnp7R02Ld
Reboot le pc.
--
Salutations
JJ


"Pierre F." a écrit dans le message de
news:
a75b6$48f5c88c$55da2eb8$
Bonjour à toutes et tous


J'ai cherché sur ce forum mais tout ce que j'ai trouvé et essayé ne
fonctionne pas...
Je dois être un peu nul...

En B3, j'ai une liste déroulante (validation) qui peut contenir les
nombres 6, 12, 18, 24 ou 30

Je souhaiterais que lorsqu'on choisi 12 par exemple, la macro (présente
dans un module "normal") nommée mepq12 soit lancée...

Dans le code de la feuille, j'ai écrit ceci:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(ActiveCell, [B3]) Is Nothing Then
Select Case Target
Case 6: mepq6
Case 12: mepq12
Case 18: mepq18
Case 24: mepq24
Case 30: mepq30
End Select
End If
End Sub

J'ai essayé de placer ce code dans le ThisWorkbook... mais ça ne va pas
mieux :-(

Il y a des jours comme ça :-)

Merci pour votre aide.

Cordialement,
Pierre F.











Avatar
Pierre F.
Daniel.C a écrit :
Bonjour.
Non, c'est bien, il faut le mettre dans le module feuille (clic droit sur
l'onglet et clic sur "visualiser le code". Remplace aussi activecell par
"target", les deux pouvant être différents.



Merci à vous tous...

Je n'y comprends plus rien :-(

Quand je fais tourner l'exemple de Jacky, tout fonctionne !!!
Mais pour mon classeur... que dalle

J'ai testé mes macros une à une et elles fonctionnent correctement.

Je vous met en cjoint un extrait de mon classeur.
Merci pour votre collaboration.

http://cjoint.com/?kpoyu54jBZ

Cordialement
Pierre F.

PS: Bizarrerie au démarrage d'Excel, j'ai le message suivant (depuis
quelques jours): "Impossible de créer le menu".

Mais le fichier de Jacky a eu le même message et il fonctionne :-(
Avatar
Pierre F.
Jacky a écrit :

Donc Pierre,
If Not Intersect(ActiveCell, [B3]) Is Nothing Then
à remplacer par
If Not Intersect(Target, [B3]) Is Nothing Then



OK; j'ai fait le changement... mais pas d'amélioration :-(
Voir ma réponse à Daniel C.

Merci; cordialement,
Pierre F.
Avatar
Pierre F.
Jacky a écrit :

Reboot le pc.



C'est fait et rien ne change hélas :-(

Cordialement,
Pierre F.
Avatar
Daniel.C
Ca fonctionne chez moi. A tout hasard, mets la macro suivante dans un
classeur et exécute-la avant de tester :

Sub test()
application.EnableEvents=True
End Sub

--
Cordialement.
Daniel
"Pierre F." a écrit dans le message de news:
bd546$48f5e17e$55da2eb8$
Daniel.C a écrit :
Bonjour.
Non, c'est bien, il faut le mettre dans le module feuille (clic droit sur
l'onglet et clic sur "visualiser le code". Remplace aussi activecell par
"target", les deux pouvant être différents.



Merci à vous tous...

Je n'y comprends plus rien :-(

Quand je fais tourner l'exemple de Jacky, tout fonctionne !!!
Mais pour mon classeur... que dalle

J'ai testé mes macros une à une et elles fonctionnent correctement.

Je vous met en cjoint un extrait de mon classeur.
Merci pour votre collaboration.

http://cjoint.com/?kpoyu54jBZ

Cordialement
Pierre F.

PS: Bizarrerie au démarrage d'Excel, j'ai le message suivant (depuis
quelques jours): "Impossible de créer le menu".

Mais le fichier de Jacky a eu le même message et il fonctionne :-(



Avatar
Pierre F.
Daniel.C a écrit :
Ca fonctionne chez moi. A tout hasard, mets la macro suivante dans un
classeur et exécute-la avant de tester :

Sub test()
application.EnableEvents=True
End Sub



Merci.

Trouvé la soluce mais ne comprends pas pourquoi.
J'ai fait tourner ta petite macro dans un classeur vide puis dans le
classeur en question.

Rien n'a changé

.. sauf que ... sans le faire exprès, j'ai été touiller les options
(mode de calcul automatique --> mis en mode calcul sur ordre...) et ça
fonctionne !!! Je crois rêver :-)

Merci à vous tous pour votre patience.

Cordialement,
Pierre F.

PS: en prime, je n'ai plus le message au démarrage d'Excel...