Bonjour tout le monde,

Sur un fichier Excel j'aimerais mettre à disposition plusieurs fonctionnalités directement dans le ruban.
Fonctionnalités du type :
  • Ajouter une ligne : ouvre un UF de saisie
  • Supprimer une ligne : vérifie que l'utilisateur a bien le droit de supprimer la ligne
  • Ajouter un commentaire : les commentaires sont formatés (l'utilisateur passe par un UF de saisie)
  • ...


J'ai en tout 10 fonctionnalités différentes (peut être plus par la suite) et j'aimerais éviter de mettre des boutons partout sur la feuille ou sur clic droit (solution actuelle).
Je me suis donc inspiré du tuto : VBA EXCEL Création d'une barre de menus personnalisée

Mes premières questions :
  • Pourquoi l'argument position de la méthode CommandBars.Add ne change absolument rien chez moi ?
  • Pourquoi la propriété BeginGroup ne change rien sur mes ControlButton ?


Voila le code que j'ai fait :
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
Sub AjouterBar()
    Dim objBar As CommandBar, CmB_Bt As CommandBarButton, CmB_pop As CommandBarPopup, shp As Shape
 
        Set objBar = CommandBars.Add(name:="Gestion Ligne", Temporary:=True)
        With objBar
            Set CmB_Bt = .Controls.Add(msoControlButton)
            With CmB_Bt
                .TooltipText = "Supprime la barre"
                .FaceId = 358
                .OnAction = "Sup_Cbar"
                .Style = msoButtonIcon
            End With
        'Ajouter ligne
            Set CmB_Bt = .Controls.Add(msoControlButton)
            With CmB_Bt
                .Caption = "Ajouter ligne"
                .TooltipText = "Ajoute une ligne Hors Plan au suivi PDF"
                .FaceId = 213
                .OnAction = "nouvelleLigne"
                .Style = msoButtonIconAndCaptionBelow
                .Tag = "AddRow"
            End With
        'Supprimer ligne
            Set CmB_Bt = .Controls.Add(msoControlButton)
            With CmB_Bt
                .Caption = "Supprimer ligne"
                .TooltipText = "Supprime la ligne active (uniquement sur Hors Plan)"
                .FaceId = 214
                .OnAction = "Supprimer_Ligne_Active"
                .Style = msoButtonIconAndCaptionBelow
                .Tag = "DelRow"
            End With
        'affiche la barre
            .Visible = True
        End With
 
        Set objBar = CommandBars.Add(name:="PDF", Temporary:=True)
        With objBar
        'Ajouter Commentaire
            Set CmB_Bt = .Controls.Add(msoControlButton)
            With CmB_Bt
                .Caption = "Ajouter Commentaire"
                .TooltipText = "Ajoute un commentaire sur la ligne active"
                .FaceId = 938
                .OnAction = "Lancer_UF_Commentaire"
                .Style = msoButtonIconAndCaptionBelow
                .Tag = "AddComm"
            End With
        'Top Monito
            Set CmB_Bt = .Controls.Add(msoControlButton)
            With CmB_Bt
                .Caption = "Top monito"
                .TooltipText = "Top la ligne pour le monito du mois"
                .FaceId = 103
                .OnAction = "Ajouter_Top_Monito_ActiveRow"
                .Style = msoButtonIconAndCaptionBelow
                .Tag = "AddTop"
            End With
        'affiche la barre
            .Visible = True
        End With
 
        Set objBar = CommandBars.Add(name:="Filtre", Temporary:=True)
        With objBar
        'Effacer filtres
            Set CmB_Bt = .Controls.Add(msoControlButton)
            With CmB_Bt
                .Caption = "Effacer filtres"
                .TooltipText = "Supprime tous les filtres"
                .FaceId = 605
                .OnAction = "EffacerFiltres"
                .Style = msoButtonIconAndCaptionBelow
                .Tag = "EffFiltres"
            End With
        'Info Filtre
            Set CmB_Bt = .Controls.Add(msoControlButton)
            With CmB_Bt
                .Caption = "Info Filtre"
                .TooltipText = "Message d'information sur les filtres de la feuille"
                .FaceId = 487
                .OnAction = "Info_Filtre"
                .Style = msoButtonIconAndCaptionBelow
                .Tag = "InfoFiltre"
            End With
        'Filtre sur cellule
            Set CmB_Bt = .Controls.Add(msoControlButton)
            With CmB_Bt
                .Caption = "Filtre Cellule"
                .TooltipText = "Filtre sur la cellule active"
                .FaceId = 603
                .OnAction = "Filtrer_Sur_ActiveCell"
                .Style = msoButtonIconAndCaptionBelow
                .Tag = "FiltrerSurActiveCell"
            End With
        'Filtre sur mes lignes
            Set CmB_pop = .Controls.Add(msoControlPopup)
            With CmB_pop
                .Caption = "Filtrer sur mes lignes"
                Set CmB_Bt = .Controls.Add(msoControlButton)
                With CmB_Bt
                    .Caption = "QUI 1"
                    .OnAction = "Filtrer_Qui1"
                End With
                Set CmB_Bt = .Controls.Add(msoControlButton)
                With CmB_Bt
                    .Caption = "QUI 2"
                    .OnAction = "Filtrer_Qui2"
                End With
                Set CmB_Bt = .Controls.Add(msoControlButton)
                With CmB_Bt
                    .Caption = "RP"
                    .OnAction = "Filtrer_RP"
                End With
            End With
        'affiche la barre
            .Visible = True
        End With
fin:
    Set objBar = Nothing
    Set CmB_Bt = Nothing
    Set CmB_pop = Nothing
    Set shp = Nothing
End Sub
 
Sub Sup_Cbar()
    Dim Cbar As CommandBar
        For Each Cbar In CommandBars
            If Cbar.BuiltIn = False Then Cbar.Delete
        Next
End Sub
Tous les boutons fonctionnent, mon problème réside dans l'aspect du ruban :
Nom : BarrePerso.png
Affichages : 1354
Taille : 32,0 Ko
J'aimerais créer 3 groupes et pouvoir renommer l'onglet dans le ruban. Est-ce possible ?

En fait j'aimerais faire un truc jolie

Merci d'avance a ceux qui me donnerons des pistes pour améliorer le rendu.