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

Liste déroulante et macros: s'arracher la tête !!

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

Malgré un nombre considérable de contributions sur ce sujet dans le
forum, je n'arrive pas à me dépêtrer de cette situation pourtant simple:

En BA4:BA8, j'ai nommé une plage "Tata"
Avec le formulaire j'ai créé une liste déroulante qui fait appel à
"tata" et qui est liée à la cellule C1

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

Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$C$1" Then Exit Sub
Application.Run "Impr" & Application.Match(zz.Value, [Volees], 0)
End Sub

J'ai créé, dans un module standard, 6 macros qui ont pour noms:

Impr1, Impr2, Impr3... qui, après avoir sélectionné une certaine zone,
l'impriment.

... et ça ne fonctionne pas ???????

Je pense que le problème vient du début de la ligne
>> If zz.Address <> "$C$1" Then Exit Sub

mais je sèche!!

J'ai essayé de mettre if C1 = 1, 2... mais rein de mieux.

Merci pour votre aide.

Cordialement,
Pierre F.

7 réponses

Avatar
JB
Bonjour,

La valeur reçue dans C1 ne doit pas exister dans [Volees]

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
temp = Application.Match(Target.Value, [Volees], 0)
If Not IsError(temp) Then
Application.Run "Impr" & Application.Match(Target.Value,
[Volees], 0)
Else
MsgBox "non trouvé"
End If
End If
End Sub

Pourquoi utiliser C1:

Private Sub ComboBox1_Change()
Application.Run "Impr" & Application.Match(ComboBox1.Value,
[Volees], 0)
End Sub

JB

On 28 août, 17:44, "Pierre F." wrote:
Bonjour à toutes et tous...

Malgré un nombre considérable de contributions sur ce sujet dans le
forum, je n'arrive pas à me dépêtrer de cette situation pourtant si mple:

En BA4:BA8, j'ai nommé une plage "Tata"
Avec le formulaire j'ai créé une liste déroulante qui fait appel à
"tata" et qui est liée à la cellule C1


Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$C$1" Then Exit Sub
Application.Run "Impr" & Application.Match(zz.Value, [Volees], 0)
End Sub

J'ai créé, dans un module standard, 6 macros qui ont pour noms:

Impr1, Impr2, Impr3... qui, après avoir sélectionné une certaine zo ne,
l'impriment.

... et ça ne fonctionne pas ???????

Je pense que le problème vient du début de la ligne
If zz.Address <> "$C$1" Then Exit Sub



mais je sèche!!

J'ai essayé de mettre if C1 = 1, 2... mais rein de mieux.

Merci pour votre aide.

Cordialement,
Pierre F.




Avatar
Pierre F.
Bonjour,

La valeur reçue dans C1 ne doit pas exister dans [Volees]


Pas de problème, ce sont des mots

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
temp = Application.Match(Target.Value, [Volees], 0)
If Not IsError(temp) Then
Application.Run "Impr" & Application.Match(Target.Value,
[Volees], 0)
Else
MsgBox "non trouvé"
End If
End If
End Sub


Bonsoir et merci pour la réponse... mais

Désolé, ça ne marche toujours pas ????##$$!!

http://cjoint.com/?iCuuMdgqCO


Pourquoi utiliser C1:

Private Sub ComboBox1_Change()
Application.Run "Impr" & Application.Match(ComboBox1.Value,
[Volees], 0)
End Sub



Est-ce que l'objet "liste déroulante" fait avec le formulaire est un Combox?

Cordialement,
Pierre F.

Avatar
JB
Le menu déroulant que tu as ne déclenche pas un évennement. Je l'ai
remplacé par Données/Valid/Liste.

http://cjoint.com/?iCuVKnOYoG

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
Application.Run "Impr" & Application.Match(Target.Value,
[Volees], 0)
End If
End Sub

JB
On 28 août, 20:23, "Pierre F." wrote:

Bonjour,

La valeur reçue dans C1 ne doit pas exister dans [Volees]


Pas de problème, ce sont des mots

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
temp = Application.Match(Target.Value, [Volees], 0)
If Not IsError(temp) Then
Application.Run "Impr" & Application.Match(Target.Value,
[Volees], 0)
Else
MsgBox "non trouvé"
End If
End If
End Sub


Bonsoir et merci pour la réponse... mais

Désolé, ça ne marche toujours pas ????##$$!!

http://cjoint.com/?iCuuMdgqCO

Pourquoi utiliser C1:

Private Sub ComboBox1_Change()
Application.Run "Impr" & Application.Match(ComboBox1.Value,
[Volees], 0)
End Sub


Est-ce que l'objet "liste déroulante" fait avec le formulaire est un Co mbox?

Cordialement,
Pierre F.



Avatar
Pierre F.
Le menu déroulant que tu as ne déclenche pas un évennement. Je l'ai
remplacé par Données/Valid/Liste.

http://cjoint.com/?iCuVKnOYoG

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
Application.Run "Impr" & Application.Match(Target.Value,
[Volees], 0)
End If
End Sub



Oui, mais justement je ne voulais pas de Données/Valid/Liste (j'avais
même réussi à la faire fonctionner :-)) parce qu'on ne voit pas la
"flèche" sans cliquer dans la cellule.
C'est pourquoi j'ai choisi la liste du formulaire.

Cordialement,
Pierre F.

Avatar
JB
Dans un module:

Sub Imprime()
Application.Run "Impr" & [C1]
End Sub

Sur la liste: clic-droit/affecter une macro

http://cjoint.com/?iCvrieFPnz

JB


On 28 août, 20:56, "Pierre F." wrote:

Le menu déroulant que tu as ne déclenche pas un évennement. Je l' ai
remplacé par Données/Valid/Liste.

http://cjoint.com/?iCuVKnOYoG

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
Application.Run "Impr" & Application.Match(Target.Value,
[Volees], 0)
End If
End Sub


Oui, mais justement je ne voulais pas de Données/Valid/Liste (j'avais
même réussi à la faire fonctionner :-)) parce qu'on ne voit pas la
"flèche" sans cliquer dans la cellule.
C'est pourquoi j'ai choisi la liste du formulaire.

Cordialement,
Pierre F.



Avatar
Pierre F.
Dans un module:

Sub Imprime()
Application.Run "Impr" & [C1]
End Sub

Sur la liste: clic-droit/affecter une macro

http://cjoint.com/?iCvrieFPnz



Cette fois c'est tout bon !!

Merci... je peux reposer ma tête :-)

Cordialement,
Pierre F.

Avatar
Hervé
Bonsoir Pierre,
Ici, évite les crochet, utilise Range("") :

Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$C$1" Then Exit Sub
Application.Run "Impr" & _
Application.Match(zz.Value, Range("Volee"), 0)
End Sub

Hervé.

"Pierre F." a écrit dans le message de news:
3af49$46d442d6$55da2ea5$
Bonjour à toutes et tous...

Malgré un nombre considérable de contributions sur ce sujet dans le
forum, je n'arrive pas à me dépêtrer de cette situation pourtant simple:

En BA4:BA8, j'ai nommé une plage "Tata"
Avec le formulaire j'ai créé une liste déroulante qui fait appel à
"tata" et qui est liée à la cellule C1


Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$C$1" Then Exit Sub
Application.Run "Impr" & Application.Match(zz.Value, [Volees], 0)
End Sub

J'ai créé, dans un module standard, 6 macros qui ont pour noms:

Impr1, Impr2, Impr3... qui, après avoir sélectionné une certaine zone,
l'impriment.

... et ça ne fonctionne pas ???????

Je pense que le problème vient du début de la ligne
If zz.Address <> "$C$1" Then Exit Sub



mais je sèche!!

J'ai essayé de mettre if C1 = 1, 2... mais rein de mieux.

Merci pour votre aide.

Cordialement,
Pierre F.