Macro s'executant lors d'un choix dans un menu deroulant

Delux

XLDnaute Occasionnel
Bonjour a tous,

(je m'excuse par avance pour les accents manquants car j'ecris avec un qwerty)

Alors voila, j'aimerais que ma macro s'execute lorsque l'on fait un choix dans un menu deroulant se trouvant dans la cellule "C5".

J'ai bien essaye avec :

Code:
If Not Application.Intersect(Target, Range("C5")) Is Nothing Then

ou

If Target.Address = Range("C5").Address Then

Mais voila, le probleme est que j'ai une formule dans ce menu deroulant (validation de donnees) qui me permet en ecrivant la premiere lettre du mot rechercher de faire une sorte de filtre

Code:
=IF(C5<>"",OFFSET($D$204:$D$459,MATCH(C5,LEFT($D$204:$D$459,LEN(C5)),0)-1,,SUM((LEFT($D$204:$D$459,LEN(C5))=C5)*1)),)

Il faudrait donc que la macro s'execute, non pas quand je saisis la premiere lettre, mais dans un deuxieme temps lorsque que je fais mon choix dans le menu deroulant.

1) Je saisis la premiere lettre en C5
2) Je fais mon choix dans le menu deroulant (qui a ete filtre par la formule)
3) la macro se lance

Actuellement, la macro plante (Run-Time Error '13' Type Mismatch) vu qu'elle s'execute avant le choix dans le menu deroulant

Merci par avance pour votre aide

Cordialement,

Delux
 
Dernière édition:

Delux

XLDnaute Occasionnel
Re : Macro s'executant lors d'un choix dans un menu deroulant

Bonjour PierreJean,

Je ne l'avais pas attache car il est tres volumineux.
J'ai finalement reussi a l'alleger.

Cordialement,

Delux
 

Pièces jointes

  • Example.xls
    107 KB · Affichages: 96
  • Example.xls
    107 KB · Affichages: 88
  • Example.xls
    107 KB · Affichages: 83

Dormeur74

XLDnaute Occasionnel
Re : Macro s'executant lors d'un choix dans un menu deroulant

Si tu tapes Alt+F11 pour accéder à VBA, et si tu fais un double-clic sur Module 1, tu vois 4 macros.

Code:
Option Explicit

Sub Macro1()
    MsgBox "Macro n° 1"
End Sub

Sub Macro2()
    MsgBox "Macro n° 2"
End Sub

Sub Macro3()
    MsgBox "Macro n° 3"
End Sub


Sub Macro()
    Select Case Range("C5")
        Case 1: Call Macro1
        Case 2: Call Macro2
        Case 3: Call Macro3
    End Select
End Sub

La macro qui dispatche s'appelle Macro(). Elle va lire le contenu de la cellule C5 qui ne peut contenir que 3 valeur : 1, 2 ou 3
En fonction du choix de l'utilisateur, elle lance elle-même la macro qui va bien.

Sur la feuille Excel, tu places où tu veux une ComboBox que tu prends dans les Outils "Formulaire" (à ne pas confondre avec les outils "Contrôle").
Clic droit sur la Combo : Affecter une macro...tu sélectionnes Macro...OK
Clic droit sur la combo : Format de contrôle

En plage d'entrée tu tapes =E1:E3
En cellule liée, tu tapes C5

C'est tout.
 

marouan

XLDnaute Nouveau
Re : Macro s'executant lors d'un choix dans un menu deroulant

bonjour j' ai besoin d'aide et ce le plus rapidement possible je me bats avec un tableau afin de pouvoir le rendre dans les temps je fais appel au fine gachette de ce site pour pouvoir m 'aider. voila j ai un pbl j ai un fichier avec pres de 2900 référence source dans lequelle je souhaiterais rappatrier des valeurs dans des fichiers excels au total plus de 2000
8 informations colonnes . j'ai essayer de faire de la macro vba mais sa me prend trop de temps et malheureusement j'en ai plus trop.
le format des fichiers excels et différents dont les information ne sont pas tous au meme emplacement.
puis créer un liste déroulante feuille lancement pour affiner ma recherche par region / ville / raison sociale
 

marouan

XLDnaute Nouveau
Re : Macro s'executant lors d'un choix dans un menu deroulant

+ docs plus essai macro

Sub essai()

Dim Fiche_Recap As Worksheet
Dim Fiche_Source As Worksheet
Dim Deb_Lste As Range
Dim Fin_Lste As Range
Dim Liste_Frs As Range
Dim Frs As String
Dim MaCell


Set Fiche_Recap = ThisWorkbook.Worksheets("Fiche1")
Set Deb_Lste = Fiche_Recap.Range("B23")
Set Fin_Lste = Fiche_Recap.Range("B2990")
Set Liste_Frs = Range(Deb_Lste, Fin_Lste)



Set Fiche_Source = Workbooks("D75-Srce.xls").Worksheets("Page 1")



Fiche_Source.Activate
Range("A2").Select
suite:
If ActiveCell.Value = "Effectif moyen :" Then
ActiveCell.Offset(0, 2).Copy
Else
ActiveCell.Offset(1, 0).Select
GoTo suite
End If
Fiche_Recap.Activate
Fiche_Source.Activate
Range("J1").Select '

Faire:
If ActiveCell.Value <> "" Then
GoTo Ecrire
Else
ActiveCell.Offset(1, 0).Activate
GoTo Faire
End If

Ecrire:
ActiveCell.Offset(0, 1).Activate
ActiveCell.FormulaR1C1 = "=REPLACE(RC[-1],1,18,"""")"
Frs = ActiveCell.Value

Fiche_Recap.Activate
'MaCell = Frs

Set MaCell = Liste_Frs.Find(What:=Frs, LookIn:=xlValues, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False)

If Not MaCell Is Nothing Then
MaCell.Offset(0, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If

End Sub
 

Pièces jointes

  • Classeur1.xls
    24 KB · Affichages: 85
  • Classeur1.xls
    24 KB · Affichages: 89
  • Classeur1.xls
    24 KB · Affichages: 70

Dormeur74

XLDnaute Occasionnel
Re : Macro s'executant lors d'un choix dans un menu deroulant

marouan, ce n'est pas une bonne idée que de lancer un appel au secours sur le fil de Delux qui n'a rien à voir avec ton besoin.
Si tu veux un coup de main, tu crées ton propre fil et tu proposes le fichier Excel qui te pose pb.
 

pierrejean

XLDnaute Barbatruc
Re : Macro s'executant lors d'un choix dans un menu deroulant

Bonjour Dormeur 74

Veux-tu tester avec cette modification:
If Not Application.Intersect(Target, Range("C5")) Is Nothing And Len(Target.Value) > 1 Then
 

Pièces jointes

  • Example.xls
    107.5 KB · Affichages: 108
  • Example.xls
    107.5 KB · Affichages: 118
  • Example.xls
    107.5 KB · Affichages: 107

Delux

XLDnaute Occasionnel
Re : Macro s'executant lors d'un choix dans un menu deroulant

Si tu tapes Alt+F11 pour accéder à VBA, et si tu fais un double-clic sur Module 1, tu vois 4 macros.

Code:
Option Explicit

Sub Macro1()
    MsgBox "Macro n° 1"
End Sub

Sub Macro2()
    MsgBox "Macro n° 2"
End Sub

Sub Macro3()
    MsgBox "Macro n° 3"
End Sub


Sub Macro()
    Select Case Range("C5")
        Case 1: Call Macro1
        Case 2: Call Macro2
        Case 3: Call Macro3
    End Select
End Sub

La macro qui dispatche s'appelle Macro(). Elle va lire le contenu de la cellule C5 qui ne peut contenir que 3 valeur : 1, 2 ou 3
En fonction du choix de l'utilisateur, elle lance elle-même la macro qui va bien.

Sur la feuille Excel, tu places où tu veux une ComboBox que tu prends dans les Outils "Formulaire" (à ne pas confondre avec les outils "Contrôle").
Clic droit sur la Combo : Affecter une macro...tu sélectionnes Macro...OK
Clic droit sur la combo : Format de contrôle

En plage d'entrée tu tapes =E1:E3
En cellule liée, tu tapes C5

C'est tout.

Dormeur74,

Si j'ai bien compris, la personne qui va faire un choix dans la liste deroulante va devoir faire un choix de macro a lancer egalement?

Moi je pensais plutot a quelque chose du genre :
1er changer = on tappe la lettre (ne rien faire)
2eme changement = choix dans la liste (macro se lance)
 
Dernière édition:

Dormeur74

XLDnaute Occasionnel
Re : Macro s'executant lors d'un choix dans un menu deroulant

Bonjour pierrejean,
Je viens de lancer, chez moi, ça fonctionne nickel-chrome.
C'est agréable de lire du code comme celui-ci.
Je pense qu'il est plus proche du besoin de Delux par rapport à sa formulation initiale.
 

Delux

XLDnaute Occasionnel
Re : Macro s'executant lors d'un choix dans un menu deroulant

Bonjour pierrejean,
Je viens de lancer, chez moi, ça fonctionne nickel-chrome.
C'est agréable de lire du code comme celui-ci.
Je pense qu'il est plus proche du besoin de Delux par rapport à sa formulation initiale.

Dormeur74,

Je ne sais pas comment tu appliques ta methode.
Pourrais tu, si tu as le temps, l'appliquer sur mon fichier exemple que je puisse voir comment ca fonctionne (desole je fais mon St Thomas:rolleyes: )

Merci d'avance
 

Dormeur74

XLDnaute Occasionnel
Re : Macro s'executant lors d'un choix dans un menu deroulant

Moi je pensais plutot a quelque chose du genre :
1er changer = on tappe la lettre (ne rien faire)
2eme changement = choix dans la liste (macro se lance)

La solution que t'a proposé pierrejean me semble correspondre à ton besoin. Je me suis contenté de te montrer comment on pouvait lancer une macro à partir d'un choix dans une liste déroulante contenant n'importe quoi (si tu y mets des noms de fleurs, ça marche aussi :) ).
 

Delux

XLDnaute Occasionnel
Re : Macro s'executant lors d'un choix dans un menu deroulant

Dormeur74,

En fait, on dirait que la solution que tu me donnes ne fonctionne pas.
LE probleme etant que lorsque je tappe la premiere lettre pour faire apparaitre le filtre (grace a la formule contenue dans "validation de donnees") la macro s'execute et donc ne reconnaissant pas les donnees du menu deroulant, et donc elle plante.
Sans trop abuser, pourrais-tu essayer de l'appliquer sur le fichier que vient d'envoyer PierreJean et uploader le fichier pour que je puisse voir comment cela fonctionne? Car la je ne comprends pas trop et quand j'essaye la macro s'arrete.

La liste des entree se trouve en D203

Je te remercie de ta patience
 

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 761
Membres
103 661
dernier inscrit
fcleves