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 :
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
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.
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