Creer une nouvelle bare de menus

jimmylux

XLDnaute Nouveau
Bonjour
Je soujaiterais creer une nouvelle barre de menu. J'arrive à le faire jusqu'au niveau 2 (Fichier/ Niveau 1). Mais je souhaiterais arriver au niveau 4 (Fichier / Niveau 1/ Niveau 2 / Niveau 3 / Niveau 4).
Comment y ajouter des macro? . Exemple, je vais dans File, puis niveau 1 puis... Niveau 4. Et l'a je veux qu'il me montre une ''feuille donnée''.


Quelqu'un saurait-il m'aider s'il vous plait?
+++++

MenuBars.Add "FundView"

MenuBars("New Menu").Menus.Add Caption:="File"
With MenuBars("FundView").Menus("File").MenuItems
.Add Caption:="Update Sheet1"
.Add Caption:="Update Sheet2"
.Add Caption:="Update Sheet3"
End With

+++++++++++++++++++++++
 

kjin

XLDnaute Barbatruc
Re : Creer une nouvelle bare de menus

Bonjour, le squale :),
S'il s'agit bien d'un menu en cascade...
Code:
Set niv1 = CommandBars("File").Controls.Add(Type:=msoControlPopup, Before:=4)
With niv1
    .Caption = "Niveau 1"
    Set niv2 = .Controls.Add(Type:=msoControlPopup)
    niv2.Caption = "Niveau 2"
    With niv2
        Set niv3 = .Controls.Add(Type:=msoControlPopup)
        niv3.Caption = "Niveau 3"
        With niv3
            Set niv4 = .Controls.Add(Type:=msoControlPopup)
            niv4.Caption = "Niveau 4"
        End With
    End With
End With
...sinon c'est que je n'ai rien compris
A+
kjin
 

jimmylux

XLDnaute Nouveau
Re : Creer une nouvelle bare de menus

merci kjin et carcharodon-carcharias.
En fait dans pour etre plus claire, voici le schema d'analyse:
1-je supprime la barre traditionnelle (Ficher, edition....)
2- Je crée une nouvelle barre qui s'appelle "FundView"
3- Dans "FundView", il y aura plusieurs menus (Menu 1, Menu 2, Menu3...)
4. Dans un menu donné, il y aura un sousmenu (Menu 1.1, Menu 1.2....)
5. Dans un sous menu donné, i y aura termes (Menu 1.1.a, Menu 1.1.b....)
6. Chacun des termes est lié à une macro (Macro 1.1.a, Macro 1.2.c....)
Voila donc ce que je veux faire.
 

jimmylux

XLDnaute Nouveau
Re : Creer une nouvelle bare de menus

@
J'oubliais, la nouvelle barre de menu est temporaire et ne s'applique qu'au seul fichier en cours.
Si on ouvre un autre fichier XLS on devrait avoir le menu traitionnel ou celui qui était avant notre nouveau menu
Si on ferme le fichier d'analyse, son menu est supprimé, et le traditionnel revient...
 

kjin

XLDnaute Barbatruc
Re : Creer une nouvelle bare de menus

Bonjour,
Si tu modifies la barre de menu via ce fichier, hormis si tu ouvres une autre session, elle le sera pour tous les fichiers ouverts et ce jusqu'à sa fermeture ce qui provoquera un reset de la barre
Dans ThisWorkbook
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars(1).Reset
End Sub

Private Sub Workbook_Open()
AffFindView
End Sub
...et dans un module standard
Code:
Sub AffFindView()
Dim niv0 As CommandBarPopup, niv1 As CommandBarPopup, niv2 As CommandBarPopup
Dim niv3 As CommandBarPopup, niv4 As CommandBarButton
With Application.CommandBars(1)
    .Controls(1).Visible = False 'masque le menu fichiers
    Set niv0 = .Controls.Add(Type:=msoControlPopup, Before:=1)
    With niv0
        .Caption = "FindView"
        For i = 1 To 3
            Set niv1 = .Controls.Add(Type:=msoControlPopup)
            With niv1
                .Caption = "Menu " & i
                .BeginGroup = True
                For j = 1 To 3
                    Set niv2 = .Controls.Add(Type:=msoControlPopup)
                    With niv2
                        .Caption = "Menu " & i & "." & j
                        .BeginGroup = True
                        For k = 1 To 3
                            Set niv3 = .Controls.Add(Type:=msoControlPopup)
                            With niv3
                                .Caption = "Menu " & i & "." & j & "." & Chr(96 + k)
                                .BeginGroup = True
                                Set niv4 = .Controls.Add(Type:=msoControlButton)
                                With niv4
                                    .Caption = "Macro " & i & "." & j & "." & Chr(96 + k)
                                    .Style = msoButtonCaption
                                    .BeginGroup = True
                                    ' adapter suivant le nom des macros
                                    .OnAction = "Macro_" & i & "_" & j & "_" & Chr(96 + k)
                                End With
                            End With
                        Next
                    End With
                Next
            End With
        Next
    End With
End With
End Sub
A+
kjin
 

kjin

XLDnaute Barbatruc
Re : Creer une nouvelle bare de menus

Re,
Suite à ton MP, tu trouveras sur le forum moult exemples pour supprimer les barres de menu et des emm...! que ça provoque régulièrement ainsi que la trousse de secours au cas où ça t'arrive
A+
kjin
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 518
dernier inscrit
hbenaoun63