Bonjour
J'ai récemment été confronté à la modification d'un fichier excel qui "emmenait" avec lui des menus personnalisés. Au jour où j'écris ce topic mon problème n'a pas été résolu et j'ai donc recréé mon document afin d'y créer mes menus personnalisés par macro pour pouvoir les modifier ensuite.
Voilà donc ma question, comment ajouter puis supprimer des menus personnalisés de la barre des menus d'excel par macro ?
Voilà le code que je me suis bidouillé pour créer les menus et des éléments de menu dedans. Il génère 2 menus perso (menu 1 et menu 2) avec pour chacun d'eux 2 items qui déclencheront 1 macro chacun :
Le problème c'est que si je ferme excel et que je l'ouvre à nouveau, je récupère ces menus alors qu'ils ne m'intéressent plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
41
42
43
44
45
46
47
48 Private Sub Workbook_Open() Dim CmdBar As CommandBar Dim Menu As CommandBarControl Dim Item As CommandBarControl 'déclaration de la barre d'outils des menus excel Set CmdBar = Application.CommandBars("Worksheet Menu Bar") 'Ajout du menu perso "menu 1" Set Menu = CmdBar.Controls.Add(Type:=msoControlPopup) With Menu .Caption = "Menu 1" End With Set Item = Menu.Controls.Add(Type:=msoControlButton, ID:=Menu.ID) With Item .Caption = "item 1" .OnAction = "macr01" End With Set Item = Menu.Controls.Add(Type:=msoControlButton, ID:=Menu.ID) With Item .Caption = "item 2" .OnAction = "macro2" End With 'Ajout du menu "Menu 2" Set Menu = CmdBar.Controls.Add(Type:=msoControlPopup) With Menu .Caption = "Menu 2" End With Set Item = Menu.Controls.Add(Type:=msoControlButton, ID:=Menu.ID) With Item .Caption = "item 1 (du menu 2)" .OnAction = "macro3" End With Set Item = Menu.Controls.Add(Type:=msoControlButton, ID:=Menu.ID) With Item .Caption = "item 2 (du menu 2)" .OnAction = "macro4" End With End Sub
Il faut donc que je puisse les supprimer lors de la fermeture du document excel. Mais là je sèche. Merci d'avance pour votre aide
Nota : la solution pourra je pense figurer dans la FAQ qui m'a inspirée pour ce code : http://excel.developpez.com/faq/?page=BarreOutils
Partager