Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2011, 18h13   #1
Invité régulier
 
Homme
Inscription : novembre 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2011
Messages : 7
Points : 5
Points : 5
Par défaut VBA Excel - Modification du menu contextuel

Bonjour,

je cherche à créer et gérer des menus contextuels en macro VBA sous Excel.

J'arrive à modifier le menu contextuel (créer/ajouter des champs), mais je ne parviens pas à ajouter un menu dans ce menu.

Pour être plus clair :
Code :
   ShortcutMenus(xlWorksheetCell).MenuItems.AddMenu Caption:="TOTO", before:=1
Me crée bien un menu "TOTO" dans le menu contextuel, mais comment faire pour modifier ce nouveau menu et y ajouter/supprimer des choses ?

Merci à tous ceux qui pourrons m'aider.
FreeZf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 19h46   #2
Membre régulier
 
Inscription : août 2010
Messages : 55
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 55
Points : 75
Points : 75
Bonjour,

Un petit exemple

Code :
1
2
3
4
5
6
7
8
9
10
Sub test()
    Dim LeMenu As Menu
    Set LeMenu = ShortcutMenus(xlWorksheetCell).MenuItems.AddMenu(Caption:="TOTO", before:=1)
    LeMenu.MenuItems.Add "TRUC", "LeCouCou"
    Set LeMenu = Nothing
End Sub
 
Sub LeCouCou()
    MsgBox "CouCou"
End Sub
Cordialement

ctac
ctac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 19h49   #3
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut heu...!!!

bonjour

je n'ai pas bien compris ton besoins alors je t'ai fait deux exemple

le premier ajoute un bouton nommé "toto" dans le menu contextuel des cellules

et le 2 eme ajoute un popup "menu toto"avec plusieurs boutons

voici les codes

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
'exemple pour créer unbouton  dans le menu contextuel des cellules
Sub Creation_d_un_bouton_simple__dans_menu_contextuel()
    resetmenu
    Dim Cbut As CommandBarButton
    Dim MaBarre As CommandBar
    resetmenu
    'on détermine la command bar que l'on veux modifier
    Set MaBarre = Application.CommandBars("cell")
    'on y ajoute un bouton "toto"
    Set Cbut = MaBarre.Controls.Add(Type:=msoControlButton)
    With Cbut
        .FaceId = 326    '<-- bouton avec icône + texte
        .Caption = "TOTO 1"    '<-- label du bouton
        .OnAction = "macro_simple_1"    ' appel a sa macro associée
    End With
 
End Sub
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
'***************************************************************************
'***************************************************************************
'exemple pour créer un menu avec plusieur item dans le menu contextuel des cellules
 
Sub Creation_menu_popup_avec_plusieurs_boutons_dans_menu_contextuel()
    resetmenu
    Dim Cpop1 As CommandBarPopup
    Dim Cbut As CommandBarButton
    Dim MaBarre As CommandBar
    resetmenu
 
    Set MaBarre = Application.CommandBars("cell")
    'on ajoute le popup qui va comporté tout les boutons
    Set Cpop1 = MaBarre.Controls.Add(msoControlPopup)
    With Cpop1
        ' on nomme le popup
        .Caption = "MENU DE TOTO"    '<-- label du sous-menu
 
    End With
 
    ' on ajoute le bouton au popup
    Set Cbut = Cpop1.Controls.Add(Type:=msoControlButton)
    With Cbut
        .FaceId = 326    '<-- bouton avec icône + texte
        .Caption = "TOTO 1"    '<-- label du bouton
        .OnAction = "MACROTOTO_1"    ' appel a la macro associée
    End With
 
    'on repete l'operation ----((with cbut end with)))---- autant de fois que l'on veut de boutons
 
    Set Cbut = Cpop1.Controls.Add(Type:=msoControlButton)
    With Cbut
        .FaceId = 326    '<-- bouton avec icône + texte
        .Caption = "TOTO 2"    '<-- label du bouton
        .OnAction = "MACROTOTO_2"
    End With
 
 
End Sub
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
'ici les macros associées
Sub macro_simple_1()
    MsgBox "vous venez de " & vbCrLf & "cliquer sur le  bouton toto du menu simple"
 
End Sub
 
 
Sub MACROTOTO_1()
    MsgBox "vous venez de " & vbCrLf & "cliquer sur le 1 er  bouton du menu TOTO"
 
End Sub
 
Sub MACROTOTO_2()
    MsgBox "vous venez de " & vbCrLf & "cliquer sur le 2 eme bouton du menu TOTO"
End Sub
 
 
 
'on remet le menu contextuel d'origine .faire apel a cette macro a la fermeture du fichier
Sub resetmenu()
    Application.CommandBars("cell").Reset
End Sub

voila cela devrait faire ton boheur

au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 13h27   #4
Invité régulier
 
Homme
Inscription : novembre 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2011
Messages : 7
Points : 5
Points : 5


Merci pour vos réponses, c'est parfait !
FreeZf est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h04.


 
 
 
 
Partenaires

Hébergement Web