Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion Delux
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
Re : Macro s'executant lors d'un choix dans un menu deroulant

salut

et Si... tu essayais (sans passer par EMPTY) ?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address <> "$C$5" Then Exit Sub
  For l = 15 To Cells(Rows.Count, "B").End(xlUp).Row
     Rows(l).Hidden = Cells(l, "C") = ""
  Next
  Range("C5").Select
End Sub

(clic droit sur le nom de l'onglet, Visualiser le code puis code du code ci-dessus)
 
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

Bonjour à tous
Je savais que mon niveau de vba était relativement faible mais là... C'est carrément du chinois. j'ai lu l'aide sur intercept mais j'ai quand même rien compris.
Pourrais-tu m'expliquer cette ligne s'il t eplait ?

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

Re
Application.intersect(Target,range("C5")) definit le range a l'intersection des ranges Target et Range("C5")
ICI il s'agit de 2 cellules ,par consequent s'il y a une intersection c'est qu'il s'agit de la meme
Si elles etaient differentes le resultat serait Nothing (rien)
Not is Nothing dit donc que Target et range ("C5") c'est la meme chose
(pour ma part j'aurais ecrit If target.Adress="$C$5" then )
On ajoute que la valeur contenue dans C5 doit avoir une longueur >1 pour continuer la macro
 
Re : Macro s'executant lors d'un choix dans un menu deroulant

Je pense que la proposition de pierrejean, dans sa dernière pièce jointe, devrait te donner satisfaction.

Cela dit, je ne passerais pas à côté de ce que Microsoft a eu la bonté d'implémenter dans ses suites.
Une simple Userform contenant une Combobox comme dans l'exemple (photographie) ci-joint permet de scanner ce qui est frappé au clavier.
 

Pièces jointes

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

Moi aussi
Et il fonctionne (en tout cas en ce qui concerne la ligne dont tu parles) !!
Tu peux cependant tester le remplacement par:
Code:
If Target.Address="$C$5" [I]And Len(Target.Value) > 1[/I] Then
 
Re : Macro s'executant lors d'un choix dans un menu deroulant[RESOLU]

Moi aussi
Et il fonctionne (en tout cas en ce qui concerne la ligne dont tu parles) !!
Tu peux cependant tester le remplacement par:
Code:
If Target.Address="$C$5" And Len(Target.Value) > 1 Then

Mon cher Pierrejean,

Toutes mes felicitations 🙂
Maintenant cela fonctionne et sans faire d'erreur 🙂

Merci a tous pour votre aide si precieuse.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…