Affecter des macros à une liste déroulante

Bonjour!

Dans notre fichier de suivi, on avait des boutons pour appliquer rapidement des filtres et tris. Les tâches se sont complexifiées et l'espace pour ajouter des boutons étant limité, j'essaie de les changer par une liste déroulante pour avoir accès à plus de macros selon la tâche que nous voulons faire.

Ça semble tout à fait faisable vu les nombreux post sur les forums à ce sujet, mais je n'arrive pas à le rendre fonctionnel. Quelque chose doit m'échapper, je ne suis pas très bonne en VBA et fais du essai-erreur avec les codes que je trouve en ligne.

Ci-joint mon fichier. J'ai laissé les anciens boutons sur la droite en haut au cas où ce serait utile.

Merci d'avance pour votre aide et n'hésitez pas si ce n'est pas clair ou si j'ai omis une information!

37exemple.zip (302.29 Ko)

Bonsoir

pour cela il faut insérer un objet de type liste déroulante comme active X et pas contrôle formulaire...

image

Ensuite dans le code de la feuille on peut travaillé sur l'évènement change de la comboBox

image

Ci joint ton fichier en retour

101exemple.zip (302.73 Ko)

Fred

Bonsoir,

Vous mélangez les liste de choix qui modifient une valeur dans une cellule et une liste de choix par Contrôle de type formulaire ou ActiveX.

Ici votre liste de choix est fait par un combobox de type ActiveX, il suffit de faire dans le code "Change" du contrôle un test sur sa valeur :

Private Sub Options_de_tri_Change()
'    If Not Intersect(Target, Range("G1")) Is Nothing Then
        Application.ScreenUpdating = True
        Select Case Options_de_tri.Value
            Case "Émilie": Tri_pour_agente_admission
            Case "Christian": Tri_pour_conseiller_1er_cycle
            Case "Marie-Claude 1er cycle": Tri_pour_conseiller_2e_3e_cycle
        End Select
'    End If
End Sub

A ce moment là cela fonctionne. Il n'y a dans ce cas aucune interaction avec la feuille donc votre test de "intersect" aboutissait systématiquement à rien...

A vous de créer un code pour la valeur "tout afficher".

@ bientôt

LouReeD

Bonsoir fred2406 !

je suis un peu lent... normal sur Excel... je suis Excel lent !

@ bientôt

LouReeD

Salut LouReeD...

Cela faisait longtemps...

A+

Est-ce que je peux surfer sur le même sujet vu que c'est le même élément qui est concerné?

La liste marche #1 pour moi, mais quand mon collègue l'utilise, la liste change de taille chaque fois qu'il clique dessus et disparaît éventuellement.

J'avais eu le même problème pour mes boutons que j'avais résolu en rajoutant _MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single), mais ça ne marche pas pour la liste déroulante.

On a le même système d'exploitation et la même version d'Office.

Bonsoir,

le plus simple est d'éviter des contrôles ActiveX si le besoin n'est pas 100% utile.
je vous propose donc ce que vous aviez fait "au départ", c'est à dire une liste de choix avec une détection événementielle sur la feuille qui va surveiller la cellule G1, dès que sa valeur change alors le code approprié sera lancé.

@ bientôt

LouReeD

Bonsoir,

le fichier modifié dans ce sens :

@ bientôt

LouReeD

@LouReeD génial ça marche super bien pour tout le monde maintenant, merci pour tout!

Bonsoir,

merci pour votre retour ainsi que les remerciements !

@ bientôt

LouReeD

Rechercher des sujets similaires à "affecter macros liste deroulante"