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 :
Tous les boutons fonctionnent, mon problème réside dans l'aspect du ruban :
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
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.
Partager