Menu contextuel sur un CommandButton

Bonsoir à tous,

Dans un USF, j’ai un bouton "Magasin" sur lequel je souhaiterais, lors d’un clique, faire apparaitre un menu contextuel qui affiche tous les noms des magasins présents dans la colonne A (Sans doublons).

En choisissant un nom, le caption du bouton change pour « Magasin X » et un filtre est appliqué sur le tableau A1:C6 selon le nom du magasin choisi.

Le résultat est affiché dans une nouvelle feuille nommé X.

Merci d’avance.

Bonsoir

Je ne réponds pas à ce que tu as demandé, mais je te propose une alternative au menu contextuel

119apt-combobox-v001.zip (17.55 Ko)

Bonsoir Banzai64,

Ca marche bien ta solution. Merci.

Voila un exemple d'un menu contextuel pour les cellules d'une feuille.

http://www.bygsoftware.com/Excel/VBA/PopUpMenuDemo.htm

Et j'aimerais bien l'adapter pour un CommandButton dans un USF.

Merci.

Bonjour

Désolé mais je ne me lance pas dans cette aventure

Surement que quelqu'un t'aidera

Bonne nuit

Bon, merci Banzai64.

J'attendrais que d'autres se pencheront sur le sujet.

Bonsoir,

Un autre essai en PJ, sans résultat.

Merci.

53popup-usf-v001.zip (12.42 Ko)

Bonjour à tous,

Voila une nouvelle version combiné avec le code de Banzai64.

Seulement en cliquant sur un item de mon menu contextuel, j'ai une erreur 400 !

43popup-usf-v002.zip (14.27 Ko)

Bonjour,

Une solution (mais cette solution est fortement déconseillée)

Sub Creation_Mon_Menu()
    Dim MaBarre As CommandBar
    Dim i As Integer, Mg As String
    On Error Resume Next
    Application.CommandBars("ClicDroit").Delete

    Set MaBarre = Application.CommandBars _
                  .Add(Name:="ClicDroit", Position:=msoBarPopup)

    For i = 1 To [N1].Value
        Mg = Range("O" & i)
        With MaBarre
            .Controls.Add Type:=msoControlButton
            .Controls(i).OnAction = "Act" & Mg
            .Controls(i).Caption = Mg
        End With
    Next i
    MaBarre.ShowPopup
End Sub
Sub ActA(): Com ("A"): End Sub
Sub ActB(): Com ("B"): End Sub
Sub ActC(): Com ("C"): End Sub
Sub Com(M$)

    Dim Ws As Worksheet
    Dim Nblg As Long

    Application.ScreenUpdating = False
    Set Ws = Sheets("Feuil1")
    Nblg = Ws.Range("A" & Rows.Count).End(xlUp).Row

    If FeuilleExiste(M) = False Then
        Sheets.Add after:=Sheets(Sheets.Count)
        ActiveSheet.Name = M
        Ws.Select
    End If

    Sheets(M).Cells.Clear
    With Ws.Range("A1:C" & Nblg)
        .AutoFilter field:=1, Criteria1:=M
        .SpecialCells(xlCellTypeVisible).Copy Sheets(M).Range("A1")
        .AutoFilter
    End With
    Application.ScreenUpdating = True
End Sub

Une solution du type Banzai64 est sans doute bien préférable (quitte à rendre le Combo invisible et à ne le montrer qu'après appui sur le bouton)

A+

Bonjour galopin01, le fil

Merci pour le code.

Une solution du type Banzai64 est sans doute bien préférable (quitte à rendre le Combo invisible et à ne le montrer qu'après appui sur le bouton)

A+

Voir en PJ, le formulaire que j'utilise.

Peux-tu me conseiller comment mettre un ComBoBox dedans ?

S'il y a une meilleure proposition pour placer les boutons, je suis preneur

Merci d'avance.

73testrapport.zip (9.39 Ko)

Bonjour,

Effectivement on doit pouvoir améliorer mais...

Pour moi ce genre de questions en forme de poupées russes n'est pas acceptable.

Ou tu nous donne ton fichier avec tout le code et juste quelques enregisrements bidons pour tester sinon avec juste quelques rondelles du saucisson à chaque fois, c'est pas mon truc de "tirer les vers du nez" en permanence.

A+

Rechercher des sujets similaires à "menu contextuel commandbutton"