Sommaire > 5. Les barres de commandes |
5. Les barres de commandes5.1. DéfinitionsUne « barre de commandes » est un objet programmable utilisable dans VBA pour contrôler un menu ou une barre d'outils. Tous les éléments suivants sont représentés par des objets « barre de commandes » :
Un « contrôle de barre de commandes » est un contrôle intégré ou personnalisé faisant partie d'une barre de menus, d'une barre d'outils, d'un sous-menu ou d'un menu contextuel. Les contrôles personnalisés pouvant être inclus dans les barres de commandes sont les suivants : 5.2. Objets, Méthodes et PropriétéLes objets utilisés sont :
La méthode « Add » ajoute un objet à une « CommandBars » ou « CommandBars Controls ». La propriété « Caption » définit le texte de légende du contrôle de barre de commandes spécifié. La propriété « OnAction » définit le nom de la macro Visual Basic exécutée si l'utilisateur clique sur le contrôle de barre de commandes et la propriété « Style » définit le mode d'affichage du bouton de barre de commandes spécifié. L'exemple suivant permet :
Sub Personnalisé() Set cmd = CommandBars.Add(Name:="Personnalisé", _ Temporary:=True) cmd.Visible = True Set btn = cmd.Controls.Add(Type:=msoControlButton) With btn .Caption = "InverserC" .OnAction = "InverserC" .Style = msoButtonCaption End With Set btn = cmd.Controls.Add(Type:=msoControlButton) With btn .Caption = "InverserM" .OnAction = "InverserM" .Style = msoButtonCaption End With End Sub La méthode « Delete » supprime un objet d'une « CommandBar » ou « Command BarsControls » et la méthode « Reset » réinitialise la barre de commandes prédéfinie spécifiée en lui appliquant sa valeur de configuration de contrôle par défaut. La commande suivante supprime la barre de commandes « Personnalisé » : CommandBars("Personnalisé").Delete Et cette commande réinitialise la barre des menus : CommandBars("Menu Bar").Reset 5.3. Exemples :5.3.1. Modification d'une propriété d'un boutonSupposons qu'on dispose d'un bouton dans la barre d'outils « Standard » qui permette de choisir entre la saisie des guillemets dactylographiques (") et des guillemets typographiques (« »). On désire que l'aspect de ce bouton change en fonction du choix de l'utilisateur → , on peut utiliser la procédure suivante : Sub Guillemets() ' ' Guillemets Macro ' Bascule entre les guillemets dactylographiques (") ' et guillemets typographiques (« ») ' Options.AutoFormatAsYouTypeReplaceQuotes = _ Not Options.AutoFormatAsYouTypeReplaceQuotes I = CommandBars("Standard").Controls.Count If Options.AutoFormatAsYouTypeReplaceQuotes Then CommandBars("Standard").Controls(I).Caption = _ Chr(171) & " " & Chr(187) Else CommandBars("Standard").Controls(I).Caption = """ """ End If End Sub 5.3.2. Ajout du menu « Traitement » dans la « barre des menus »La « barre de menus » est constituée de « menus » (Fichier, Edition, ...), chaque menu est constitué « d'articles » (Fichier : Nouveau, Ouvrir, ...) et certains articles sont constitués de « sous-articles » (Affichage / Barres d'outils : Standard, Mise en forme, ...). Comme tous les objets VBA, les barres des commandes, menus, articles et sous-articles sont identifiés par un nom ou un numéro de position. Ainsi :
Sub AjoutMenuTraitement() ' ' Réinitialise la barre de commandes "Menu Bar" CommandBars("Menu Bar").Reset ' Ajout du menu "Traitement" à la fin de la barre "Menu Bar" ' et de ses articles et sous-articles Set Menu = CommandBars("Menu Bar"). _ Controls.Add(Type:=msoControlPopup) Set Article1 = Menu.Controls.Add(Type:=msoControlButton) Set Article2 = Menu.Controls.Add(Type:=msoControlPopup) Set Article21 = Article2. _ Controls.Add(Type:=msoControlButton) Set Article22 = Article2. _ Controls.Add(Type:=msoControlButton) Set Article3 = Menu.Controls.Add(Type:=msoControlButton) ' Définition des légendes Menu.Caption = "Traitement" Article1.Caption = "Bienvenue" Article2.Caption = "Styles" Article21.Caption = "Styles utilisateurs" Article22.Caption = "Article22" Article3.Caption = "Liste des Barres de commandes" ' Attribution des actions (macros VBA) Article1.OnAction = "Bonjour" Article21.OnAction = "StylesUtil" Article3.OnAction = "ListCommandBars" ' Ajout d'une ligne de séparation avant l'article 3 Article3.BeginGroup = True End Sub Sub Bonjour() MsgBox "Bonjour." End Sub Sub StylesUtil() I = 0 For Each St In ActiveDocument.Styles If St.BuiltIn = False Then I = I + 1 MsgBox I & ") " & St.NameLocal End If Next End Sub Sub ListCommandBars() Documents.Add Selection = "Index" & vbTab & "Nom" & vbTab & _ "Visible" & vbCr I = 0 For Each cmd In CommandBars Selection.EndKey unit:=wdStory I = I + 1 Selection = I & vbTab & cmd.Name & vbTab & _ cmd.Visible & vbCr Next Selection.WholeStory Selection.ConvertToTable Separator:=wdSeparateByTabs End Sub 5.3.3. Ajout d'un nouvel article au menu contextuel « Text »Sub AjoutArticleGlossaire() Dim TableTexte(4) As String ' Réinitialise la barre de commandes "text" CommandBars("text").Reset ' Noms des sous-articles TableTexte(0) = "Texte1" TableTexte(1) = "Texte2" TableTexte(2) = "Texte3" TableTexte(3) = "Texte4" TableTexte(4) = "Texte5" ' Ajout de l'article "Glossaire" au menu contextuel "Text" ' et des sous-articles (Texte1 à Texte5) Set Article = Application.CommandBars("Text").Controls. _ Add(Type:=msoControlPopup) Article.Caption = "Glossaire" Article.BeginGroup = True For I = 0 To UBound(TableTexte) Set SousArticle = Article.Controls. _ Add(Type:=msoControlButton, Parameter:=I) With SousArticle .Caption = TableTexte(I) .OnAction = "InsertText" End With Next I End Sub Function InsertText() Dim TableTexte(4) As String TableTexte(0) = "Bla bla bla " TableTexte(1) = "Gna gna gna " TableTexte(2) = "Dites 33 " TableTexte(3) = "... " TableTexte(4) = "... " I = CommandBars.ActionControl.Parameter Selection = TableTexte(I) Selection.Collapse (wdCollapseEnd) End Function |
Sommaire - Début de cette page |