Les rubans : qu'est-ce donc ?
Dans Microsoft Office 2007 et 2010, le ruban vient remplacer les barres
d'outils et les menus des versions antérieures. C'est ce qui s'appelle désormais l'interface Microsoft Office Fluent puisqu'il est censé permettre de trouver les commandes usuelles de manière plus fluide, plus rapide.
|
(Cliquez pour agrandir) |
Si vous souhaitez développer à base de macros VBA un outil Excel disposant de plusieurs onglets entre lesquels vous devez naviguer ou si votre outil réalise un ensemble de tâches déclanchées sur des appuis boutons, des sélections de liste déroulantes ou des cases à cocher... privilégiez l'usage d'un ruban personnalisé pour exécuter ces actions.
Pour cela, commencez par installer CustomUI Editor, un utilitaire permettant l'édition de fichiers XML de description de rubans MS Office.
Etudions de près les différents composants d'un ruban MS Office :
- Les onglets permettent de passer d'un ruban à l'autre
- Le ruban est constitué d'un ensemble de groupes
- Chaque groupe est constitué d'un ensemble de boutons ou autres types de contrôles (checkbox, combobox, ...) de taille "normale" ou "large"
|
(Cliquez pour agrandir) |
Le code XML que vous allez éditer avec CustomUI Editor devra donc spécifier chacun de ces composants.
Réalisation du ruban pas à pas
Tout d'abord, sachez que CustomUI Editor tient compte de la version de vos suite MS Office : certains synthaxes de descrption XML diffèrent entre MS 2007 et MS2010. Il faudra donc veiller à créer, pour chacun de vos fichier Excel, deux version de code XML tenant compte de ces différences mineures.
1. Créez un nouveau fichier Excel à partir de l'application MS Excel et sauvegardez au format *.xlsm le dans le répertoire de votre choix, puis fermez-le.
Attention : le fichier Excel ne devra être ouvert que par une applicaiton à la fois, soit MS Excel soit CustomUI Editor afin de ne pas prendre le risque de perdre vos modifications.
2. Lancez l'utilitaire CustomUI Editor et ouvrez-y le fichier Excel que vous venez de fermer. Vous observerez le nom de votre fichier Excel dans la colonne de gauche de l'utilitaire, mais rien d'autre jusque là.
|
(Cliquez pour agrandir) |
3. Par un clic droit sur l’intitulé
de votre fichier Excel dans la colonne de gauche, sélectionnez les deux version
d’Office 2010 et 2007. Cela vous créera deux fichiers XML vides qui viendront s’ajouter
dans la colonne de gauche : customUI14.xml
pour Office 2010 et customUI.xml
pour office 2007. Pensez à sauvegarder votre action !
4. Double-cliquez sur customUI.xml le fichier XML destiné à la
version 2007 et collez dans la partie de droite de la fenêtre les lignes de
code suivantes, puis cliquez sur le bouton « Validate » afin de
vérifier la synthaxe, puis sauvegardez.
Lisez attentivement les commentaires
inscrits entres les symboles < !-- et -->
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" >
<!--Pour MS Office
2007, le lien http à spécifier point
vers le répertoire …/2006/01/…-->
<ribbon startFromScratch="false">
<!--Positionnez
cette valeur à TRUE pour masquer tous les autres onglets standards de MS Excel,
ou à FALSE pour les maintenir en place.-->
<tabs>
<!--Les Tabs sont
les onglets du ruban. Vous pouvez en créer autant que nécessaire.Ils vont se
positionner automatiquement à la fin du ruban -->
<tab id="SmartXL" label="Smart-XL" visible="true">
<!--Premier groupe
de contrôles : on insère ici deux boutons de taille large-->
<group id="GroupFichier" label="Fichier">
<button id="btnOuvrir" label="Ouvrir" onAction="OuvrirFichier" size="large" imageMso="FileOpen" />
<button id="btnEnregistrer" label="Enregistrer" onAction="EnregistrerFichier" size="large" imageMso="FileSave" />
</group>
<!--Deuxième groupe
de contrôles : on insère ici deux boutons de taille normal-->
<group id="GroupFeuille" label="Feuille">
<button id="btnAjouterFeuille" label="Ajouter" onAction="AjouterFeuille" size="normal" imageMso="SheetInsert" />
<button id="btnSupprimerFeuille" label="Supprimer" onAction="SupprimerFeuille" size="normal" imageMso="SheetDelete" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
|
(Cliquez pour agrandir) |
Pour chaque critère imageMso la valeur saisie entre guillemets correspond
au nom standard de l’image utilisée par MS Office. Attention, là encore les
noms peuvent varier entre les différentes versions de MS Office. Vous trouverez
la liste exhaustive des imageMso sur les liens suivants :
5. Copier le contenu XML du fichier cutoumUI.xml (MS Office 2007),
puis double-cliquez sur le fichier customUI14.xml (MS Office 2010) et collez le
code dans la partie droite de la fenêtre. Cliquez sur le bouton Validate et constatez
que l’utilitaire vous indique à corriger : remplacez au début du fichier
le chemin http par le lien suivant :
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="InitialiserRuban">
Remarquez qu’en cas d’erreur de synthaxe XML, CustomUI
Editor vous indiquera la ligne et la colonne où se situe l’erreur. Vous n’aurez
plus qu’à naviguer dans le code en surveillant le compteurs situé en bas à
droite de la fenetre jusqu’à atteindre l’erreur recherchée.
|
(Cliquez pour agrandir) |
6. Validez et sauvegardez votre fichier, puis cliquez sur le
bouton Generate Callbacks. L’utilitaire vous affichera alors la liste des procédures VBA que vous devrez
intégrer à vos macros Excel. Copier l’ensemble des lignes et collez-les dans un
fichier texte / bloc note pour le moment.
'Callback for btnOuvrir onAction
Sub OuvrirFichier(control As
IRibbonControl)
End Sub
'Callback for btnEnregistrer onAction
Sub EnregistrerFichier(control As
IRibbonControl)
End Sub
'Callback for btnAjouterFeuille onAction
Sub AjouterFeuille(control As IRibbonControl)
End Sub
'Callback for btnSupprimerFeuille onAction
Sub SupprimerFeuille(control As IRibbonControl)
End Sub
7. Fermez CustomUI Editor et ouvrez votre fichier sous MS
Excel. Si vous appuyez sur les boutons de votre ruban « Smart-XL », l’application
vous affichera des messages d’erreur dus au fait qu’elle ne trouve pas les
procédures de Callbacks spécifiées dans le code XML. Vous devez alors lancer l’éditeur
de code VBA et créer un module dédié dans lequel vous collerez vos lignes de
Callbacks. Vous pourrez alors coder le contenu de vos procédures selon vos
besoins.
Pour commencer vous pouvez copier les exemples ci-dessous dans
un module VBA :
'Callback for btnOuvrir onAction
Sub OuvrirFichier(control As
IRibbonControl)
Dim
Fichier
Fichier = Application.GetOpenFilename("Fichiers Excel (*.xlsx),
*.xlsx")
If Fichier Then Workbooks.Open Fichier
End Sub
'Callback for btnEnregistrer onAction
Sub EnregistrerFichier(control As
IRibbonControl)
ThisWorkbook.Save
End Sub
'Callback for btnAjouterFeuille onAction
Sub AjouterFeuille(control As IRibbonControl)
ThisWorkbook.Sheets.Add
End Sub
'Callback for btnSupprimerFeuille onAction
Sub SupprimerFeuille(control As IRibbonControl)
'
Supprime la feuille en cours d'affichage
ActiveSheet.Delete
End Sub
8. Sauvegardez votre fichier Excel et vous pouvez dès à
présent commencer à utiliser vos boutons.
|
(Cliquez pour agrandir) |
N’hésitez pas ajouter autant de groupes que nécessaire et à
adapter les boutons à vos besoins, en attendant le prochain tutoriel pour une
personnalisation plus approfondie du ruban…
Téléchargez le fichier