La personnalisation du ruban sous Excel 2007
Date de publication : 21/04/2008
Par
SilkyRoad (silkyroad.developpez.com)
Cet article est une présentation des options qui vous permettront de modifier la présentation
du ruban, sous Excel 2007.
I. Introduction
II. Les outils pour modifier le ruban
II-A. Manuellement
II-B. L'utilitaire Custom UI Editor
III. Personnaliser le ruban
III-A. Généralités
III-B. Les attributs
III-C. Les onglets
III-D. Les groupes
III-F. Les contrôles
III-F-1. labelControl
III-F-2. comboBox
III-F-3. gallery
III-F-4. button
III-F-5. buttonGroup
III-F-6. Box
III-F-7. checkBox
III-F-8. editBox
III-F-9. toggleButton
III-F-10. dropDown
III-F-11. command
III-F-12. menu
III-F-13. dynamicMenu
III-F-14. splitButton
III-F-15. separator
III-F-16. menuSeparator
III-F-17. dialogBoxLauncher
IV. Les fonctions d'appel: Callbacks
V. L'actualisation des contrôles dans le ruban
VI. Le chargement des images
VII. Conclusion
VIII. Liens
IX. Remerciements
X. Téléchargement
I. Introduction
Une des principales nouveautés sous Excel 2007, est le remplacement des menus
et des barres d'outils par un ruban constitué d'onglets qui regroupent
les fonctionnalités de l'application.
Cette nouvelle interface utilisateur semblera peut être déroutante pour les possesseurs d'anciennes
versions d'Excel.
L'adaptation se fait toutefois rapidement. Passez un peu de temps à repérer
dans quels onglets sont rangés vos anciennes barres d'outils
et familiarisez vous avec la logique du tableur, le ruban proposant des groupes de contrôles, arrangés
dans des onglets et regroupés par thème.
Si vous avez besoin d'aide, profitez des info-bulles qui détaillent les fonctionnalités
lorsque le curseur de la souris passe sur les menus.
Il est toujours possible d'utiliser les barres d'outils et les menus personnalisés de vos
anciens classeurs, et en créer de nouveaux par VBA, mais ils seront accessibles uniquement
depuis l'onglet
Complément.
Pour modifier le ruban, vous devez enregistrer vos classeurs au
format .xlsm (format xml prenant en charge les macros) et y ajouter un fichier xml (généralement
nommé customUI.xml par convention) qui contient les instructions de personnalisation.
Que faut-il indiquer dans le fichier xml ? C'est l'objet de ce tutoriel.
Vous pourrez ainsi ajouter vos propres menus/fonctions dans les classeurs,
mais également regrouper dans un seul onglet toutes les fonctions d'Excel que vous utilisez le plus
souvent, masquer le ruban ou des onglets prédéfinis, désactiver des transactions d'Excel,
renommer les commandes de l'application à votre goût.
Nota 1:
Utilisez le format .xlam pour créer un complément (macro complémentaire) et modifier le ruban
dès l'ouverture d'Excel.
Cet article ne décrit pas en détail l'Open XML et les nouveaux formats de fichier disponibles
dans Microsoft Office 2007. Consultez le tutoriel d'
Olivier Lebeau
si vous souhaitez obtenir plus d'information sur ces nouvelles extensions:
Le XML dans Microsoft Office (OpenXML).
Nota 2:
Bien qu'il soit possible de modifier manuellement le fichier xml de personnalisation, les exemples de
ce tutoriel sont majoritairement basés sur l'utilitaire "customUI Editor" présenté dans le chapitre II-B.
Pour réutiliser les contrôles prédéfinis du Ruban, vous devez connaître leur identificateur
(idMso/imageMso).
Cliquez sur le bouton "Office".
Cliquez sur le bouton "Options Excel".
Utilisez le menu "Personnaliser".
Le volet permet d'accéder à tous les contrôles (visibles et masqués).
Les identificateurs apparaissent dans une info-bulle lorsque vous passez le curseur sur les icônes.
Microsoft met également à votre disposition la liste des identificateurs de contrôles prédéfinis :
2007 Office System Document: Lists of Control IDs
II. Les outils pour modifier le ruban
II-A. Manuellement
Avant d'aller plus loin, il est important de connaitre les outils qui permettent de modifier le ruban.
Il n'existe malheureusement pas pour l'instant de concepteur pour gérer de manière intuitive le Ruban.
L'interface utilisateur reposant sur le langage
xml,
vous pouvez créer les fichiers de personnalisation depuis un simple éditeur de texte (par exemple
le Bloc-notes).
Le mode opératoire consiste à créer un fichier xml qui va contenir les paramètres de
personnalisation, puis à insérer ce fichier dans le classeur Excel préalablement sauvegardé
au format xlsm ou xlam.
Pour démarrer, vous devez créer le fichier xml de personnalisation:
Ouvrez le Bloc-notes et copiez les balises suivantes dans le fichier.
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="OngletPerso" label="OngletPerso" visible="true">
</tab>
</tabs>
</ribbon>
</customUI>
|
Sauvegardez le fichier au format xml, à l'emplacement de votre choix sur votre PC.
Par convention, ce fichier doit être nommé customUI.xml.
Ensuite, fermez le fichier.
Ouvrez un nouveau classeur Excel et enregistrez-le sous l'extension .xlsm (format openXML avec
macros).
Refermez le classeur.
Recherchez le classeur sur votre PC et ajoutez lui l'extension .zip.
Ensuite dézippez le fichier.
Ouvrez le dossier dézippé.
Ajoutez un répertoire nommé customUI dans le répertoire dézippé.
Faites glisser le fichier customUI.xml dans ce dossier.
Vous allez maintenant créer une relation entre le classeur et le fichier xml:
Démarrez le Bloc-notes.
Utilisez le menu Fichier/Ouvrir.
Ouvrez le fichier .rels du fichier Zip, depuis le bloc-notes :
Dans le champ "Fichier de type", sélectionnez l'option "Tous les fichiers".
Recherchez et ouvrez le fichier .rels dans le dossier dézippé (dans le sous répertoire _rels).
Ajoutez-y la balise ci-dessous.
| Xml |
<Relationship Id="rId10" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility"
Target="/customUI/customUI.xml"/>
|
Vous allez obtenir un fichier de ce style :
| Xml |
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId10" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility"
Target="/customUI/customUI.xml"/>
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties"
Target="docProps/app.xml"/>
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties"
Target="docProps/core.xml"/>
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
Target="xl/workbook.xml"/>
</Relationships>
|
Sauvegardez et refermez le fichier .rels.
Rezippez le dossier complet.
Supprimez l'extension .zip et renommez le classeur si nécessaire.
Ouvrez le classeur. Vous constatez qu'un nouvel onglet nommé "OngletPerso" est
ajouté dans le ruban.
L'onglet est vide car il s'agit ici d'un simple exemple de principe.
Vous découvrirez de nombreuses démos dans les chapitres suivants afin d'ajouter des contrôles et
compléter la personnalisation.
II-B. L'utilitaire Custom UI Editor
La méthode manuelle n'est pas toujours aisée à mettre en oeuvre.
Heureusement, il existe un utilitaire pour faciliter cette personnalisation :
Custom UI Editor Tool.
Cette application permet de créer et modifier les fichiers customUI.xml, et
les fichiers .rels sont automatiquement mis à jour sans que vous ayez besoin de les ouvrir
manuellement.
Nota:
Vous devez disposer du pack de redistribution .Net framework 2.
(Un lien de téléchargement est automatiquement proposé lors de l'installation de l'utilitaire de
personnalisation).
Par exemple, après avoir installé
Custom UI Editor Tool, créez un nouveau classeur
et enregistrez le au format xlsm (prenant en charge les macros).
Fermez le classeur (le fichier xml ne pourra pas être sauvegardé si le classeur est ouvert).
Lancez
Custom UI Editor.
Utilisez le menu File/Open.
Recherchez votre classeur Excel sur le PC.
Cliquez sur le bouton
Ouvrir.
Une page blanche s'affiche. Si votre classeur contenait déjà un ruban personnalisé, le contenu xml
s'afficherait à l'écran.
Collez le code xml suivant dans la fenêtre de l'éditeur:
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<!-- Indiquez True pour masquer tous les autres onglets standards-->
<ribbon startFromScratch="false">
<tabs>
<!-- Crée un onglet personnalisé: -->
<!-- L
<!-- Utilisez insertAfterMso="NomOngletPrédéfini" pour préciser l
<tab id="OngletPerso" label="OngletPerso" visible="true">
<!-- Crée un groupe -->
<group id="Essai" label="Essai CustomUI">
<!-- Crée un bouton: -->
<!--onAction="ProcLancement" définit la macro qui va être déclenchée lorsque vous allez cliquer sur le bouton -->
<!--imageMso="StartAfterPrevious" définit une image de la galerie Office qui va s
<!--(consultez la FAQ Excel "Comment retrouver l'ID de chaque contrôle du ruban ?" pour plus de détails). -->
<!-- Nota: il est aussi possible d
<button id="btLance01" label="Lancement" screentip="Déclenche la procédure."
onAction="ProcLancement"
supertip="Utilisez ce bouton pour Lancer la macro."
size="large" imageMso="StartAfterPrevious" />
<!-- Crée un deuxième bouton -->
<button id="btAide01" label="Aide" screentip="Consultez l'aide."
onAction="OuvertureAide" size="large"
supertip="Consultez les meilleurs cours et tutoriels Office."
imageMso="FunctionsLogicalInsertGallery"
tag="http://office.developpez.com/" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
|
Cliquez sur le bouton Generate CallBacks. Cette action va définir une macro pour chaque
paramétrage d'attribut (onAction dans notre exemple) spécifiée dans votre fichier xml.
Consultez le chapitre
consacré aux fonctions CallBacks pour plus de détails.
| Vba |
Sub ProcLancement(control as IRibbonControl)
End Sub
Sub OuvertureAide(control as IRibbonControl)
End Sub
|
Faites un Copier (Ctrl+C) des CallBacks pour les placer dans le presse papiers. Vous ajouterez ces
macros
ultérieurement dans un module standard de votre classeur.
Revenez sur l'onglet
CustomUI.
Enregistrez les modifications xml.
Ouvrez votre classeur Excel en ignorant les éventuels messages d'erreurs.
Vous constatez qu'un nouvel onglet apparait dans le ruban.
Pour terminer, vous allez ouvrir l'éditeur de macros (Alt+F11).
Insérez un module standard.
Collez les CallBacks précédemment créés.
Il ne vous reste plus qu'à rédiger vos macros. Celles ci seront associées à l'évènement Clic sur
les boutons du ruban.
Par exemple:
| Vba |
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpfile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub ProcLancement(control As IRibbonControl)
MsgBox "Opération 'Personnaliser le ruban' réussie!"
End Sub
Sub OuvertureAide(control As IRibbonControl)
ShellExecute 0&, vbNullString, control.Tag, vbNullString, vbNullString, 0
End Sub
|
Cliquez sur les boutons de l'onglet "OngletPerso" pour visualiser le résultat.
L'utilitaire customUI Editor permet également de gérer l'ajout d'images ou d'îcones personnels
par le bouton "Insert Icons".
Remarque :
Pour réutiliser les exemples de cet article tout en conservant l'indentation, copiez les codes xml
dans le bloc-notes et ensuite collez les dans la fenêtre de l'utilitaire customUI Editor.
III. Personnaliser le ruban
III-A. Généralités
Comme cela a déjà été partiellement évoqué dans le chapitre précédent, les fichiers customUI.xml
contiennent toutes les informations permettant la personnalisation du ruban. Ensuite, les
classeurs doivent être enregistrés aux nouveaux formats Office
OpenXML (xlsm et xlam).
Quand le classeur s'ouvre, l'application Excel lit le contenu du fichier xml et applique les
personnalisations qui y sont définies. Lorsqu'il s'agit d'un fichier .xlsm, les personnalisations
sont accessibles uniquement quand le
classeur est actif. Dans un complément .xlam, les personnalisations sont accessibles en permanence,
pour l'ensemble des classeurs ouverts dans l'application. Les personnalisations sont automatiquement
supprimées lorsque le classeur (xlsm ou xlam) est refermé.
Cette partie du tutoriel montre :
Comment doivent être structurés les fichiers customUI.xml.
A quoi correspondent les différentes balises.
Pour qu'un fichier xml soit valide, le code doit respecter le schéma standard Office.
Excel propose un outil d'aide pour être informé des erreurs dans le fichier de
personnalisation xml:
Utilisez le bouton Office
Bouton "Options Excel"
Menu "Options avancées"
Cochez l'option "Afficher les erreurs du complément d'interface utilisateur", dans la zone "Général".
Désormais, lorsque vous ouvrez le classeur, et si le fichier de personnalisation contient une
erreur, un message s'affiche en précisant les numéros de ligne et de colonne posant soucis,
ainsi qu'une description courte.
Il est important de noter que le contenu des fichiers xml est sensible à la casse. Vous devez
être très attentif aux majuscules et aux minuscules dans l'utilisation des mots
clefs (écriture des attributs, balises ...).
Chaque fichier customUI.xml commence systématiquement par l'élément :
| Xml |
<customUI xmlns=?http://schemas.microsoft.com/office/2006/01/customui?>
|
Et se termine par la balise de fermeture:
customUI est l'élément de base (root) pour le contenu du fichier xml.
Deux fonctions Callbacks peuvent être exécutées lors du chargement du ruban :
onLoad qui indique la fonction à exécuter lors du chargement
du ruban.
loadImage qui spécifie la procédure de chargement des images.
Consultez le chapitre "La mise à jour dynamique du ruban" pour en savoir plus sur les paramètres
additionnels qui permettent l'actualisation des contrôles.
Le ruban est défini par la balise ribbon: Cette balise est l'élément
principal pour toutes les modifications du ruban.
Vos paramètres de personnalisation doivent être insérés entre ces balises.
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
</ribbon>
</customUI>
|
L'application offre la possibilité de masquer tous les onglets prédéfinis en ajoutant
l'attribut startFromScratch et en lui appliquant la valeur "true".
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<!-- Indiquez True pour masquer tous les autres onglets standards-->
<ribbon startFromScratch="true">
</ribbon>
</customUI>
|
Ainsi, tous les onglets standards sont cachés et seules les options "Nouveau", "Ouvrir",
"Enregistrer", "Documents récents", "Options Excel" apparaissent depuis le bouton "Office". Ces
éléments restants sont également personnalisables (par la balise "officeMenu" qui sert à
modifier les composants du bouton "Office" et à l'attribut "visible").
Plus généralement, tous les contrôles prédéfinis peuvent être réutilisés, modifiés, exécutés,
masqués dans vos projets. Reportez vous au chapitre III-F-11 pour plus d'informations.
Utilisez les tabulations pour indenter votre code et faciliter la lisibilité de l'ensemble. Vous
pouvez également ajouter des commentaires dans le fichier xml:
III-B. Les attributs
Le ruban, les onglets, les groupes et tous les contrôles possèdent des attributs qui permettent
de paramétrer leur apparence et leur contenu. Le tableau suivant récapitule la liste des attributs,
le type de donnée, une description et à quels contrôles ils peuvent être appliqués.
| Attribut |
Valeur |
Description |
S'applique à |
| boxStyle |
horizontal ou vertical |
Regroupement vertical ou horizontal de contrôles. |
box |
| columns |
donnée de type numérique |
Définit le nombre de colonnes dans la galerie. |
gallery |
| description |
donnée de type texte
4096 caractères maximum |
Renvoie une description pour le contrôle. |
button,splitButton, toggleButton, checkBox, gallery,
menu, dynamicMenu
|
| enabled |
true ou false |
Autorise ou non l'utilisation du contrôle. |
tous les contrôles |
| id |
donnée de type texte
1024 caractères maximum |
Identificateur unique pour chaque contrôle personnel
dans le fichier de personnalisation.
La chaîne de caractères ne doit pas contenir d'espace.
|
tab, group, box, button, buttonGroup, checkBox,
comboBox, dropDown, dynamicMenu, editBox,
gallery, lableControl, menu, menuSeparator, separator,
splitButton, toggleButton |
| idMso |
donnée de type texte
1024 caractères maximum |
Identificateur des contrôles prédéfinis.
|
tous les contrôles |
| idQ |
donnée de type texte
1024 caractères maximum |
Identificateur qualifié permettant de partager
un ou plusieurs éléments entres différents classeurs
(Dans chaque classeur, le fichier xml de personnalisation
doit contenir un espace de nom identique).
|
tab, group, box, button, buttonGroup, checkBox,
comboBox, dropDown, dynamicMenu, editBox,
gallery, lableControl, menu, menuSeparator, separator,
splitButton, toggleButton |
| image |
donnée de type texte
1024 caractères maximum |
Définit l'image personnelle qui va être associée au contrôle.
|
button, comboBox, dropDown, dynamicMenu, editBox,
gallery, menu, splitButton, toggleButton
|
| imageMso
|
donnée de type texte
1024 caractères maximum |
Identificateur (id) d'un contrôle prédéfini dont l'image va être
réutilisé pour un autre contrôle. |
button, comboBox, dropDown, dynamicMenu, editBox,
gallery, menu, splitButton, toggleButton |
| insertAfterMso |
donnée de type texte
1024 caractères maximum |
Insère le contrôle après l'identificateur prédéfini que vous spécifiez. |
tab, group, box, button, buttonGroup, checkBox,
comboBox, dropDown, dynamicMenu, editBox,
gallery, lableControl, menu, menuSeparator, separator,
splitButton, toggleButton |
| insertAfterQ |
donnée de type texte
1024 caractères maximum |
Insère le contrôle après l'identificateur qualifié que vous spécifiez. |
tab, group, box, button, buttonGroup, checkBox,
comboBox, dropDown, dynamicMenu, editBox,
gallery, lableControl, menu, menuSeparator,
separator, splitButton, toggleButton |
| insertBeforeMso |
donnée de type texte
1024 caractères maximum |
Insère le contrôle avant l'identificateur prédéfini que vous spécifiez.
|
tab, group, box, button, buttonGroup, checkBox,
comboBox, dropDown, dynamicMenu, editBox,
gallery, lableControl, menu, menuSeparator, separator,
splitButton, toggleButton |
| insertBeforeQ |
donnée de type texte
1024 caractères maximum |
Insère le contrôle avant l'identificateur qualifié que vous spécifiez. |
tab, group, box, button, buttonGroup, checkBox,
comboBox, dropDown, dynamicMenu, editBox,
gallery, lableControl, menu, menuSeparator, separator,
splitButton, toggleButton |
| invalidateContent
OnDrop |
true ou false |
Actualise automatiquement le contenu du contrôle
lorsque celui-ci est sélectionné. |
comboBox, gallery, dynamicMenu |
| itemHeight |
donnée de type numérique
4096 (pixels) maximum |
Définit la hauteur d'un élément de la galerie. |
gallery |
| itemSize |
large ou normal |
Définit la taille des éléments dans les menus. |
menu |
| itemWidth |
donnée de type numérique
4096 (pixels) maximum |
Définit la largeur d'un élément de la galerie |
gallery |
| keytip |
donnée de type texte
3 caractères maximum |
Définit un raccourci clavier pour le contrôle (Un raccourci
clavier est disponibles après l'utilisation de la touche ALT. |
Les onglets, les groupes et tous les contrôles |
| label |
donnée de type texte
1024 caractères maximum |
Définit le titre du contrôle. |
Les onglets, les groupes et tous les contrôles |
| maxLength |
donnée de type numérique |
Définit le nombre de caractères maximum qui peut
être utilisé dans un champ de saisie. |
editBox, comboBox |
| rows |
donnée de type numérique |
Définit le nombre de lignes dans la galerie. |
gallery |
| screentip |
donnée de type texte
1024 caractères maximum |
Définit une petite info-bulle d'information pour le
contrôle. |
group, label, dialogBoxLauncher, button, splitButton,
toggleButton, checkBox, editBox, comboBox,
dropDown, gallery, menu, dynamicMenu |
| showImage |
true ou false |
Définit si l'image du contrôle sera affichée. |
button, toggleButton, editBox, combobox, dropDown, gallery, menu, dynamicMenu
|
| showItemImage |
true ou false |
Définit si l'image d'un élément du contrôle sera affichée. |
comboBox, dropDown, gallery |
| showItemLabel |
true ou false |
Définit si l'étiquette d'un élément du contrôle sera affichée. |
comboBox, dropDown, gallery |
| showLabel |
true ou false |
Définit si l'étiquette du contrôle sera affichée. |
button, comboBox, dropDown, dynamicMenu, editBox,
gallery, labelControl, menu, splitButton, toggleButton |
| size |
large ou normal |
Définit la taille du contrôle. |
tous les contôles |
| sizeString |
donnée de type texte
1024 caractères maximum |
Chaîne de caractères permettant d'ajuster la largeur du contrôle.
|
editBox, comboBox, gallery |
| startFromScratch |
true ou false |
La valeur "true" masque les onglets prédéfinis du ruban et quelques
éléments du bouton "Office".
La valeur "false" (donnée pas défaut) affiche les onglets prédéfinis. |
ruban |
| supertip |
donnée de type texte |
Définit une info-bulle complémentaire pour le contrôle.
Celui-ci s'affichera à la suite des informations indiquées dans l'attribut "screentip".
Utilisez la chaîne de caractères pour créer un retour à la ligne.
|
group, label, dialogBoxLauncher, button, splitButton,
toggleButton, checkBox, editBox, comboBox,
dropDown, gallery, menu, dynamicMenu
|
| tag |
donnée de type texte
1024 caractères maximum |
Information personnelle complémentaire pour le contrôle. |
tous les contrôles |
| title |
donnée de type texte |
Définit un titre. |
menuSeparator
|
| visible |
true ou false |
Définit si le contrôle est visible. |
onglet, groupe et tous les contrôles |
| xmIns |
donnée de type texte |
Définit l'espace de nom (nameSpace) et permet d'identifier
qu'il s'agit d'un fichier de ruban (RibbonX) Office:
http://schemas.microsoft.com/office/2006/01/customui |
customUI |
III-C. Les onglets
Les onglets sont les éléments de base dans le ruban.
La balise tabs représente l'ensemble des onglets
prédéfinis et personnalisés. La balise tab définit un onglet particulier
(prédéfini ou personnalisé), identifiable par son id. Comme pour tout type de
contrôle, il existe 3 types d'attributs identificateurs (id):
* id: Pour un élément personnalisé.
* idMso: Pour un élément prédéfini (standard).
* idQ: Pour un élément partagé entre plusieurs classeurs.
Remarque:
Chaque identificateur id doit impérativement être unique dans le fichier xml.
Cet exemple masque l'onglet prédéfini "Révision" en donnant la valeur "false" à l'attribut
"visible" et ajoute un nouvel onglet nommé "OngletPerso".
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<!-- Masque l
<tab idMso="TabReview" visible="false"/>
<!-- Ajoute un nouvel onglet nommé OngletPerso -->
<tab id="OngletPerso" label="Mes fonctions préférées" visible="true">
</tab>
</tabs>
</ribbon>
</customUI>
|
Vous pouvez également spécifier la position
d'un onglet personnalisé par rapport aux onglets standards, grâce aux attributs
"insertAfterMso" et "insertBeforeMso":
| Xml |
<!-- Va positionner l
<tab id="OngletPerso" label="Mes fonctions préférées" insertAfterMso="TabHome" visible="true">
|
Voici la liste des onglets standards dans Excel2007:
TabHome: onglet Accueil
TabInsert: onglet Insertion
TabPageLayoutExcel: onglet Mise en page
TabFormulas: onglet Formules
TabData: onglet Données
TabReview: onglet Révision
TabView: onglet Affichage
TabDeveloper: onglet Développeur
TabAddIns: onglet Compléments
Si l'intitulé des onglets prédéfinis ne vous convient pas, ceux-ci peuvent être modifiés depuis
un fichier de personnalisation.
Cet exemple remplace la description de l'onglet "Développeur" (TabDeveloper) par la chaîne
"Gestion macros et XML".
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab idMso="TabDeveloper" label="Gestion macros et XML" />
</tabs>
</ribbon>
</customUI>
|
Si vous avez créé plusieurs compléments .xlam dans Excel 2007 et que chacun d'entre eux contient
un onglet personnel qui
s'affiche dans le ruban, vous pouvez être intéressé de les regrouper dans un même onglet, lorsqu'ils
sont ouverts simultanément.
Pour réaliser cette action, le fichier CustomUI.xml de chaque complément doit contenir certaines
informations identiques:
Un nom identique (xmls:A="Mes macros complémentaires")
Un qualificateur identique (idQ="A:CibleAddIn")
L'attribut idQ (qualified ID) permet de spécifier un élément commun à plusieurs classeurs.
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
xmlns:A="Mes macros complémentaires">
<ribbon startFromScratch="false">
<tabs>
<tab idQ="A:CibleAddIn" label="Mes macros complémentaires" visible="true">
</tab>
</tabs>
</ribbon>
</customUI>
|
Vous pouvez ensuite ajouter les groupes et vos options personnelles dans chaque classeur.
Par exemple:
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
xmlns:A="Mes macros complémentaires">
<ribbon startFromScratch="false">
<tabs>
<tab idQ="A:CibleAddIn" label="Mes macros complémentaires" visible="true">
<group id="Projet01" label="Projet 01">
<button id="btnLance01" label="Lancement 01"
onAction="ProcLancement01"
size="normal" imageMso="Repeat" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
|
Désormais lorsque vous ouvrez un complément contenant l'attribut (idQ) commun, un nouveau
groupe est ajouté dans l'onglet "Mes macros complémentaires".
III-D. Les groupes
Chaque groupe est défini par la balise group. Ils apparaissent à l'intérieur l'onglet, dans
le même ordre que vous les avez définis dans le fichier de personnalisation.
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<!-- Ajoute un nouvel onglet nommé OngletPerso -->
<tab id="OngletPerso" label="Mes fonctions préférées" visible="true">
<!-- Crée un groupe -->
<group id="Gr01" label="Groupe 01">
</group>
<!-- Crée un deuxième groupe -->
<group id="Gr02" label="Groupe 02">
</group>
</tab>
</tabs>
</ribbon>
</customUI>
|
Vous pouvez également récupérer un groupe prédéfini et l'insérer dans un autre onglet.
Ce code affiche le groupe "bibliothèque de fonctions" dans un onglet personnalisé:
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<!-- Ajoute un nouvel onglet nommé OngletPerso -->
<tab id="OngletPerso" label="Mes fonctions préférées" visible="true">
<!-- Ajoute le groupe standard
<group idMso="GroupFunctionLibrary" />
</tab>
</tabs>
</ribbon>
</customUI>
|
Tous les autres cas de figure sont réalisables dans vos projets:
* Ajouter un groupe personnel dans un onglet prédéfini.
* Afficher un groupe prédéfini dans un autre onglet prédéfini.
* Masquer un groupe prédéfini.
III-F. Les contrôles
Une fois définis l'onglet et le groupe (qu'ils soient de type standards ou personnalisés) dans le
fichier customUI.xml, vous allez pouvoir paramétrer les contrôles. Une large panoplie d'objets,
décrits dans les sous chapitres suivants, est mise à votre disposition.
III-F-1. labelControl
Le labelControl est une zone d'étiquette sans action, utilisée pour afficher des
informations
ou pour par exemple servir d'en-tête lorsque vous créez des séparateurs dans le ruban.
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="OngletPerso" label="Exemples de labelControl">
<group id="GR1" label="Test">
<labelControl id="LC01" label=" Mon texte 01" />
<separator id="Sep01"/>
<labelControl id="LC02" label="Montexte 02" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
|
III-F-2. comboBox
Le contrôle comboBox (zones de liste déroulante) permet de choisir une donnée dans une liste
de choix, mais également d'écrire une valeur manuellement dans le champ de saisie.
Le contenu de la liste peut être défini en statique, comme dans l'exemple ci-dessous, ou
dynamiquement par VBA.
Chaque item correspond à un élément de la liste déroulante :
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="OngletPerso" label="Exemples ComboBox">
<group id="GR1" label="Test">
<comboBox id="CB1" label="Coefficient" onChange="ChangeCB1" >
<item id="it1" label="1" imageMso="MacroPlay" />
<item id="it2" label="1,25" imageMso="CellsInsertDialog" />
<item id="it3" label="1,5" imageMso="FileOpen" />
<item id="it4" label="1,8" imageMso="Spelling" />
</comboBox>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
|
La fonction CallBack associée à l'attribut onChange, à placer dans un module standard
du classeur:
| Vba |
Sub ChangeCB1(control As IRibbonControl, text As String)
MsgBox text
End Sub
|
Le code xml suivant gère l'alimentation de la liste déroulante par VBA. Il permet d'afficher les
données contenues dans colonne A de la Feuil1, dans le comboBox.
Le rappel getItemCount définit le nombre d'items à afficher dans le contrôle.
L'attribut invalidateContentOnDrop actualise automatiquement le contenu du contrôle
lorsque celui-ci est sélectionné.
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" >
<ribbon startFromScratch="false">
<tabs>
<tab id="OngletPerso" label="OngletPerso" visible="true">
<group id="Projet01" label="Projet 01">
<!-- getItemCount="NbItemCombo" va définir le nombre d
<!-- getItemLabel="ComboLabel" permet d
<!-- invalidateContentOnDrop="true" permet la mise à jour automatique du contrôle. -->
<comboBox id="Combo1" label="Choix : " getItemCount="NbItemCombo" getItemLabel="ComboLabel"
invalidateContentOnDrop="true" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
|
Les fonctions de rappel associées au code xml, à placer dans un module standard du
classeur :
| vba |
Sub NbItemCombo(control As IRibbonControl, ByRef returnedVal)
returnedVal = Feuil1.Range("A65536").End(xlUp).Row
End Sub
Sub ComboLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
If Feuil1.Range("A65536").End(xlUp).Row = 0 Then Exit Sub
returnedVal = Feuil1.Cells(index + 1, 1)
End Sub
|
III-F-3. gallery
Le contrôle
gallery est un tableau qui contient d'autres types de contrôles.
Vous pouvez définir le nombre de lignes et de colonnes dans votre grille, ainsi que les
dimensions.
Cet exemple permet de choisir un nom de mois dans le tableau ou de sélectionner une date
particulière. La sélection s'affiche dans la cellule active. La partie de la procédure
qui affiche le calendrier pour définir une date particulière nécessite de disposer
de l'ocx MSCOMCT2.ocx.
| Xml |
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="objRuban">
<ribbon>
<tabs>
<tab id="Planning" label="Gestion planning" >
<group id="Calendrier" label="Le calendrier">
<gallery id="gallery01"
size="large"
imageMso="StartAfterPrevious"
label="Sélectionnez un mois :"
columns="3"
|