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

Comment déclencher une macro à partir d'un élément d'une zone de liste?

11 réponses
Avatar
gandi
Bonjour,
j'ai crée une zone de liste, liée à une cellule ("c1") . Cette zone de
liste contient les jours de la semaine. Quand j'active "lundi",
j'obtiens le chiffre 1 en c1; pour "mardi le chiffre 2 et ainsi de suite
jusqu'à dimanche .

J'aimerais qu'à l'affichage du chiffre 1 en "c1", dès que je clique sur
"lundi", se déclenche la macro 1 que j'ai mise dans le module 1 de la
feuille 1.

En feuille1 j'ai mis l' instruction suivante pour provoquer un
déclenchement automatique dès l'apparition des chiffre en "c1":
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = Range("c1").Address And Target.Value = "1" Then Macro1
End Sub

Mais ça ne fonctionne pas!

Si par contre je frappe le chiffre 1 en "c1" et le valide depuis le
clavier, ma macro fonctionne. Je ne comprends pas pourquoi. Quelqu'un
pourrait-il m'expliquer et me trouver un solution à mon problème.

Merci

10 réponses

1 2
Avatar
Michel Gaboly
--------------5727FCCB3F3EF56E7B667A4E
Content-Type: text/plain; charset=iso-8859-1; x-mac-type="54455854"; x-mac-creator="4D4F5353"
Content-Transfer-Encoding: 8bit

Bonjour,

Voici une réponse de sur ce thème, faite le 3 janvier :


petite difficulté avec la validation de liste
quand on modifie une cellule par validation de liste, l'évènement
Worksheet_Change n'est pas activé
une méthode un peu tordue, utiliser un onglet masqué dans lequel on écrit
µ (si B5 est la cellule modifiée par validation de liste)
et utiliser l'événement Private Sub Worksheet_Calculate() de la nouvelle
feuille pour détecter le changement de B5


Bonjour,
j'ai crée une zone de liste, liée à une cellule ("c1") . Cette zone de
liste contient les jours de la semaine. Quand j'active "lundi",
j'obtiens le chiffre 1 en c1; pour "mardi le chiffre 2 et ainsi de suite
jusqu'à dimanche .

J'aimerais qu'à l'affichage du chiffre 1 en "c1", dès que je clique sur
"lundi", se déclenche la macro 1 que j'ai mise dans le module 1 de la
feuille 1.

En feuille1 j'ai mis l' instruction suivante pour provoquer un
déclenchement automatique dès l'apparition des chiffre en "c1":
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = Range("c1").Address And Target.Value = "1" Then Macro1
End Sub

Mais ça ne fonctionne pas!

Si par contre je frappe le chiffre 1 en "c1" et le valide depuis le
clavier, ma macro fonctionne. Je ne comprends pas pourquoi. Quelqu'un
pourrait-il m'expliquer et me trouver un solution à mon problème.

Merci


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


--------------5727FCCB3F3EF56E7B667A4E
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
Bonjour,
<p>Voici une r&eacute;ponse de sur ce th&egrave;me, faite le 3 janvier
:
<br>&nbsp;
<blockquote>petite difficult&eacute; avec la validation de liste
<br>quand on modifie une cellule par validation de liste, l'&eacute;v&egrave;nement
<br>Worksheet_Change n'est pas activ&eacute;
<br>une m&eacute;thode un peu tordue, utiliser un onglet masqu&eacute;
dans lequel on &eacute;crit
<br>µ&nbsp; (si B5 est la cellule modifi&eacute;e par validation de liste)
<br>et utiliser l'&eacute;v&eacute;nement Private Sub Worksheet_Calculate()
de la nouvelle
<br>feuille pour d&eacute;tecter le changement de B5</blockquote>

<blockquote TYPE=CITE>Bonjour,
<br>j'ai cr&eacute;e une zone de liste, li&eacute;e &agrave; une cellule
("c1")&nbsp; . Cette zone de
<br>liste contient les jours de la semaine. Quand j'active "lundi",
<br>j'obtiens le chiffre 1 en c1; pour "mardi le chiffre 2 et ainsi de
suite
<br>jusqu'&agrave; dimanche .
<p>J'aimerais qu'&agrave; l'affichage du chiffre 1 en "c1", d&egrave;s
que je clique sur
<br>"lundi",&nbsp; se d&eacute;clenche la macro 1 que j'ai mise dans le
module 1 de la
<br>feuille 1.
<p>En feuille1 j'ai mis l' instruction suivante pour provoquer un
<br>d&eacute;clenchement automatique d&egrave;s l'apparition des chiffre
en "c1":
<br>Private Sub Worksheet_Change(ByVal Target As Excel.Range)
<br>If Target.Address = Range("c1").Address And Target.Value = "1" Then
Macro1
<br>End Sub
<p>Mais &ccedil;a ne fonctionne pas!
<p>Si par contre je frappe le chiffre 1 en "c1" et le valide depuis le
<br>clavier, ma macro fonctionne. Je ne comprends pas pourquoi. Quelqu'un
<br>pourrait-il m'expliquer et me trouver un solution &agrave; mon probl&egrave;me.
<p>Merci</blockquote>

<p>--
<br>Cordialement,
<p>Michel Gaboly
<br><A HREF="http://www.gaboly.com">http://www.gaboly.com</A>
<br>&nbsp;</html>

--------------5727FCCB3F3EF56E7B667A4E--

Avatar
gandi
Merci pour la réponse!
Cordialement
Michel

Michel Gaboly a écrit:
Bonjour,

Voici une réponse de sur ce thème, faite le 3 janvier :


petite difficulté avec la validation de liste
quand on modifie une cellule par validation de liste, l'évènement
Worksheet_Change n'est pas activé
une méthode un peu tordue, utiliser un onglet masqué dans lequel on
écrit
µ (si B5 est la cellule modifiée par validation de liste)
et utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle
feuille pour détecter le changement de B5



Bonjour,
j'ai crée une zone de liste, liée à une cellule ("c1") . Cette zone de
liste contient les jours de la semaine. Quand j'active "lundi",
j'obtiens le chiffre 1 en c1; pour "mardi le chiffre 2 et ainsi de suite
jusqu'à dimanche .

J'aimerais qu'à l'affichage du chiffre 1 en "c1", dès que je clique sur
"lundi", se déclenche la macro 1 que j'ai mise dans le module 1 de la
feuille 1.

En feuille1 j'ai mis l' instruction suivante pour provoquer un
déclenchement automatique dès l'apparition des chiffre en "c1":
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = Range("c1").Address And Target.Value = "1" Then
Macro1
End Sub

Mais ça ne fonctionne pas!

Si par contre je frappe le chiffre 1 en "c1" et le valide depuis le
clavier, ma macro fonctionne. Je ne comprends pas pourquoi. Quelqu'un
pourrait-il m'expliquer et me trouver un solution à mon problème.

Merci

--

Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
gandi
Merci de m'avoir répondu aussi vite. Cependant j'ai un problème: je ne
suis pas doué en écriture de macros et je ne sais pas comment faire pour
: " utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle feuille pour détecter le changement de B5". (Dans mon cas, il
s'agit de "c1", mais ça revient sûrement au même!"

J'espère que vous aurez la patience de m'expliquer!
Bien cordialement
Michel

Michel Gaboly a écrit:
Bonjour,

Voici une réponse de sur ce thème, faite le 3 janvier :


petite difficulté avec la validation de liste
quand on modifie une cellule par validation de liste, l'évènement
Worksheet_Change n'est pas activé
une méthode un peu tordue, utiliser un onglet masqué dans lequel on
écrit
µ (si B5 est la cellule modifiée par validation de liste)
et utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle
feuille pour détecter le changement de B5



Bonjour,
j'ai crée une zone de liste, liée à une cellule ("c1") . Cette zone de
liste contient les jours de la semaine. Quand j'active "lundi",
j'obtiens le chiffre 1 en c1; pour "mardi le chiffre 2 et ainsi de suite
jusqu'à dimanche .

J'aimerais qu'à l'affichage du chiffre 1 en "c1", dès que je clique sur
"lundi", se déclenche la macro 1 que j'ai mise dans le module 1 de la
feuille 1.

En feuille1 j'ai mis l' instruction suivante pour provoquer un
déclenchement automatique dès l'apparition des chiffre en "c1":
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = Range("c1").Address And Target.Value = "1" Then
Macro1
End Sub

Mais ça ne fonctionne pas!

Si par contre je frappe le chiffre 1 en "c1" et le valide depuis le
clavier, ma macro fonctionne. Je ne comprends pas pourquoi. Quelqu'un
pourrait-il m'expliquer et me trouver un solution à mon problème.

Merci

--

Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
Michel Gaboly
Re,

Personnellement, je n'ai fait que transmettre ;-))


Merci pour la réponse!
Cordialement
Michel

Michel Gaboly a écrit:
Bonjour,

Voici une réponse de sur ce thème, faite le 3 janvier :


petite difficulté avec la validation de liste
quand on modifie une cellule par validation de liste, l'évènement
Worksheet_Change n'est pas activé
une méthode un peu tordue, utiliser un onglet masqué dans lequel on
écrit
µ (si B5 est la cellule modifiée par validation de liste)
et utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle
feuille pour détecter le changement de B5



Bonjour,
j'ai crée une zone de liste, liée à une cellule ("c1") . Cette zone de
liste contient les jours de la semaine. Quand j'active "lundi",
j'obtiens le chiffre 1 en c1; pour "mardi le chiffre 2 et ainsi de suite
jusqu'à dimanche .

J'aimerais qu'à l'affichage du chiffre 1 en "c1", dès que je clique sur
"lundi", se déclenche la macro 1 que j'ai mise dans le module 1 de la
feuille 1.

En feuille1 j'ai mis l' instruction suivante pour provoquer un
déclenchement automatique dès l'apparition des chiffre en "c1":
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = Range("c1").Address And Target.Value = "1" Then
Macro1
End Sub

Mais ça ne fonctionne pas!

Si par contre je frappe le chiffre 1 en "c1" et le valide depuis le
clavier, ma macro fonctionne. Je ne comprends pas pourquoi. Quelqu'un
pourrait-il m'expliquer et me trouver un solution à mon problème.

Merci

--

Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
gandi
Merci, je vais essayer de creuser la question.
Bonne soirée!

Michel Gaboly a écrit:
Re,

Personnellement, je n'ai fait que transmettre ;-))



Merci pour la réponse!
Cordialement
Michel

Michel Gaboly a écrit:

Bonjour,

Voici une réponse de sur ce thème, faite le 3 janvier :


petite difficulté avec la validation de liste
quand on modifie une cellule par validation de liste, l'évènement
Worksheet_Change n'est pas activé
une méthode un peu tordue, utiliser un onglet masqué dans lequel on
écrit
µ (si B5 est la cellule modifiée par validation de liste)
et utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle
feuille pour détecter le changement de B5




Bonjour,
j'ai crée une zone de liste, liée à une cellule ("c1") . Cette zone de
liste contient les jours de la semaine. Quand j'active "lundi",
j'obtiens le chiffre 1 en c1; pour "mardi le chiffre 2 et ainsi de suite
jusqu'à dimanche .

J'aimerais qu'à l'affichage du chiffre 1 en "c1", dès que je clique sur
"lundi", se déclenche la macro 1 que j'ai mise dans le module 1 de la
feuille 1.

En feuille1 j'ai mis l' instruction suivante pour provoquer un
déclenchement automatique dès l'apparition des chiffre en "c1":
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = Range("c1").Address And Target.Value = "1" Then
Macro1
End Sub

Mais ça ne fonctionne pas!

Si par contre je frappe le chiffre 1 en "c1" et le valide depuis le
clavier, ma macro fonctionne. Je ne comprends pas pourquoi. Quelqu'un
pourrait-il m'expliquer et me trouver un solution à mon problème.

Merci



--
Cordialement,

Michel Gaboly
http://www.gaboly.com






--
Cordialement,

Michel Gaboly
http://www.gaboly.com







Avatar
Michel Gaboly
Re,

Il faut insérer une nouvelle feuille, inscrire dans une cellule
quelconque, "A1" par exemple "þuil1!C1", (adapter le nom
de la feuille) et dans le module attaché à cette feuille, copier
le code qui ne marchait pas pour l'autre feuille :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = Range("A1").Address And Target = 1 Then Macro1
End Sub

NB - Le .Value pour Target (propriété par défaut) n'est pas
nécessaire, ni les guillemets autour de 1.

La référence de cellule doit correspondre à celle qui contient
la formule "þuil1!C1", au nom de feuille près.

A chaque modification de C1 dans la feuille initiale, y compris
par la liste de validation, la cellule A1 de la nouvelle feuille
sera également modifiée. La différence est que cette modification
-là résulte d'un recalcul, et déclenche toujours l'événement
Change, contrairement à la feuille d'origine, où cet événement
n'est pas déclenché par une modification résultant de l'emploi
de la liste de validation.

J'espère être assez clair ;-))



Merci de m'avoir répondu aussi vite. Cependant j'ai un problème: je ne
suis pas doué en écriture de macros et je ne sais pas comment faire pour
: " utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle feuille pour détecter le changement de B5". (Dans mon cas, il
s'agit de "c1", mais ça revient sûrement au même!"

J'espère que vous aurez la patience de m'expliquer!
Bien cordialement
Michel

Michel Gaboly a écrit:
Bonjour,

Voici une réponse de sur ce thème, faite le 3 janvier :


petite difficulté avec la validation de liste
quand on modifie une cellule par validation de liste, l'évènement
Worksheet_Change n'est pas activé
une méthode un peu tordue, utiliser un onglet masqué dans lequel on
écrit
µ (si B5 est la cellule modifiée par validation de liste)
et utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle
feuille pour détecter le changement de B5



Bonjour,
j'ai crée une zone de liste, liée à une cellule ("c1") . Cette zone de
liste contient les jours de la semaine. Quand j'active "lundi",
j'obtiens le chiffre 1 en c1; pour "mardi le chiffre 2 et ainsi de suite
jusqu'à dimanche .

J'aimerais qu'à l'affichage du chiffre 1 en "c1", dès que je clique sur
"lundi", se déclenche la macro 1 que j'ai mise dans le module 1 de la
feuille 1.

En feuille1 j'ai mis l' instruction suivante pour provoquer un
déclenchement automatique dès l'apparition des chiffre en "c1":
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = Range("c1").Address And Target.Value = "1" Then
Macro1
End Sub

Mais ça ne fonctionne pas!

Si par contre je frappe le chiffre 1 en "c1" et le valide depuis le
clavier, ma macro fonctionne. Je ne comprends pas pourquoi. Quelqu'un
pourrait-il m'expliquer et me trouver un solution à mon problème.

Merci

--

Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
AV
Pour que ça fonctionne, je te conseillerais ceci :

Ta liste de validation étant en C1 de Feuil1 (nom à adapter)
Tu rajoutes une feuille (peu importe son nom) qui n'aura que cette utilité
(masquée ?)
En A1 de la feuille ajoutée, tu mets þuil1!C1
Dans le module de cette feuille ajoutée (clic droit sur l'onglet > visualiser le
code)
Copier/coller :

Private Sub Worksheet_Calculate()
maMacro
End Sub

PS1 : maMacro est le nom de la macro que tu souhaites voir exécuter au
changement par la liste de validation
PS2 : l'événement Worksheet_Change, où qu'il soit situé, ne peut, dans ce cas de
figure, déclencher quoi que ce soit ! (en tout cas chez moi.)

AV

"gandi" a écrit dans le message news:

Merci de m'avoir répondu aussi vite. Cependant j'ai un problème: je ne
suis pas doué en écriture de macros et je ne sais pas comment faire pour
: " utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle feuille pour détecter le changement de B5". (Dans mon cas, il
s'agit de "c1", mais ça revient sûrement au même!"

J'espère que vous aurez la patience de m'expliquer!
Bien cordialement
Michel

Michel Gaboly a écrit:
Bonjour,

Voici une réponse de sur ce thème, faite le 3 janvier :


petite difficulté avec la validation de liste
quand on modifie une cellule par validation de liste, l'évènement
Worksheet_Change n'est pas activé
une méthode un peu tordue, utiliser un onglet masqué dans lequel on
écrit
µ (si B5 est la cellule modifiée par validation de liste)
et utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle
feuille pour détecter le changement de B5



Bonjour,
j'ai crée une zone de liste, liée à une cellule ("c1") . Cette zone de
liste contient les jours de la semaine. Quand j'active "lundi",
j'obtiens le chiffre 1 en c1; pour "mardi le chiffre 2 et ainsi de suite
jusqu'à dimanche .

J'aimerais qu'à l'affichage du chiffre 1 en "c1", dès que je clique sur
"lundi", se déclenche la macro 1 que j'ai mise dans le module 1 de la
feuille 1.

En feuille1 j'ai mis l' instruction suivante pour provoquer un
déclenchement automatique dès l'apparition des chiffre en "c1":
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = Range("c1").Address And Target.Value = "1" Then
Macro1
End Sub

Mais ça ne fonctionne pas!

Si par contre je frappe le chiffre 1 en "c1" et le valide depuis le
clavier, ma macro fonctionne. Je ne comprends pas pourquoi. Quelqu'un
pourrait-il m'expliquer et me trouver un solution à mon problème.

Merci

--

Cordialement,

Michel Gaboly
http://www.gaboly.com








Avatar
gandi
J'ai essayé une bonn partie de la soirée hier, mais ça n'a pas
fonctionné. "AV" vient de m'envoyer un début de réponse (voir message de
ce matin 5:21)
En tout cas merci!
Bonne journée
Michel

Michel Gaboly a écrit:
Re,

Il faut insérer une nouvelle feuille, inscrire dans une cellule
quelconque, "A1" par exemple "þuil1!C1", (adapter le nom
de la feuille) et dans le module attaché à cette feuille, copier
le code qui ne marchait pas pour l'autre feuille :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = Range("A1").Address And Target = 1 Then Macro1
End Sub

NB - Le .Value pour Target (propriété par défaut) n'est pas
nécessaire, ni les guillemets autour de 1.

La référence de cellule doit correspondre à celle qui contient
la formule "þuil1!C1", au nom de feuille près.

A chaque modification de C1 dans la feuille initiale, y compris
par la liste de validation, la cellule A1 de la nouvelle feuille
sera également modifiée. La différence est que cette modification
-là résulte d'un recalcul, et déclenche toujours l'événement
Change, contrairement à la feuille d'origine, où cet événement
n'est pas déclenché par une modification résultant de l'emploi
de la liste de validation.

J'espère être assez clair ;-))




Merci de m'avoir répondu aussi vite. Cependant j'ai un problème: je ne
suis pas doué en écriture de macros et je ne sais pas comment faire pour
: " utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle feuille pour détecter le changement de B5". (Dans mon cas, il
s'agit de "c1", mais ça revient sûrement au même!"

J'espère que vous aurez la patience de m'expliquer!
Bien cordialement
Michel

Michel Gaboly a écrit:

Bonjour,

Voici une réponse de sur ce thème, faite le 3 janvier :


petite difficulté avec la validation de liste
quand on modifie une cellule par validation de liste, l'évènement
Worksheet_Change n'est pas activé
une méthode un peu tordue, utiliser un onglet masqué dans lequel on
écrit
µ (si B5 est la cellule modifiée par validation de liste)
et utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle
feuille pour détecter le changement de B5




Bonjour,
j'ai crée une zone de liste, liée à une cellule ("c1") . Cette zone de
liste contient les jours de la semaine. Quand j'active "lundi",
j'obtiens le chiffre 1 en c1; pour "mardi le chiffre 2 et ainsi de suite
jusqu'à dimanche .

J'aimerais qu'à l'affichage du chiffre 1 en "c1", dès que je clique sur
"lundi", se déclenche la macro 1 que j'ai mise dans le module 1 de la
feuille 1.

En feuille1 j'ai mis l' instruction suivante pour provoquer un
déclenchement automatique dès l'apparition des chiffre en "c1":
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = Range("c1").Address And Target.Value = "1" Then
Macro1
End Sub

Mais ça ne fonctionne pas!

Si par contre je frappe le chiffre 1 en "c1" et le valide depuis le
clavier, ma macro fonctionne. Je ne comprends pas pourquoi. Quelqu'un
pourrait-il m'expliquer et me trouver un solution à mon problème.

Merci



--
Cordialement,

Michel Gaboly
http://www.gaboly.com






--
Cordialement,

Michel Gaboly
http://www.gaboly.com







Avatar
gandi
Bonjour et merci de t'être penché sur mon problème.
Ma macro s'est bien déclenchée, dès le premier essai, mais il y a encore
un problème qui n'est pas résolu.
Voila la situation:
J'ai une zone de liste (lundi, mardi, mercredi, jeudi, vendredi, samedi,
dimanche). Avec ta solution, ma macro de déclenche quel que soit
l'élément de la zone sur lequel je clique. Ce que j'aimerais faire,
c'est : si je clique sur "lundi" une macro1 se déclenche, si je clique
sur mardi, ce sera au tour de la macro2 et ainsi de suite......, mais
... tu connais mes compétences en la matière! :-)



AV a écrit:
Pour que ça fonctionne, je te conseillerais ceci :

Ta liste de validation étant en C1 de Feuil1 (nom à adapter)
Tu rajoutes une feuille (peu importe son nom) qui n'aura que cette utilité
(masquée ?)
En A1 de la feuille ajoutée, tu mets þuil1!C1
Dans le module de cette feuille ajoutée (clic droit sur l'onglet > visualiser le
code)
Copier/coller :

Private Sub Worksheet_Calculate()
maMacro
End Sub

PS1 : maMacro est le nom de la macro que tu souhaites voir exécuter au
changement par la liste de validation
PS2 : l'événement Worksheet_Change, où qu'il soit situé, ne peut, dans ce cas de
figure, déclencher quoi que ce soit ! (en tout cas chez moi.)

AV

"gandi" a écrit dans le message news:


Merci de m'avoir répondu aussi vite. Cependant j'ai un problème: je ne
suis pas doué en écriture de macros et je ne sais pas comment faire pour
: " utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle feuille pour détecter le changement de B5". (Dans mon cas, il
s'agit de "c1", mais ça revient sûrement au même!"

J'espère que vous aurez la patience de m'expliquer!
Bien cordialement
Michel

Michel Gaboly a écrit:

Bonjour,

Voici une réponse de sur ce thème, faite le 3 janvier :


petite difficulté avec la validation de liste
quand on modifie une cellule par validation de liste, l'évènement
Worksheet_Change n'est pas activé
une méthode un peu tordue, utiliser un onglet masqué dans lequel on
écrit
µ (si B5 est la cellule modifiée par validation de liste)
et utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle
feuille pour détecter le changement de B5




Bonjour,
j'ai crée une zone de liste, liée à une cellule ("c1") . Cette zone de
liste contient les jours de la semaine. Quand j'active "lundi",
j'obtiens le chiffre 1 en c1; pour "mardi le chiffre 2 et ainsi de suite
jusqu'à dimanche .

J'aimerais qu'à l'affichage du chiffre 1 en "c1", dès que je clique sur
"lundi", se déclenche la macro 1 que j'ai mise dans le module 1 de la
feuille 1.

En feuille1 j'ai mis l' instruction suivante pour provoquer un
déclenchement automatique dès l'apparition des chiffre en "c1":
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = Range("c1").Address And Target.Value = "1" Then
Macro1
End Sub

Mais ça ne fonctionne pas!

Si par contre je frappe le chiffre 1 en "c1" et le valide depuis le
clavier, ma macro fonctionne. Je ne comprends pas pourquoi. Quelqu'un
pourrait-il m'expliquer et me trouver un solution à mon problème.

Merci



--
Cordialement,

Michel Gaboly
http://www.gaboly.com












Avatar
Michel Gaboly
Bonjour,

Excuse-moi pour la mauvaise info. Je n'avais pas testé. ;-((

Private Sub Worksheet_Calculate()
Select Case Sheets("Feuil1").Range("C1")
Case "Lundi"
MsgBox 10
Case "Mardi"
MsgBox 20
Case "Mercredi"
MsgBox 30
Case ...
End Select
End Sub

En cas de difficulté, met les macros appelées dans un module standard, car
essayer de manipuler une feuille à partir de code situé dans une autre feuille
pose souvent des problèmes, liés aux objets Range.


Bonjour et merci de t'être penché sur mon problème.
Ma macro s'est bien déclenchée, dès le premier essai, mais il y a encore
un problème qui n'est pas résolu.
Voila la situation:
J'ai une zone de liste (lundi, mardi, mercredi, jeudi, vendredi, samedi,
dimanche). Avec ta solution, ma macro de déclenche quel que soit
l'élément de la zone sur lequel je clique. Ce que j'aimerais faire,
c'est : si je clique sur "lundi" une macro1 se déclenche, si je clique
sur mardi, ce sera au tour de la macro2 et ainsi de suite......, mais
... tu connais mes compétences en la matière! :-)

AV a écrit:
Pour que ça fonctionne, je te conseillerais ceci :

Ta liste de validation étant en C1 de Feuil1 (nom à adapter)
Tu rajoutes une feuille (peu importe son nom) qui n'aura que cette utilité
(masquée ?)
En A1 de la feuille ajoutée, tu mets þuil1!C1
Dans le module de cette feuille ajoutée (clic droit sur l'onglet > visualiser le
code)
Copier/coller :

Private Sub Worksheet_Calculate()
maMacro
End Sub

PS1 : maMacro est le nom de la macro que tu souhaites voir exécuter au
changement par la liste de validation
PS2 : l'événement Worksheet_Change, où qu'il soit situé, ne peut, dans ce cas de
figure, déclencher quoi que ce soit ! (en tout cas chez moi.)

AV

"gandi" a écrit dans le message news:


Merci de m'avoir répondu aussi vite. Cependant j'ai un problème: je ne
suis pas doué en écriture de macros et je ne sais pas comment faire pour
: " utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle feuille pour détecter le changement de B5". (Dans mon cas, il
s'agit de "c1", mais ça revient sûrement au même!"

J'espère que vous aurez la patience de m'expliquer!
Bien cordialement
Michel

Michel Gaboly a écrit:

Bonjour,

Voici une réponse de sur ce thème, faite le 3 janvier :


petite difficulté avec la validation de liste
quand on modifie une cellule par validation de liste, l'évènement
Worksheet_Change n'est pas activé
une méthode un peu tordue, utiliser un onglet masqué dans lequel on
écrit
µ (si B5 est la cellule modifiée par validation de liste)
et utiliser l'événement Private Sub Worksheet_Calculate() de la
nouvelle
feuille pour détecter le changement de B5




Bonjour,
j'ai crée une zone de liste, liée à une cellule ("c1") . Cette zone de
liste contient les jours de la semaine. Quand j'active "lundi",
j'obtiens le chiffre 1 en c1; pour "mardi le chiffre 2 et ainsi de suite
jusqu'à dimanche .

J'aimerais qu'à l'affichage du chiffre 1 en "c1", dès que je clique sur
"lundi", se déclenche la macro 1 que j'ai mise dans le module 1 de la
feuille 1.

En feuille1 j'ai mis l' instruction suivante pour provoquer un
déclenchement automatique dès l'apparition des chiffre en "c1":
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = Range("c1").Address And Target.Value = "1" Then
Macro1
End Sub

Mais ça ne fonctionne pas!

Si par contre je frappe le chiffre 1 en "c1" et le valide depuis le
clavier, ma macro fonctionne. Je ne comprends pas pourquoi. Quelqu'un
pourrait-il m'expliquer et me trouver un solution à mon problème.

Merci



--
Cordialement,

Michel Gaboly
http://www.gaboly.com










--
Cordialement,

Michel Gaboly
http://www.gaboly.com





1 2