Menu Contextuel

FRED20000 Messages postés 3 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 21 novembre 2006 - 15 nov. 2006 à 11:20
FRED20000 Messages postés 3 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 21 novembre 2006 - 21 nov. 2006 à 10:44
Bonjour,
Je suis sur Vba Excel.
Dans un UserForm, quand je clic gauche sur un CommandButton, j'aimerai faire apparaître un menu personnalisé (style contextuel). Est ce possible car après quelques recherches, je n'ai rien trouvé.
Merci.

6 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 nov. 2006 à 12:56
en vb6, c'est la commande popupmenu, mais existe-t-elle en vba ???
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 nov. 2006 à 02:03
Salut,

(DarkSidious, ne sous-estime pas la force de VBA )

oui, tu peux soit créer un menu style le pavé de visual basic, c-est à dire déplaçable sur l-écran. (désolé, mais je ne sais plus la commande, je regarderai, au cas où).

Sinon, tu peux créer un menu en plus dans excel :

' *** A appeler à l'-ouverture- du
classeur
' Cette procédure doit être placée dans
un module

Sub CreerMenu()
    Dim NewMenu As CommandBarPopup
    Dim MenuItem As CommandBarControl
    
' Créer le Menu
Set NewMenu =  Application.CommandBars("Worksheet Menu Bar").Controls.Add(msoControlPopup, , , 10, False)
NewMenu.Caption = "Caption de ton menu"
NewMenu.Visible = True

' Créer le
Sous-Menu'''''''''''''''''''''''''''''''''''''''''
Set MenuItem = NewMenu.Controls.Add(msoControlButton)       '
                                                            '
With MenuItem                                               '
    .Caption = "Nom del'action à
effectuer"          '
    .OnAction = "Nom de la sub à exécuter" '
    .BeginGroup = True ' ça
c'est pour faire un trait séparateur
'                        mais ce n'est pas obligatoire
End With                                                    '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set MenuItem = NewMenu.Controls.Add(msoControlButton)       '
                                                            '
With MenuItem                                               '
    .Caption = "Nom del'action à
effectuer"               '
    .OnAction = "Nom de la sub à exécuter"      '
End With                                                    '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'   et ainsi de suite...
End Sub

'
*** A appeler à la - fermeture - du classeur
' Cette
procédure doit aussi être placée dans le module

Sub SupprMenu()
    On Error Resume Next
    Application.CommandBars("Worksheet Menu Bar").Controls("Caption du menu").Delete
End Sub

--Mortalino--

@++

<hr size ="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 nov. 2006 à 02:13
Eh eh, merci enregistreur de macro :

Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 16/11/2006 par Mortalino
'

'
    Application.CommandBars.Add(Name:="Ma Barre
Outils").Visible = True
    Application.CommandBars("Ma Barre Outils").Controls.Add Type:= _
        msoControlButton, ID:=21, Before:=1 ' couper
    Application.CommandBars("Ma Barre Outils").Controls.Add Type:= _
        msoControlButton, ID:=19, Before:=2 ' copier
    Application.CommandBars("Ma Barre Outils").Controls.Add Type:= _
        msoControlButton, ID:=2, Before:=3 ' abc
    Application.CommandBars("Ma Barre Outils").Controls.Add Type:= _
        msoControlButton, ID:=748, Before:=4 ' enregistrer sous
    Application.CommandBars("Ma Barre Outils").Controls.Add Type:= _
        msoControlButton, ID:=928, Before:=5 ' tri alpha
End Sub


--Mortalino-- 

Bon, les IDs, c'est pas très parlant, d'autant plus qu'il n'y a rien sur le sujet, mais n'hésite pas à t'enregistrer, t'auras les bons numéros.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
FRED20000 Messages postés 3 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 21 novembre 2006
16 nov. 2006 à 08:59
Quand j'appui sur CommandButton1, j'aimerai faire apparaître un menu personnalisé à un emplacement définit. Le menu personnalisé renvoi à des macros. Ci joint un montage photo sans tenir compte du texte. 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
17 nov. 2006 à 10:57
Peux-tu être plus explicite ?

Pour ce qui est du montage photo, on ne voit rien...


Pour un menu contextuel (Click droit) sur une cellule ou une feuille ou un classeur


Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

    Dim Menu

   

'Commencer par effacer le menu si existant pour éviter le dédoublement

    For Each Menu In Application.CommandBars("cell").Controls

        If Menu.Tag = "Rechercher" Then Menu.Delete

    Next Menu

   

'Afficher le menu sur les cellules de A à AZ

    If Not Application.Intersect(Target, Range("A:AZ")) _

        Is Nothing Then

            With Application.CommandBars("cell").Controls _

                    
.Add(Type:=msoControlButton, before:=1, temporary:=True)

                'Texte du menu tel qu'afficher sur click droit

                .Caption = "Rechercher numéros d'ASN"

                'Nom de la procédure (macro)

                .OnAction = "Rechercher"

                'Valeur Tag pour reconnaître l'item de menu

                .Tag = "Rechercher"

            End With

    End If


End Sub


Dans

Workbook_Deactivate()
Workbook_BeforeClose(Cancel As Boolean)

ou autre, il faut détruire ce menu

    Dim Menu

   

    For Each Menu In Application.CommandBars("cell").Controls

        If Menu.Tag = "Rechercher" Then Menu.Delete

    Next Menu


Et tu peux aussi créer un UserForm sur lequel tu affiches les commandes
que tu veux utiliser. Donc, sur click GAUCHE du bouton, tu affiches ton
UserForm et c'est là que l'utilisateur choisira sa procédure à exécuter.

MPi
0
FRED20000 Messages postés 3 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 21 novembre 2006
21 nov. 2006 à 10:44
2eme essai pour l'image
0
Rejoignez-nous