1. Création de la barre de menus▲ La première étape consiste à créer et ajouter
1. Création de la barre de menus▲ La première étape consiste à créer et ajouter à l'application, dans notre cas Excel, une nouvelle barre de menus qui comportera les contrôles personnalisés. Les contrôles, c'est à dire les boutons, zones de texte, zones de liste et sous-menus sont détaillés au chapitre 2. 1.1. Syntaxe générale▲ Syntaxe : CommandBars.Add(Name, [Position], [MenuBar], [Temporary]) les arguments entre [ ] sont facultatifs Deux méthodes d'utilisation de cette syntaxe sont possibles, avec ou sans initialisation d'une variable : Code VBA sans variable Sélectionnez Sub Ajout_BarreMenu() CommandBars.Add(Name, [Position], [MenuBar], [Temporary]).Propriété = ValeurPropriété End Sub Code VBA avec initialisation d'une variable Sélectionnez Sub Ajout_BarreMenu() Dim Cbar As CommandBar Set Cbar = CommandBars.Add(Name, [Position], [MenuBar], [Temporary]) Cbar.Propriété = ValeurPropriété End Sub Table des matières 1.2. Les arguments▲ 1.2.1. Name▲ L'argument Name attribue un nom à votre nouvelle barre de menus. Dans la mesure du possible, optez pour un nom explicite et concis, ce qui par la suite, facilitera son utilisation dans le code. Exemple d'utilisation : Name:="MaBarre" Top 1.2.2. Position▲ L'argument Position va définir, comme son nom l'indique..., la position de cette nouvelle barre de menus. Six constantes sont possibles : msoBarTop = en haut (sous les barres de menus déjà en place) msoBarBottom = en bas msoBarRight = à droite msoBarLeft = à gauche msoBarFloating = position flottante sur l'écran (argument par défaut) msoBarPopup = position particulière, détaillée en fin d'article au chapitre 3. Cet argument est facultatif, sans le préciser c'est la valeur par défaut (msoBarFloating) qui sera prise en compte. Exemple d'utilisation : Position:=msoBarTop Top 1.2.3. MenuBar▲ Argument de type booléen permettant, si MenuBar:=True, de remplacer le menu de l'application par votre barre de menus personnalisée. Cet argument est facultatif, valeur par défaut = False. Aperçu : Menu original de l'application Barre de menu personnalisée remplaçant le m Top 1.2.4. Temporary▲ Argument de type booléen permettant de préciser, si Temporary:=True, que la barre de menus est temporaire. Lors de la fermeture de l'application, la barre de menus sera alors automatiquement supprimée. Cet argument est facultatif, valeur par défaut = False. Top 1.3. Les propriétés▲ 1.3.1. Visible▲ La propriété Visible, de type booléen, permet tout simplement de rendre votre barre de menus visible ou non. Si, lors de la création de la barre de menus, vous omettez de préciser cette propriété, son état par défaut étant "False", la barre de menus sera belle et bien créée mais ne sera pas visible. Dans ce cas, vous pouvez toujours la rendre visible manuellement via le menu Outils >> Personnaliser en cochant la barre de menus en question. Exemple d'utilisation : CommandBars.Add(Name, [Position], [MenuBar], [Temporary]).Visible = True Top 1.3.2. Enabled▲ La propriété Enabled, de type booléen, a le même effet visuel que la propriété Visible. La différence entre les deux propriétés réside dans le fait que si Enabled = False, non seulement la barre de menus ne sera pas visible, mais en plus elle n'apparaîtra pas dans le menu Outils >> Personnaliser. Par défaut, l'état de la propriété "Enabled" est "True". Top 1.3.3. Protection▲ La propriété Protection va empêcher l'utilisateur d'effectuer des modifications. Cinq types de protections sont intéressants, les constantes sont : msoBarNoCustomize : empêchera l'utilisateur d'ajouter manuellement un bouton à la barre de menus. msoBarNoMove : empêchera l'utilisateur de déplacer la barre de menus. msoBarNoChangeDock : permettra à l'utilisateur de déplacer la barre de menus uniquement sur son axe. msoBarNoVerticalDock : n'autorisera pas de positionner la barre de menus, verticalement, à gauche ou à droite de la feuille. msoNoHorizontalDock : n'autorisera pas de positionner la barre de menus, horizontalement, en haut ou en bas de la feuille. Exemple d'utilisation : CommandBars.Add(Name, [Position], [MenuBar], [Temporary]).Protection = msoBarNoMove Vous pouvez cumuler plusieurs types de protections, par exemple : CommandBars.Add(Name, [Position], [MenuBar], [Temporary]).Protection = msoBarNoMove + msoBarNoCustomize Top 1.3.4. FindControl▲ La propriété FindControl permettra de trouver un contrôle spécifique afin par exemple de le supprimer. La syntaxe est la suivante : CommandBars("NomDeLaBarre").FindControl(Type, Id, Tag, Visible, Recursive) Chaque argument est facultatif mais minimum un argument doit être utilisé. Explication des arguments : Type:= recherche d'un type de contrôle (voir chapitre 2) Id:= recherche sur un numéro d'index de bouton prédéfini (voir chapitre 2.2.4) Tag:= recherche d'une étiquette attribuée au contrôle (voir chapitre 2.2.17) Visible:= recherche d'un contrôle visible ou non, par défaut l'état de cet argument est True (voir chapitre 2.2.14) Recursive:= True permet de rechercher également dans les sous-menus, par défaut l'état de cet argument est False Exemple d'utilisation : CommandBars("MaBarre").FindControl(Type:=msoControlButton, Tag:="bout1", Recursive:=True).Delete Top 1.3.5. ActionControl▲ La propriété ActionControl renvoie, dans la procédure, la propriété désignée du contrôle qui vient d'être actionné pour exécuter cette procédure. Syntaxe : CommandBars.ActionControl.propriété (voir chapitre 2 pour plus de détails sur les différentes propriétés) Exemple : MaVariable = CommandBars.ActionControl.Caption Top 1.3.6. Builtin▲ La propriété Builtin, de type booléen, renvoie la valeur True si la barre de menus est une des barres prédéfinies de l'application. A quoi peut bien servir cette propriété ? Si l'on souhaite supprimer toutes les barres de menus créées lors de la fermeture du classeur, nous pouvons le réaliser via cette propriété, ce qui permettra de supprimer toutes les barres de menus persos sans devoir se soucier du nombre ni de leurs noms. Exemple d'utilisation : Code VBA à insérer dans un module standard Sélectionnez Sub Sup_Cbar() Dim Cbar As CommandBar For Each Cbar In CommandBars If Cbar.BuiltIn = False Then Cbar.Delete Next End Sub Code VBA à insérer dans l'objet ThisWorkbook Sélectionnez Private Sub Workbook_BeforeClose(Cancel As Boolean) Sup_Cbar End Sub Top 1.3.7. RowIndex▲ En cas d'insertion de plusieurs barres de menus sur une ligne, cette propriété permet de les positionner. Syntaxe : mabarre.RowIndex = 2 (pour positionner la barre de menus en 2ème position en partant de la gauche). Top 1.4. Exemples de code▲ Exemple de création d'une barre de menus, positionnement de celle-ci dans la partie supérieure et ajout de protections. Code de création : Code VBA à insérer dans un module standard Sélectionnez Sub Creation_Cbar() Dim Cbar As CommandBar Set Cbar = CommandBars.Add(Name:="MaBarre", Position:=msoBarTop, Temporary:=True) With Cbar .Visible = True .Protection = msoBarNoMove + msoBarNoCustomize End With End Sub Code de suppression : Code VBA à insérer dans un module standard Sélectionnez Sub Supp_Cbar() On Error Resume Next '<-- gestion d'erreur au cas où la barre n'existe pas CommandBars("Mabarre").Delete End Sub Code permettant de créer automatiquement la barre de menus à l'ouverture du classeur : Code VBA à insérer dans l'objet ThisWorkbook Sélectionnez Private Sub Workbook_Open() Creation_Cbar End Sub L'argument "Temporary" étant fixé à "True", la barre sera automatiquement supprimée lors de la fermeture de l'application. Vous pouvez malgré tout décider de supprimer cette barre de menus lors de la fermeture du classeur. Code permettant de supprimer la barre de menus à la fermeture du classeur : Code VBA à insérer dans l'objet ThisWorkbook Sélectionnez Private Sub Workbook_BeforeClose(Cancel As Boolean) Supp_Cbar End Sub Top 2. Les contrôles▲ La barre de menus ne serait rien sans contrôles. Cinq Types de contrôles sont possibles, les constantes sont : msoControlButton = bouton de commande msoControlEdit = zone de texte msoControlDropdown = zone de liste msoControlComboBox = zone de liste modifiable msoControlPopup = sous-menu Les Propriétés pour chacun de ces contrôles sont détaillées ci-dessous. 2.1. Syntaxe générale▲ Syntaxe : CommandBars("MaBarre").Controls.Add(Type) voir ci-dessus les constantes (types) possibles Deux méthodes d'utilisation de cette syntaxe sont possibles, avec ou sans initialisation d'une variable : Code VBA sans variable Sélectionnez Sub Ajout_Controle() With CommandBars("MaBarre").Controls.Add(Type) .Propriété1 = ValeurPropriété1 .Propriété2 = ValeurPropriété2 'etc... End With End Sud Code VBA avec initialisation d'une variable Sélectionnez Sub Ajout_Controle() Dim Ctrl1 As CommandBarButton '<-- déclaration de variable pour un contrôle de type bouton de commande Dim Ctrl2 As CommandBarComboBox '<-- déclaration de variable pour un contrôle de type zone de texte ou zone de liste Dim Ctrl3 As CommandBarPopup '<-- déclaration de variable pour un contrôle de type sous-menu Set Ctrl2 = CommandBars("MaBarre").Controls.Add(Type) With Ctrl2 .Propriété1 = ValeurPropriété1 .Propriété2 = ValeurPropriété2 'etc... End With End Sub Top 2.2. Le bouton de commande et ses propriétés▲ Pour rappel, la constante définissant le contrôle type "bouton de commande" est : msoControlButton Syntaxe : CommandBars("MaBarre").Controls.Add(msoControlButton) 2.2.1. Style▲ La propriété Style définit le mode d'affichage du bouton de commande. Syntaxe : monbouton.Style = constante Exemple : Style = msoButtonIconAndCaption 8 constantes sont possibles : Constante Définition Aperçu barre horizontale Aperçu barre verticale msoButtonAutomatic bouton avec icône constante par défaut msoButtonIcon bouton avec icône msoButtonCaption bouton avec texte msoButtonIconAndCaption bouton avec icône + texte le texte se positionne à droite de l'icône msoButtonIconAndCaptionBelow bouton avec icône + texte le texte se positionne sous l'icône en position verticale, le texte reste horizontal msoButtonWrapCaption bouton avec texte 2 lignes de texte si plusieurs mots en position verticale, le texte reste horizontal msoButtonIconAndWrapCaption bouton avec icône + texte 2 lignes de texte si plusieurs mots en position verticale, le texte reste horizontal msoButtonIconAndWrapCaptionBelow bouton avec icône + texte le texte se positionne sous l'icône 2 lignes de texte si uploads/Philosophie/ creation-de-la-barre-de-menus-commandbars-add.pdf
Documents similaires
-
20
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Apv 09, 2021
- Catégorie Philosophy / Philo...
- Langue French
- Taille du fichier 1.0581MB