|
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 bouton
Supposons 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 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 |