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

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #4759561
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."
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.




Pierre F.
Le #4759351
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.

JB
Le #4759331
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."

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.



Pierre F.
Le #4759311
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.

JB
Le #4759261
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."

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.



Pierre F.
Le #4759241
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.

Hervé
Le #4759231
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." 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.




Publicité
Poster une réponse
Anonyme