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

Liste déroulante pour exécuter macro

4 réponses
Avatar
Tatane
Bonjour,

Après avoir longuement cherché sur le forum, je n'ai pas réussi à trouver.
Bref ...

Je voudrais lancer une macro à partir d'une liste déroulante
existante(Données/Validations...)

J'ai fai ceci mais rien ne se passe pour le lancement de la macro:

Private Sub Worksheet_Change(ByVal Target As Range)
'Sélectionner la signature en fonction du nom
If Target.Address = "$F$6" Then
Dim Adr1 As Range
Set Adr = Sheets("Expéditeurs").[B:B].Find(What:=Target.Value).Offset(0,
4)
x = "Expéditeurs!" & Adr.Address(0, 0)
With Sheets("BE")
.Shapes("Sign_1").Select
Selection.Formula = x
.Shapes("Sign_2").Select
Selection.Formula = x
.Shapes("Sign_3").Select
Selection.Formula = x
End With
[F6].Select
End If
' Lancer une macro à partir de la liste déroulante
Application.EnableEvents = False
If Target.Address = "$AE$13" And Target.Count = 1 Then
If UCase(Target.Value) = "Disquette" Then
Call macro1
End If
End If
Application.EnableEvents = True
End Sub

Si vous pouviez m'aider... Merci d'avance.

4 réponses

Avatar
Daniel
Bonjour.
Je n'ai pas examiné à fond ton code, mais il me semble que tu dois mettre :
Set Adr = Sheets("Expéditeurs").[B:B].Find(What:=Target.Offset(0, 4).value)
d'autre part :
If UCase(Target.Value) = "DISQUETTE" then
Cordialement.
Daniel
"Tatane" a écrit dans le message de news:

Bonjour,

Après avoir longuement cherché sur le forum, je n'ai pas réussi à trouver.
Bref ...

Je voudrais lancer une macro à partir d'une liste déroulante
existante(Données/Validations...)

J'ai fai ceci mais rien ne se passe pour le lancement de la macro:

Private Sub Worksheet_Change(ByVal Target As Range)
'Sélectionner la signature en fonction du nom
If Target.Address = "$F$6" Then
Dim Adr1 As Range
Set Adr =
Sheets("Expéditeurs").[B:B].Find(What:=Target.Value).Offset(0,
4)
x = "Expéditeurs!" & Adr.Address(0, 0)
With Sheets("BE")
.Shapes("Sign_1").Select
Selection.Formula = x
.Shapes("Sign_2").Select
Selection.Formula = x
.Shapes("Sign_3").Select
Selection.Formula = x
End With
[F6].Select
End If
' Lancer une macro à partir de la liste déroulante
Application.EnableEvents = False
If Target.Address = "$AE$13" And Target.Count = 1 Then
If UCase(Target.Value) = "Disquette" Then
Call macro1
End If
End If
Application.EnableEvents = True
End Sub

Si vous pouviez m'aider... Merci d'avance.


Avatar
Tatane
Merci de m'avoir mis sur la voie car:
- La première partie fonctionne parfaitement (signatures)
- Pour la ligne > If UCase(Target.Value) = "DISQUETTE" then
j'ai mis > If Target.Value = "Disquette" then
et là, tout fonctionne parfaitement.

Puisque je te tiens, dois-je répéter x fois ce code pour chacunes des
valeurs de la liste (ce que j'ai fait et ça marche bien) ou y a t'il une
astuce ?



Bonjour.
Je n'ai pas examiné à fond ton code, mais il me semble que tu dois mettre :
Set Adr = Sheets("Expéditeurs").[B:B].Find(What:=Target.Offset(0, 4).value)
d'autre part :
If UCase(Target.Value) = "DISQUETTE" then
Cordialement.
Daniel
"Tatane" a écrit dans le message de news:

Bonjour,

Après avoir longuement cherché sur le forum, je n'ai pas réussi à trouver.
Bref ...

Je voudrais lancer une macro à partir d'une liste déroulante
existante(Données/Validations...)

J'ai fai ceci mais rien ne se passe pour le lancement de la macro:

Private Sub Worksheet_Change(ByVal Target As Range)
'Sélectionner la signature en fonction du nom
If Target.Address = "$F$6" Then
Dim Adr1 As Range
Set Adr =
Sheets("Expéditeurs").[B:B].Find(What:=Target.Value).Offset(0,
4)
x = "Expéditeurs!" & Adr.Address(0, 0)
With Sheets("BE")
.Shapes("Sign_1").Select
Selection.Formula = x
.Shapes("Sign_2").Select
Selection.Formula = x
.Shapes("Sign_3").Select
Selection.Formula = x
End With
[F6].Select
End If
' Lancer une macro à partir de la liste déroulante
Application.EnableEvents = False
If Target.Address = "$AE$13" And Target.Count = 1 Then
If UCase(Target.Value) = "Disquette" Then
Call macro1
End If
End If
Application.EnableEvents = True
End Sub

Si vous pouviez m'aider... Merci d'avance.







Avatar
Daniel
Je ne vois pas comment faire une boucle de manière simple. Utilise seulement
ElseIf pour éviter de passer systématiquement sur tous les tests.
If Target.Value = "Disquette" then
....
ElseIf If Target.Value = "toto" then
....
End If

Daniel
"Tatane" a écrit dans le message de news:

Merci de m'avoir mis sur la voie car:
- La première partie fonctionne parfaitement (signatures)
- Pour la ligne > If UCase(Target.Value) = "DISQUETTE" then
j'ai mis > If Target.Value = "Disquette" then
et là, tout fonctionne parfaitement.

Puisque je te tiens, dois-je répéter x fois ce code pour chacunes des
valeurs de la liste (ce que j'ai fait et ça marche bien) ou y a t'il une
astuce ?



Bonjour.
Je n'ai pas examiné à fond ton code, mais il me semble que tu dois mettre
:
Set Adr = Sheets("Expéditeurs").[B:B].Find(What:=Target.Offset(0,
4).value)
d'autre part :
If UCase(Target.Value) = "DISQUETTE" then
Cordialement.
Daniel
"Tatane" a écrit dans le message de
news:

Bonjour,

Après avoir longuement cherché sur le forum, je n'ai pas réussi à
trouver.
Bref ...

Je voudrais lancer une macro à partir d'une liste déroulante
existante(Données/Validations...)

J'ai fai ceci mais rien ne se passe pour le lancement de la macro:

Private Sub Worksheet_Change(ByVal Target As Range)
'Sélectionner la signature en fonction du nom
If Target.Address = "$F$6" Then
Dim Adr1 As Range
Set Adr >> > Sheets("Expéditeurs").[B:B].Find(What:=Target.Value).Offset(0,
4)
x = "Expéditeurs!" & Adr.Address(0, 0)
With Sheets("BE")
.Shapes("Sign_1").Select
Selection.Formula = x
.Shapes("Sign_2").Select
Selection.Formula = x
.Shapes("Sign_3").Select
Selection.Formula = x
End With
[F6].Select
End If
' Lancer une macro à partir de la liste déroulante
Application.EnableEvents = False
If Target.Address = "$AE$13" And Target.Count = 1 Then
If UCase(Target.Value) = "Disquette" Then
Call macro1
End If
End If
Application.EnableEvents = True
End Sub

Si vous pouviez m'aider... Merci d'avance.









Avatar
Tatane
Super !
Voici l'extrait de mon code qui fonctionne parfaitement:

Private Sub Worksheet_Change(ByVal Target As Range) 'AV
'Sélectionner la signature en fonction du nom
If Target.Address = "$F$6" Then
Dim Adr1 As Range
Set Adr = Sheets("Expéditeurs").[B:B].Find(What:=Target.Value).Offset(0,
4)
x = "Expéditeurs!" & Adr.Address(0, 0)
With Sheets("BE")
.Shapes("Sign_1").Select
Selection.Formula = x
.Shapes("Sign_2").Select
Selection.Formula = x
.Shapes("Sign_3").Select
Selection.Formula = x
End With
[F6].Select
End If
' Imprimer "Enveloppe 22 x 11 cm"
Application.EnableEvents = False
If Target.Address = "$AE$13" And Target.Count = 1 Then
If Target.Value = "Enveloppe 22 x 11 cm" Then
Call Imp_ENV_22
' Imprimer "Enveloppe 26 x 30 cm"
ElseIf Target.Value = "Enveloppe 26 x 30 cm" Then
Call Imp_ENV_26
' Imprimer "Envoi A6"
ElseIf Target.Value = "A6 (10,5 x 14,9 cm)" Then
Call Imp_A6
' Imprimer "Envoi A5"
ElseIf Target.Value = "A5 (21 x 14,9 cm)" Then
Call Imp_A5
' Imprimer "Envoi A4"
ElseIf Target.Value = "A4 (21 x 29,7 cm)" Then
Call Imp_A4
' Imprimer "Envoi DISQUETTE"
ElseIf Target.Value = "Disquette" Then
Call Imp_DISQUETTE
' Imprimer "Envoi CD-DVD"
ElseIf Target.Value = "CD / DVD" Then
Call Imp_CD_DVD
End If
End If
Application.EnableEvents = True
End Sub

Encore merci et bonne journée.


Je ne vois pas comment faire une boucle de manière simple. Utilise seulement
ElseIf pour éviter de passer systématiquement sur tous les tests.
If Target.Value = "Disquette" then
.....
ElseIf If Target.Value = "toto" then
.....
End If

Daniel
"Tatane" a écrit dans le message de news:

Merci de m'avoir mis sur la voie car:
- La première partie fonctionne parfaitement (signatures)
- Pour la ligne > If UCase(Target.Value) = "DISQUETTE" then
j'ai mis > If Target.Value = "Disquette" then
et là, tout fonctionne parfaitement.

Puisque je te tiens, dois-je répéter x fois ce code pour chacunes des
valeurs de la liste (ce que j'ai fait et ça marche bien) ou y a t'il une
astuce ?



Bonjour.
Je n'ai pas examiné à fond ton code, mais il me semble que tu dois mettre
:
Set Adr = Sheets("Expéditeurs").[B:B].Find(What:=Target.Offset(0,
4).value)
d'autre part :
If UCase(Target.Value) = "DISQUETTE" then
Cordialement.
Daniel
"Tatane" a écrit dans le message de
news:

Bonjour,

Après avoir longuement cherché sur le forum, je n'ai pas réussi à
trouver.
Bref ...

Je voudrais lancer une macro à partir d'une liste déroulante
existante(Données/Validations...)

J'ai fai ceci mais rien ne se passe pour le lancement de la macro:

Private Sub Worksheet_Change(ByVal Target As Range)
'Sélectionner la signature en fonction du nom
If Target.Address = "$F$6" Then
Dim Adr1 As Range
Set Adr > >> > Sheets("Expéditeurs").[B:B].Find(What:=Target.Value).Offset(0,
4)
x = "Expéditeurs!" & Adr.Address(0, 0)
With Sheets("BE")
.Shapes("Sign_1").Select
Selection.Formula = x
.Shapes("Sign_2").Select
Selection.Formula = x
.Shapes("Sign_3").Select
Selection.Formula = x
End With
[F6].Select
End If
' Lancer une macro à partir de la liste déroulante
Application.EnableEvents = False
If Target.Address = "$AE$13" And Target.Count = 1 Then
If UCase(Target.Value) = "Disquette" Then
Call macro1
End If
End If
Application.EnableEvents = True
End Sub

Si vous pouviez m'aider... Merci d'avance.