Amélioration de l'interface utilisateur
Présentation
Les versions Microsoft Office 2021 ou Office 365 permettent de personnaliser le ruban en ajoutant, déplaçant ou supprimant des onglets et des commandes (cf. chapitre Présentation). Toutefois, cette fonctionnalité ne permet pas d’avoir un ruban spécifique pour un classeur donné.
Deux solutions existent pour personnaliser le ruban pour un classeur donné :
-
L’utilitaire Custom UI Editor permet de créer un ruban personnalisé, via du code XML, et d’interagir sur le ruban au moyen de procédures VBA.
-
La collection CommandBars permet de créer des barres d’outils et des barres de menu dans l’onglet Compléments.
Personnalisation du ruban au moyen de l’utilitaire Custom UI Editor
1. Présentation de l’utilitaire Custom UI Editor
L’utilitaire Custom UI Editor permet de personnaliser l’intégralité du ruban d’un classeur au moyen de code XML. Cet utilitaire est livré avec les exemples de ce chapitre.
Pour utiliser Custom UI Editor, vous devez disposer du pack de redistribution .NET Framework. Si ce n’est pas le cas, un lien de téléchargement vous sera proposé lors de l’installation de l’utilitaire.
Une fois cet utilitaire installé, vous pouvez personnaliser le ruban d’un classeur en procédant de la façon suivante :
Créez un nouveau classeur dans Excel 2021 ou Microsoft 365 et enregistrez-le au format XLSM (classeur prenant en charge les macros).
Fermez le classeur : si celui-ci est ouvert, le code XML ne pourra pas être enregistré depuis l’utilitaire de personnalisation.
Lancez l’utilitaire Custom UI Editor.
Ouvrez votre classeur en utilisant la commande Open du menu File ou le bouton de commande .
Saisissez votre code XML de personnalisation dans l’interface.
Cliquez sur le bouton Validate pour vérifier la syntaxe du code XML.
Cliquez sur le bouton Generate CallBacks pour générer le code VBA des procédures associées aux fonctions personnalisées onAction.
Copiez ce code dans le Presse-papiers : vous pourrez ensuite le coller dans un module standard associé à votre classeur et inclure votre propre code VBA à l’intérieur des différentes procédures.
Enregistrez votre code XML en utilisant les commandes de menu File puis Save ou le bouton de commande .
Quittez l’utilitaire en utilisant les commandes de menu File puis Exit.
Ouvrez votre classeur...
Exemple de ruban personnalisé au moyen de l’utilitaire Custom UI Editor
1. Présentation
L’exemple suivant permet de renseigner les informations de facturation à partir du ruban.
Les interactions entre la feuille Excel contenant les informations de facturation se font dans les deux sens :
-
La saisie des données, au niveau du ruban, affecte le contenu des cellules de la feuille Excel.
-
La modification des cellules, dans la feuille Excel, modifie les données du ruban.
Le ruban est constitué d’un onglet de quatre groupes contenant les contrôles suivants :
-
Groupe « Type de facture » : deux boutons « bascule ».
-
Groupe « TVA et Port » : une liste déroulante, une case à cocher et une zone de saisie.
-
Groupe « Vendeur et Transporteur » : un menu et un menu dynamique.
-
Groupe « Conditions de règlement » : deux galeries de contrôles.
2. Code XML du ruban
<customUI
xmlns="http://schemas.microsoft.com/office/2009/07/customui"
onLoad="ChargeRuban" >
<!-- Masque le ruban Office -->
<ribbon startFromScratch="true">
<tabs>
<!-- Création d'un onglet personnalisé -->
<tab id="ONGLET_PERSO" label="Facturation">
<!-- Groupe personnalisé Type de facture -->
<group id="Groupe1" label="Type de facture">
<!-- Boutons bascule -->
<toggleButton id="btProd" label="Produits"
imageMso="FunctionsRecentlyUsedtInsertGallery" ...
Personnalisation du ruban au moyen de la collection CommandBars
L’accès à cette collection permet de réaliser les opérations suivantes à l’aide du langage VBA :
-
Créer des barres d’outils personnalisées : celles-ci se placent automatiquement dans le groupe Barres d’outils personnalisées de l’onglet Compléments (dernier onglet à droite) et se présentent sous la forme des barres d’outils des versions précédentes d’Excel.
-
Créer des barres de menu personnalisées : celles-ci peuvent se placer soit dans l’onglet Compléments, soit dans une feuille Excel sous la forme de menus contextuels (menus « popup »).
-
Créer une barre de commandes personnalisée au format Office 2021 ou Office 365.
-
Personnaliser les commandes en leur affectant des macros.
Exemples de barres de commandes
1. Barres d’outils personnalisées
Deux barres de commandes sont affichées : une barre d’outils et une barre de menu.
2. Commandes de menu au format Office 2021 ou Office 365
3. Ajouter le groupe à la barre d’outils Accès rapide
Les barres de commandes ainsi créées peuvent devenir accessibles depuis la barre d’outils Accès rapide de la façon suivante :
Positionnez le curseur en bas de la barre de commandes et cliquez sur le bouton droit de la souris.
Sélectionnez l’option Ajouter un groupe à la barre d’outils Accès rapide.
Les barres de commandes sont désormais accessibles à partir des boutons de commande ajoutés à la barre d’outils Accès rapide :
Barres d’outils personnalisées
Commandes de menu
Les barres de commandes
1. Terminologie
a. Barre de commandes
Représente les barres d’outils d’Excel, les barres d’outils personnalisées et les barres de menu.
b. Contrôle
Représente une commande (bouton de commande, option de menu...) d’une barre de commandes.
2. Créer une barre de commandes
CommandBars.Add(Name, Position, MenuBar, Temporary)
Cette méthode renvoie un objet CommandBar.
Name |
Nom de la nouvelle barre de commandes. |
Position |
Position de la nouvelle barre ; il peut s’agir de l’une des constantes suivantes : msoBarLeft : à gauche msoBarTop : en haut msoBarRight : à droite msoBarBottom : en bas msoBarFloating : non ancrée msoBarPopup : menu contextuel |
MenuBar | Affecter la valeur True si la nouvelle barre doit remplacer la barre active. |
Temporary | Affecter la valeur True s’il s’agit d’une barre temporaire ; les barres temporaires sont supprimées lors de la fermeture de l’application. |
Création d’une barre de menu et d’une barre d’outils. Ces barres ne seront visibles qu’après l’ajout des contrôles associés.
Dim Barre1 As CommandBar
Dim Barre2 As CommandBar
Sub Creation_Barres()
' Création d'une barre de menu appelée "Menu1"
Set Barre1 = CommandBars.Add(Name:="Menu1", _
Position:=msoBarTop)
' Affichage de la barre de menu créée
Barre1.Visible = True
' Création d'une barre d'outils appelée "Menu2"
Set Barre2 = CommandBars.Add(Name:="Menu2", _
Position:=msoBarTop)
End Sub
Attention, si le code est situé dans...
Contrôles (options ou boutons de commande) des barres de commandes
La collection d’objets CommandBarControls représente tous les contrôles d’une barre de commandes.
Pour accéder à cette collection, utilisez la propriété Controls des objets CommandBar et CommandBarPopup.
1. Ajouter un contrôle
Expression.Controls.Add(Type, Id, Parameter, Before, Temporary)
Cette méthode renvoie un objet CommandBarButton, CommandBarComboBox ou CommandBarPopUp qui sont des objets de type CommandBarControls.
Expression |
Expression qui renvoie un objet CommandBar ; obligatoire. |
Type |
Type du contrôle à ajouter ; il peut s’agir de l’une des constantes suivantes : msoControlButton : outil ou option de menu msoControlEdit : zone de saisie msoControlDropDown : zone de liste msoControlComboBox : zone de liste msoControlPopUp : menu contextuel |
Id |
Entier qui identifie un contrôle intégré ; si la valeur de l’argument est égale à 1 ou s’il est omis, un contrôle personnalisé vide du type indiqué est ajouté à la barre de commandes. |
Parameter |
En cas de contrôles intégrés, l’application conteneur l’utilise pour exécuter la commande ; en cas de contrôles personnalisés, cet argument peut servir à envoyer des informations à des procédures Visual Basic ou à stocker des informations sur le contrôle. |
Before |
Nombre qui indique la position du nouveau contrôle sur la barre de commandes ; si cet argument n’est pas spécifié, le contrôle est ajouté à la fin de la barre de commandes. |
Temporary |
Lui affecter la valeur True s’il s’agit d’un contôle temporaire ; les contrôles temporaires sont supprimés lors de la fermeture de l’application... |
Exemples de menus personnalisés
1. Présentation
Cet exemple permet de créer les barres de commandes suivantes :
-
Un groupe de commandes intitulé "Commandes de menu" :
-
Une barre de menu intitulée "Menu Frais", située dans le groupe de commandes "Barres d’outils personnalisées" permettant d’accéder aux options suivantes :
-
Une barre d’outils intitulée "Frais", située dans le groupe de commandes "Barres d’outils personnalisées" :
-
Une barre de menu contextuel affichée lorsque l’utilisateur se positionne sur la cellule nommée "Employé" et clique sur le bouton droit de la souris. Les employés sont extraits de la base Access Employes.accdb (base livrée avec les exemples de l’ouvrage).
2. Code des exemples
Pour créer les menus de l’exemple ci-dessus, vous devez effectuer les opérations suivantes :
-
Créer le document Excel.
-
Définir une zone d’impression.
-
Définir une zone de cellule nommée Employe incluant les cellules nom et n° employé.
-
Définir une zone de cellule nommée RAPPORT_DEPENSES incluant les cellules à imprimer.
-
Affecter les noms suivants aux cellules contenant les informations de l’employé : EMPLOYE, FONCTION, VILLE.
-
Ajouter un module standard appelé ProcMenus, ce module contiendra les procédures permettant de créer les différentes barres de commandes.
-
Ajouter un module standard appelé ProcActions, ce module contiendra les procédures personnalisées associées aux boutons de commande.
3. Code du module de classe ThisWorkbook
Option Explicit
___________________________________________________________________
Private Sub Workbook_Open()
' Affiche...