Personnaliser la vue Backstage d'Access 2010

Morgan BILLY

Dans cet article, je vais vous présenter la personnalisation de la vue Backstage de la suite Office 2010.
Vous pouvez le commenter et lui donner une note : Commentez

- Titre : Personnaliser la vue Backstage d'Access 2010

- Auteur : Morgan BILLY

- Parution : 23 mars 2010

- Mise à jour : 15 mai 2012

- Public visé :

- Licence : Copyright ® 2012 Morgan BILLY. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Présentation de la vue Backstage

- III. Définir la table contenant le XML

- III-1. Stockage du XML dans la base de données

- III-1-1. Déclarer un Ruban au démarrage de l'application

- III-2. Stockage du XML dans un fichier externe

- III-2-1. Déclarer un Ruban au démarrage de l'application

- IV. Les onglets prédéfinis de la vue Backstage

- IV-1. Astuce

- V. Autres liens

- VI. La vue Backstage

- VI-1. OnLoad - Ouverture de la vue Backstage

- VI-2. loadImage

- VI-3. Mise à jour du Ruban

- VI-3-1. Invalidate

- VI-3-2. InvalidateControl

- VII. Personnalisation du volet de navigation de la vue Backstage

- VII-1. Boutons

- VII-1-1. Attributs (Bouton)

- VII-2. Onglets

- VII-2-1. Attributs (Onglet)

- VII-2-2. firstColumn

- VII-2-2-1. Groupe de contrôles (group)

- VII-2-2-1-1. primaryItem

- VII-2-2-1-2. topItem

- VII-2-2-1-3. bottomItems

- VII-2-2-1-5. LayoutContainer

- VII-2-2-1-4. Attributs (Groupes de contrôles)

- VII-2-2-2. Groupe de tâches (taskGroup)

- VII-2-2-2-1. category (Groupe de tâches (taskGroup))

- VII-2-2-2-1-1. Tâche (category (Groupe de tâches (taskGroup)))

- VII-2-2-2-1-2. Attributs (category (Groupe de tâches (taskGroup)))

- VII-2-2-2-2. Attributs (Groupe de tâches)

- VII-2-2-3. Formulaire Groupement de tâches

- VII-2-2-3-1. Attributs (Groupement de tâches)

- VII-2-3. secondColumn

- VIII. Contrôles

- VIII-1. Boutons (button)

- VIII-1-1. Attributs (Bouton (button))

- VIII-2. Case à Cocher (checkBox)

- VIII-2-1. Attributs (Case à Cocher (checkBox))

- VIII-3. Liste (comboBox)

- VIII-3-1. item (Liste (comboBox))

- VIII-3-1-1. Attributs (item (Liste (comboBox)))

- VIII-3-2. Attributs (Liste (comboBox))

- VIII-4. Liste déroulante (dropDown)

- VIII-4-1. item (Liste déroulante (dropDown))

- VIII-4-1-1. Attributs (item (Liste déroulante (dropDown)))

- VIII-4-2. Attributs (Liste déroulante (dropDown))

- VIII-5. Zone de saisie (editBox)

- VIII-5-1. Attributs (Zone de saisie (editBox))

- VIII-6. Lien hypertexte (hyperlink)

- VIII-6-1. Attributs (Lien hypertexte (hyperlink))

- VIII-7. Image (imageControl)

- VIII-7-1. Attributs (Image (imageControl))

- VIII-8. Contrôle étiquette (labelControl)

- VIII-8-1. Attributs (Contrôle étiquette (labelControl))

- VIII-9. Groupe de boutons radio (radioGroup)

- VIII-9-1. Bouton radio (radioButton)

- VIII-9-1-1. Attributs (Bouton radio (radioButton))

- VIII-9-2. Attributs (Groupe de boutons radio (radioGroup))

- VIII-10. Regroupement (groupBox)

- VIII-10-1. Contrôles (Regroupement (groupBox))

- VIII-10-2. Attributs (Regroupement (groupBox))

- IX. Attributs

- IX-1. idMso

- IX-2. idQ

- IX-3. id

- IX-4. enabled

- IX-5. visible

- IX-6. label

- IX-7. imageMso

- IX-8. image

- IX-9. keytip

- IX-10. insertBeforeMso

- IX-11. insertBeforeQ

- IX-12. insertAfterMso

- IX-13. insertAfterQ

- IX-14. isDefinitive

- IX-15. title

- IX-16. firstColumnMinWidth

- IX-17. firstColumnMaxWidth

- IX-18. secondColumnMinWidth

- IX-19. secondColumnMaxWidth

- IX-20. columnWidthPercent

- IX-21. showlabel

- IX-22. style

- IX-23. helperText

- IX-24. allowedTaskSizes

- IX-25. screentip

- IX-26. supertip

- IX-27. expand

- IX-28. description

- IX-29. sizeString

- IX-30. alignLabel

- IX-31. tag

- IX-32. maxLength

- IX-33. target

- IX-34. altText

- IX-35. noWrap

- IX-36. align

- IX-37. layoutChildren

- X. Callback

- X-1. onAction

- X-1-1. Case à cocher

- X-1-2. Liste

- X-2. getEnabled

- X-3. getVisible

- X-4. getLabel

- X-5. getImage

- X-6. getKeytip

- X-7. getTitle

- X-8. getShowLabel

- X-9. getHelperText

- X-10. getStyle

- X-11. getScreentip

- X-12. getSupertip

- X-13. getDescription

- X-14. getPressed

- X-15. onChange

- X-16. getText

- X-17. getItemCount

- X-18. getItemiD

- X-19. getItemLabel

- X-20. getSelectedItemIndex

- X-21. getTarget

- X-22. getAltText

- XI. Téléchargement

- XII. Remerciements

I - Introduction

La vue Backstage d'Access 2010 reprend l'ancien menu Outils d'Access 2003 (gestion partage, options) ainsi que le menu Fichier. Access 2007 avait commencé cette centralisation de ces commandes. On retrouve, dans la vue Backstage, la gestion du fichier ("Enregistrer", "Ouvrir", "Imprimer"). La personnalisation de la vue permet de rendre vos applications plus professionnelles lors de leurs déploiements. Vous pouvez, par exemple, gérer les options de votre application depuis la vue Backstage.

Tout comme le Ruban dans Access 2007, la personnalisation se réalise par du XML. Une balise <backstage> a fait son apparition. Depuis un même fichier vous personnalisez le Ruban et la vue Backstage.

Prérequis :

Cet article est destiné aux utilisateurs avancés connaissant le XML pour le Ruban d'Access 2007 et Access en général.

Pour les néophytes : je vous invite à lire l'article de Christophe WARIN Création de rubans personnalisés sous Microsoft Access 2007

II - Présentation de la vue Backstage

La vue Backstage est disponible depuis l'onglet Fichier, qui remplace le bouton Office de la version 2007. Cette vue rassemble les commandes de gestion de fichiers et l'ensemble des commandes de l'ancien menu du bouton Office.

Cette vue est découpée en deux parties :

- sur la partie barre de navigation, située à gauche, nous avons en première partie des commandes rapides (Ouvrir, Enregistrer, Fermer la base de données, etc.) et en seconde partie des onglets qui se situent au plus haut niveau de hiérarchisation des onglets, dans lesquels se trouvent des commandes concernant leurs fonctionnalités.

- La partie centrale regroupe des commandes concernant l'onglet sélectionné. Cette vue peut se définir en deux colonnes et par groupes.

III - Définir la table contenant le XML

Tout comme la version 2007, la personnalisation du Ruban et de la vue Backstage dans Access 2010 s'effectue par du code XML. Une nouvelle balise : <backstage> a fait son apparition et permet de définir le Ruban et la vue Backstage dans le même code XML.

Deux possibilités s'offrent à vous pour définir le XML de personnalisation.

III-1 - Stockage du XML dans la base de données

Cette solution présente l'avantage d'avoir l'ensemble des informations directement dans la base de données. Il suffit de créer une table et de la définir en objet système, de sélectionner le ruban au démarrage de l'application et le tour est joué.

Nous allons créer une table qui accueillera le XML permettant la personnalisation du Backstage.

Créer une nouvelle table dans votre base de données :

Trois champs composent cette table, nommez-les comme suit :

- NumRibbon => de type NuméroAuto

- RibbonName => de type Texte

- RibbonXML => de type Memo

Enregistrez la table sous le nom USysRibbons. Lors de l'enregistrement il se peut que la table disparaisse du volet de navigation. Pour retrouver l'affichage de la table il faut autoriser l'affichage des objets systèmes. Effectuez un clic droit sur le titre du volet de navigation, sélectionnez Options de navigation. Dans la nouvelle fenêtre cochez Afficher les objets systèmes.

Il vous suffit, maintenant, d'alimenter cette table pour créer vos Rubans. Dans ce principe vous devez inclure la personnalisation de la vue Backstage dans le Ruban de démarrage. Vous pourrez ensuite appeler les autres Rubans dans les formulaires et/ou états.

III-1-1 - Déclarer un Ruban au démarrage de l'application

Pour définir le Ruban au démarrage, il vous faut sélectionner dans les Options de la base de données, dans l'onglet base de données active, le Ruban à charger au démarrage.

Chaque enregistrement de la table USysRibbons ajoute une entrée dans une liste déroulante. Cette liste est chargée au démarrage de l'application et si vous ajoutez un enregistrement dans la table ou si vous changez la sélection du Ruban, il vous faudra redémarrer la base de données.

III-2 - Stockage du XML dans un fichier externe

Cette solution consiste à lire un fichier externe à la base de données et de type XML. Lors du déploiement de votre base de données vous devrez transmettre et stocker ce fichier XML pour personnaliser la vue Backstage.

Pour cela vous devez créer un nouveau fichier XML, qui contiendra l'ensemble des balises et paramètres XML pour la personnalisation de la vue Backstage.

Une fois le fichier créé, il faut le lire et charger l'ensemble du XML au démarrage de l'application. Pour cela nous allons créer une fonction qui, appelée au démarrage par une macro, permettra de personnaliser la vue et le Ruban en fonction du code du XML.

Nous allons reprendre le code du tutoriel de Christophe WARIN pour charger le contenu XML à la méthode LoadCustomUI et le placer dans un nouveau module nommé mdlLoadRuban.

Public Function LoadRibbon()
Dim strXML As String
Dim oFso As New FileSystemObject
Dim oFtxt As TextStream
'Charge le fichier XML en mémoire
Set oFtxt = oFso.OpenTextFile(CurrentProject.Path & _
"\backstage.xml", ForReading)
'Récupère le contenu
strXML = oFtxt.ReadAll
'Charge le ruban personnalisé correspondant sous le nom backstage
Application.LoadCustomUI "backstage", strXML
End Function

Le fichier XML a pour nom backstage.xml et doit être placé dans le même dossier que la base de données. Il ne nous reste plus qu'à créer une macro que l'on nommera Autoexec. De par son nom, cette macro sera automatiquement lancée au démarrage de l'application. Appelez la fonction LoadRibbon() avec l'instruction ExécuterCode.

Un article présente le nouvel éditeur de macro d'Access 2010, je vous invite à le consulter.

Cette solution ne permet pas une prise en compte automatique pour la personnalisation de la vue. Vous devez lancer une première fois votre application pour avoir la possibilité de sélectionner dans ses options le Ruban à charger au démarrage. De même que chaque modification du fichier XML nécessite un redémarrage de la base de données pour une prise en compte.

III-2-1 - Déclarer un Ruban au démarrage de l'application

Pour définir le Ruban au démarrage il vous faut sélectionner dans les Options de la base de données, dans l'onglet base de données active, le Ruban à charger au démarrage.

Chaque modification dans le fichier XML sera prise en compte au démarrage de l'application.

IV - Les onglets prédéfinis de la vue Backstage

Nom du Ruban : rubVide

Par défaut la vue Backstage dans Access 2010 ressemble à ceci :

On retrouve la gestion du fichier de la base de données, les options et la gestion de la base de données. Nous allons maintenant rentrer dans le vif du sujet, à savoir la personnalisation de la vue Backstage.

La personnalisation se réalise par le XML et est propre à la base de données, en gros vous pouvez cacher certains onglets pour la Base N°1 et les afficher dans la base N°2. Chaque onglet prédéfini possède un idMso qui, passé dans l'attribut de la balise en question permet de gérer son affichage.

Voici les idMso correspondant aux boutons et onglets prédéfinis :

- bouton Enregistrer => idMso="FileSave" ;

- bouton Enregistrer l'objet Sous => idMso="SaveObjectAs" ;

- bouton Enregistrer la base de données sous => idMso="FileSaveAsCurrentFileFormat" ;

- bouton Ouvrir => idMso="FileOpen" ;

- bouton Fermer la base de données => idMso="FileCloseDatabase" ;

- onglet Informations => tab idMso="TabInfo" ;

- onglet Ouvertures récentes => tab idMso="TabRecent" ;

- onglet Imprimer => tab idMso="TabPrint" ;

- onglet Partager => tab idMso="TabShare" ;

- onglet Aide => tab idMso="TabHelp" ;

- onglet Nouveau => tab idMso="TabNew" ;

- bouton Options => idMso="ApplicationOptionsDialog" ;

- bouton Quitter => idMso="FileExit" ;

Voici le code XML pour rendre invisible l'ensemble des éléments de la vue Backstage par défaut :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<backstage>
<button idMso="FileSave" visible="false"/>
<button idMso="SaveObjectAs" visible="false"/>
<button idMso="FileSaveAsCurrentFileFormat" visible="false"/>
<button idMso="FileOpen" visible="false"/>
<button idMso="FileCloseDatabase" visible="false"/>
<tab idMso="TabInfo" visible="false"/>
<tab idMso="TabRecent" visible="false"/>
<tab idMso="TabNew" visible="false"/>
<tab idMso="TabPrint" visible="false"/>
<tab idMso="TabShare" visible="false"/>
<tab idMso="TabHelp" visible="false"/>
<button idMso="ApplicationOptionsDialog" visible="false"/>
<button idMso="FileExit" visible="false"/>
</backstage>
</customUI>

Tout comme pour le Ruban pour Office 2007 vous devez, dans l'attribut namespace, faire référence au schéma du Ruban pour Office 2010 :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
Code XML pour la personnalisation de la vue Backstage et le Ruban
</customUI>

Vous pouvez consulter le Schéma d'Office 2010 sur le site de Microsoft.

Tout au long de cet article nous opterons pour le stockage du XML des Rubans dans la table USysRibbons. Placer le code complet dans le champ RibbonXML de la table. Donnez un nom significatif afin de vous y retrouver par la suite. A chaque modification vous devrez relancer la base de données afin que l'application prenne en compte le changement. Une fois le redémarrage effectué déclarez le Ruban dans les options et relancez l'application. Vous devez avoir le même rendu que celui-ci :

Pour inhiber la prise en compte de la personnalisation de la vue Backstage, au démarrage de l'application, maintenez la touche Shift (flèche vers le haut) pendant l'ouverture de la base de données.

IV-1 - Astuce

Vous remarquerez que les bases de données ouvertes récemment sont toujours visibles, une astuce subsiste pour ne plus afficher ces liens vers les dernières bases ouvertes : dans les Options d'Access, depuis l'onglet Paramètres du client, une option est disponible dans le paragraphe Afficher, elle permet de définir le nombre de documents à afficher et si vous réglez à 0, aucun lien de base de données récemment ouvertes ne sera visible. Cette astuce présente un gros souci : elle interagit dans l'ensemble des logiciels de la suite Office 2010.

Si vous regardez dans l'onglet Récent, une case à cocher : "Accéder rapidement à ce nombre de bases de données récentes" est disponible. Celle-ci, une fois décochée, n'affiche aucun lien dans la barre de navigation de la vue Backstage.

Après des recherches approfondies, LedZeppII a trouvé la clé de registre permettant de modifier cette case à cocher. En combinant avec le Code de Domi2 nous allons, à l'ouverture de la base de données, décocher cette option afin de ne pas afficher les liens des dernières bases de données ouvertes.

Merci à eux pour cette astuce.

Collez ce code dans un nouveau module :

Function ModifBR()
On Error Resume Next
Set WshShell = CreateObject("Wscript.Shell")
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\File MRU\Quick Access Display", "0", "REG_DWORD"
Set WshShell = Nothing
End Function

Appelez cette fonction dans la macro Autoexec et le tour est joué. A l'ouverture de la base de données la clé de registre est modifiée afin de na pas afficher les liens des dernières bases ouvertes. Vous pouvez jouer sur ce code afin de modifier la clé sur ouverture/fermeture de la base de données ou sur ouverture/fermeture de la vue Backstage.

V - Autres liens

Je vous invite à consulter ces deux liens d'Arkham46, le premier concerne les nouveautés du ruban d'Office 2010 et le second est un excellent complément permettant de créer vos Rubans et vues Backstage dans Access 2010 :

- Office 2010 : les nouveautés du Ruban
- Assistant ruban pour Office

D'autres articles sur les rubans ou la fonction Callback sont disponibles pour le version 2007 et compatibles pour 2010 :

- Programmez et personnalisez le ruban de vos applications Access 2007.
- La personnalisation du ruban sous Excel 2007.
- Personnalisation du ruban: Les fonctions d'appel CallBacks.
- Comment personnaliser le Ruban de Word 2007.

VI - La vue Backstage

Nom du Ruban : rubBackstage

Deux attributs sont disponibles sur la balise <backstage> :

onShow : permet de lancer une procédure CallBack sur ouverture de la vue.

onHide : permet de lancer une procédure CallBack sur fermeture de la vue.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<backstage onShow="clbckOnShow" onHide="clbckOnHide">
</backstage>
</customUI>

Procédure CallBack sur ouverture et fermeture de la vue Backstage :

Sub clbckOnShow(control As IRibbonControl)
MsgBox "Evénement sur ouverture de la vue Backstage"
End Sub

Sub clbckOnHide(control As IRibbonControl)
MsgBox "Evénement sur fermeture de la vue Backstage"
End Sub

Nous verrons plus loin dans cet article comment interagir sur la vue Backstage à l'affichage du Ruban dans le but de la personnaliser.

VI-1 - OnLoad - Ouverture de la vue Backstage

Cet attribut est placé dans la balise <CustomUI> du Code XML, il permet d'instancier un Objet afin de faire référence à l'interface utilisateur.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">

Sur chargement du Ruban le Code VBA de la fonction oldBacksatge sera exécuté.

Public UIRubanPerso As IRibbonUI

Sub oldBackstage(UIRuban As IRibbonUI)
Set UIRubanPerso = UIRuban
End Sub

La variable Public UIRubanPerso est instanciée par le Ruban au chargement de celui-ci.

VI-2 - loadImage

Cet attribut, placé dans la balise <CustomUI> du Code XML, permet de lancer une procédure VBA instanciant la source pour les images.

Code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage" loadImage="clbckLoadImage">

Code VBA : définit le dossier images du répertoire courant de la base de données.

Sub clbckLoadImage(imageId As String, ByRef image)
Set image = LoadPicture(CurrentProject.Path & "\images\" & imageId)
End Sub

VI-3 - Mise à jour du Ruban

Deux fonctions VBA permettent de mettre à jour le Ruban pour le rendre dynamique, nous les utiliserons en détail avec les procédures de rappel.

VI-3-1 - Invalidate

Permet de recharger l'ensemble de la vue Backstage.

VI-3-2 - InvalidateControl

Permet de recharger simplement le contrôle passé en paramètre de la fonction.

VII - Personnalisation du volet de navigation de la vue Backstage

Le volet de navigation de la vue Backstage correspond à la partie de gauche. On peut y placer des boutons personnalisés ainsi que des onglets.

Nous allons personnaliser ce volet.

VII-1 - Boutons

Nom du Ruban : rubBouton

Nous allons utiliser la balise <button> afin d'ajouter des boutons personnalisés.

Voici le code à ajouter directement après la balise <backstage>derubVide

<button id="btnExemple" label="Bouton Perso" imageMso="ObjectEffectGlowGallery"/>

Ici nous créons un bouton appelé « btnExemple » qui a pour texte « Bouton Perso » et comme image, une image prédéfinie d'Access 2010.

Voici le rendu :

VII-1-1 - Attributs (Bouton)

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

idMso

id

idQ

enabled

getEnabled

visible

getVisible

label

getLabel

imageMso

image

getImage

keytip

getKeytip

insertBeforeMso

insertBeforeQ

insertAfterMso

insertAfterQ

isDefinitive

onAction

VII-2 - Onglets

Nom du Ruban : rubOnglet

Pour ajouter un onglet personnalisé dans le volet de navigation de la vue Backstage nous allons utiliser la balise <tab> ; reprenez le XML de rubVide et ajoutez le code suivant :

<tab id="tabExemple" label="Onglet personnalisé"/>

VII-2-1 - Attributs (Onglet)

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

idMso

id

idQ

enabled

getEnabled

visible

getVisible

label

getLabel

title

getTitle

keytip

getKeytip

insertBeforeMso

insertBeforeQ

insertAfterMso

insertAfterQ

firstColumnMinWidth

firstColumnMaxWidth

secondColumnMinWidth

secondColumnMaxWidth

columnWidthPercent

onAction

VII-2-2 - firstColumn

La vue d'un onglet personnalisé peut être affichée sur deux colonnes. Chaque colonne peut être traitée différemment dans son contenu. La balise <firstColumn> est obligatoire dans la structure même si vous ne voulez pas utiliser une seconde colonne.

Début du code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso" getTitle="clbckgetTitle" columnWidthPercent="40">
<firstColumn>

Deux balises suivent celle-ci

VII-2-2-1 - Groupe de contrôles (group)

Cette balise suit directement la balise <firstColumn>, elle permet de regrouper un ensemble de contrôles.

Suite du code :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso" getTitle="clbckgetTitle" columnWidthPercent="40">
<firstColumn>
<group id="group1">

Trois balises suivent la balise <group> :

VII-2-2-1-1 - primaryItem

Définit un bouton ou un menu comme principal. Ne peut être déclaré qu'une seule fois.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso" getTitle="clbckgetTitle" columnWidthPercent="40">
<firstColumn>
<group id="group1">
<primaryItem>
<button id="button1" label="Bouton Principal"/>
</primaryItem>
<bottomItems>
<button id="button2" label="Bouton 2"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Voici le résultat :

les contrôles disponibles

Liste des contrôles que l'on peut ajouter :

- Bouton ;

- Menu ;

VII-2-2-1-2 - topItem

Ne peut être défini qu'une seule fois et peut contenir tous les contrôles disponibles. Les contrôles sont placés en partie haute de la colonne.

Code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1" label="Nom du Groupe">
<primaryItem>
<button id="button1" label="Bouton Principal"/>
</primaryItem>
<topItems>
<button id="button2" label="Bouton 2"/>
</topItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Voici le résultat :

les contrôles disponibles

Liste des contrôles que l'on peut ajouter :

Bouton

Case à cocher

Liste déroulante

Liste

Zone de texte

Groupe

Lien Hypertexte

Image

Étiquette

conteneur de disposition

Groupe d'options

VII-2-2-1-3 - bottomItems

Ne peut être défini qu'une seule fois et peut avoir un ou plusieurs contrôles.

Code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1" label="Nom du Groupe">
<primaryItem>
<button id="button1" label="Bouton Principal"/>
</primaryItem>
<topItems>
<button id="button2" label="Bouton 2"/>
</topItems>
<bottomItems>
<button id="button3" label="Bouton 3"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Voici le résultat :

les contrôles disponibles

Liste des contrôles que l'on peut ajouter :

Bouton

Case à cocher

Liste déroulante

Liste

Zone de texte

Groupe

Lien Hypertexte

Image

Étiquette

conteneur de disposition

Groupe d'options

VII-2-2-1-5 - LayoutContainer

Zone regroupant des contrôles. On ne peut mettre cette balise qu'à l'intérieur des balises topItems et bottomItems.

Liste des contrôles que l'on peut ajouter :

Bouton

Case à cocher

Liste déroulante

Liste

Zone de texte

Groupe

Lien Hypertexte

Image

Étiquette

conteneur de disposition

Groupe d'options

Liste des attributs disponibles pour ce contrôle :

Valeur

id

idQ

expand

tag

VII-2-2-1-4 - Attributs (Groupes de contrôles)

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

idMso

id

idQ

visible

getVisible

label

getLabel

getShowLabel

insertBeforeMso

insertBeforeQ

insertAfterMso

insertAfterQ

helperText

getHelperText

getStyle

onAction

VII-2-2-2 - Groupe de tâches (taskGroup)

Cette balise <taskGroup> est un regroupement de tâches dans une colonne.
Celle-ci se positionne juste après les balises <firstColumn> et <secondColumn>.

<taskGroup id="taskGroup1" label="Catégorie 1">

Pour ajouter des tâches il faut définir une sous-balise <category>

VII-2-2-2-1 - category (Groupe de tâches (taskGroup))

Sous-balise de <taskGroup >, elle permet de créer des catégories regroupant les tâches.

<category id="category1" label="Catégorie 1">

VII-2-2-2-1-1 - Tâche (category (Groupe de tâches (taskGroup)))

La balise <task> permet d'ajouter une tâche dans une catégorie.
Celle-ci est directement placée dans la catégorie dans la colonne où elle est définie.

<task id="task1" label="Tâche N° 1"/>

Voici le résultat :

VII-2-2-2-1-2 - Attributs (category (Groupe de tâches (taskGroup)))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

idMso

id

idQ

visible

getVisible

label

getLabel

insertBeforeMso

insertBeforeQ

insertAfterMso

insertAfterQ

VII-2-2-2-2 - Attributs (Groupe de tâches)

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

idMso

id

idQ

visible

getVisible

label

getLabel

getShowLabel

insertBeforeMso

insertBeforeQ

insertAfterMso

insertAfterQ

allowedTaskSizes

helperText

getHelperText

VII-2-2-3 - Formulaire Groupement de tâches

Cette balise ne peut être définie qu'une seule fois et dans la première colonne (<firstColumn>), elle permet de regrouper un ensemble de catégories comprenant une ou plusieurs tâches. Dans ce cas la disposition est différente que précédemment. Ici la tâche peut recevoir un groupe de contrôles (group).

<taskFormGroup id="taskFormGroup1" label="Groupe de Tâches">

Nous allons dans cet exemple créer deux tâches avec un groupe de contrôles différents, la première n'aura qu'un bouton et la seconde deux boutons.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<taskFormGroup id="taskFormGroup1" label="Formulaire de tâches">
<category id="category1" label="Première catégorie">
<task id="task1" label="Tâche 1">
<group id="group1" label="Groupe 1">
<bottomItems>
<button id="button1" label="Bouton"/>
</bottomItems>
</group>
</task>
<task id="task2" label="Tâche 2">
<group id="group2" label="Groupe 2">
<bottomItems>
<button id="button2" label="Bouton 2"/>
<button id="button3" label="Bouton 3"/>
</bottomItems>
</group>
</task>
</category>
</taskFormGroup>
</firstColumn>
</tab>
</backstage>
</customUI>

La première tâche donne ceci :

La seconde tâche donne ceci :

VII-2-2-3-1 - Attributs (Groupement de tâches)

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

idMso

id

idQ

visible

getVisible

label

getLabel

getShowLabel

allowedTaskSizes

helperText

getHelperText

VII-2-3 - secondColumn

Comme son nom l'indique cette balise définit une seconde colonne. Celle-ci peut recevoir l'ensemble des sous-balises de <firstColumn> à l'exception des Formulaires de groupement de tâches.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1" label="Groupe 1">
<bottomItems>
<button id="button1" label="Bouton 1"/>
</bottomItems>
</group>
</firstColumn>
<secondColumn>
<group id="group2" label="Groupe 2">
<bottomItems>
<button id="button2" label="Bouton 2"/>
</bottomItems>
</group>
</secondColumn>
</tab>
</backstage>
</customUI>

Je précisais un peu plus tôt qu'il n'était pas possible d'ajouter un Formulaire de tâches dans la seconde colonne. Ceci n'est pas possible (je pense) pour une question de disposition à l'écran.
Démonstration en image.

VIII - Contrôles

Les contrôles permettent, tout comme dans les formulaires d'Access, de piloter l'application. De par leur action vous orienterez le code.

VIII-1 - Boutons (button)

Code XML :

<button id="button1"/>

Représentation graphique :

VIII-1-1 - Attributs (Bouton (button))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

id

idQ

enabled

getEnabled

visible

getVisible

label

getLabel

imageMso

image

getImage

screentip

getScreentip

supertip

getSupertip

keytip

getKeytip

expand

onAction

tag

VIII-2 - Case à Cocher (checkBox)

Code XML :

<checkBox id="checkBox1" label="Case à Cocher N°1"/>

Représentation graphique :

VIII-2-1 - Attributs (Case à Cocher (checkBox))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

id

idQ

enabled

getEnabled

visible

getVisible

label

getLabel

description

getDescription

screentip

getScreentip

supertip

getSupertip

keytip

getKeytip

expand

onAction

getPressed

tag

VIII-3 - Liste (comboBox)

Code XML :

<comboBox id="comboBox1" label="Liste déroulante"/>

Représentation graphique :

VIII-3-1 - item (Liste (comboBox))

Cette balise permet de renseigner le contenu de la liste déroulante, chaque item représente une ligne.

Code XML :

<comboBox id="comboBox1" label="Liste déroulante">
<item id="item1" label="Ligne 1"/>
<item id="item2" label="Ligne 2"/>
<item id="item3" label="Ligne 3"/>
</comboBox>

VIII-3-1-1 - Attributs (item (Liste (comboBox)))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

id

label

getLabel

VIII-3-2 - Attributs (Liste (comboBox))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

id

idQ

enabled

getEnabled

visible

getVisible

label

getLabel

keytip

getKeytip

sizeString

alignLabel

expand

getText

getItemCount

getItemLabel

onChange

VIII-4 - Liste déroulante (dropDown)

Code XML :

<dropDown id="dropDown1" label="Liste N°1"/>

Représentation Graphique :

VIII-4-1 - item (Liste déroulante (dropDown))

Cette balise permet de renseigner le contenu de la liste déroulante, chaque item représente une ligne.

Code XML :

< dropDown id="dropDown1" label="Liste N°1">
<item id="item1" label="Ligne 1"/>
<item id="item2" label="Ligne 2"/>
<item id="item3" label="Ligne 3"/>
</ dropDown >

VIII-4-1-1 - Attributs (item (Liste déroulante (dropDown)))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

id

label

getLabel

VIII-4-2 - Attributs (Liste déroulante (dropDown))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

id

idQ

enabled

getEnabled

visible

getVisible

label

getLabel

screentip

getScreentip

supertip

getSupertip

keytip

getKeytip

sizeString

alignLabel

expand

onAction

getItemCount

getItemLabel

getSelectedItemIndex

tag

VIII-5 - Zone de saisie (editBox)

Code XML :

<editBox id="txtZone1" label="Zone de saisie"/>

Représentation graphique :

VIII-5-1 - Attributs (Zone de saisie (editBox))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

id

idQ

enabled

getEnabled

visible

getVisible

label

getLabel

keytip

getKeytip

maxLength

sizeString

expand

onChange

getText

alignLabel

tag

VIII-6 - Lien hypertexte (hyperlink)

Code XML :

<hyperlink id="hypLien1" label="http://dolphy35.developpez.com/" target="http://dolphy35.developpez.com/"/>

Représentation graphique :

VIII-6-1 - Attributs (Lien hypertexte (hyperlink))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

id

idQ

enabled

getEnabled

visible

getVisible

label

getLabel

imageMso

image

getImage

screentip

getScreentip

getSupertip

keytip

getKeytip

target

getTarget

expand

onAction

alignLabel

tag

VIII-7 - Image (imageControl)

Code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage" loadImage="clbckLoadImage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1">
<bottomItems>
<imageControl id="imageControl1" image="dolphy.bmp"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Représentation graphique :

VIII-7-1 - Attributs (Image (imageControl))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

id

idQ

enabled

getEnabled

visible

getVisible

imageMso

image

getImage

getAltText

tag

VIII-8 - Contrôle étiquette (labelControl)

Code XML :

<labelControl id="labelControl1" label="contrôle étiquette"/>

Représentation graphique :

VIII-8-1 - Attributs (Contrôle étiquette (labelControl))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

id

idQ

enabled

getEnabled

visible

getVisible

label

getLabel

alignLabel

expand

noWrap

tag

VIII-9 - Groupe de boutons radio (radioGroup)

Code XML :

<radioGroup id="radioGroup1" label="Groupe de Boutons Radio">
</radioGroup>

VIII-9-1 - Bouton radio (radioButton)

Code XML :

<radioGroup id="radioGroup1" label="Groupe de Boutons Radio">
<radioButton id="radioButton1" label="Bouton radio 1"/>
<radioButton id="radioButton2" label="Bouton radio 2"/>
</radioGroup>

Représentation graphique :

VIII-9-1-1 - Attributs (Bouton radio (radioButton))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

id

label

getLabel

VIII-9-2 - Attributs (Groupe de boutons radio (radioGroup))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

id

idQ

enabled

getEnabled

visible

getVisible

label

getLabel

keytip

getKeytip

alignLabel

expand

tag

onAction

getItemCount

getItemLabel

getSelectedItemIndex

VIII-10 - Regroupement (groupBox)

Code XML :

<groupBox id="groupBox1" label="Titre du Groupe"/>

VIII-10-1 - Contrôles (Regroupement (groupBox))

L'ensemble des contrôles peuvent être mis dans un regroupement.

VIII-10-2 - Attributs (Regroupement (groupBox))

Liste des attributs disponibles pour ce contrôle.

Valeur

Callback

id

idQ

label

getLabel

expand

tag

IX - Attributs

Les attributs se placent dans les balises désignant le contrôle.

IX-1 - idMso

Est l'identifiant d'un contrôle intégré d'Access, avec cet attribut vous pouvez appeler les contrôle prédéfinis.

Ceci est très pratique, comme vu précédemment, pour cacher les onglets de la vue Backstage.

Exemple de XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<backstage>
<button idMso="FileSave" visible="false"/>
<button idMso="SaveObjectAs" visible="false"/>
<button idMso="FileSaveAsCurrentFileFormat" visible="false"/>
<button idMso="FileOpen" visible="false"/>
<button idMso="FileCloseDatabase" visible="false"/>
<tab idMso="TabInfo" visible="false"/>
<tab idMso="TabRecent" visible="false"/>
<tab idMso="TabNew" visible="false"/>
<tab idMso="TabPrint" visible="false"/>
<tab idMso="TabShare" visible="false"/>
<tab idMso="TabHelp" visible="false"/>
<button idMso="ApplicationOptionsDialog" visible="false"/>
<button idMso="FileExit" visible="false"/>
</backstage>
</customUI>

IX-2 - idQ

Identifiant Qualifié. Cet identifiant permet un pilotage externe, comme un add-in.

IX-3 - id

Identifiant donné au contrôle, cet attribut est très important et doit être unique, sinon une erreur sera levée. Cet attribut est sensible à la casse, vous ne pouvez pas mettre d'espace, ni certains caractères et il ne doit pas être de type numérique.

<button id="button1"/>

Cet id peut être capté en VBA afin d'orienter le code dans un Select Case. Nous verrons plus tard dans les fonctions de rappel (Callback) comment utiliser cet ID.

IX-4 - enabled

Attribut permettant d'activer ou désactiver le contrôle.

La valeur true (1) active le contrôle et la valeur false (0) désactive le contrôle.

<button id="button1" label="Bouton 1" enabled="false"/>

IX-5 - visible

Attribut permettant de rendre visible ou non le contrôle.

La valeur true (1) rend visible le contrôle et la valeur false (0) cache le contrôle.

<button id="button1" visible="false"/>

IX-6 - label

Attribut permettant de définir le label, c'est-à-dire le texte visible dans le contrôle.

La valeur doit être de type String.

<button id="button1" label="Bouton 1"/>

IX-7 - imageMso

Attribut permettant de désigner une icône prédéfinie d'Access 2010.

Vous pouvez retrouver l'ensemble des ID et images Mso à cette adresse : liste des idMso des onglets standards.

<button id="button1" imageMso="_3DLightingClassic"/>

Voici le résultat :

IX-8 - image

Attribut permettant de définir l'ID de l'image, celui-ci doit être associé à l'attribut loadImage placé dans la balise customUIpour instancier la source.

Code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage" loadImage="clbckLoadImage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1">
<bottomItems>
<button id="button1" image="ok.bmp"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

IX-9 - keytip

Attribut permettant de définir le raccourci clavier d'un contrôle par appui de la touche ALT.

<button id="button1" label="Bouton 1" keytip="BT1"/>

Champ limité à trois caractères.

IX-10 - insertBeforeMso

Attribut permettant de définir l'emplacement du contrôle. Disponible directement sous la balise <backstage>.

Dans notre exemple nous allons mettre l'onglet personnalisé au-dessus de l'onglet Recent.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso" insertBeforeMso="TabRecent">
<firstColumn>
<group id="group1">
<bottomItems>
<button id="button1" label="Bouton 1"/>
<button id="button2" label="Bouton 2"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Voici le résultat :

IX-11 - insertBeforeQ

Attribut identique au précédent mais en utilisant l'identifiant Qualifié.

IX-12 - insertAfterMso

Attribut permettant de définir l'emplacement du contrôle. Disponible directement sous la balise <backstage>.

Dans notre exemple nous allons mettre l'onglet personnalisé en-dessous de l'onglet Recent.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso" insertAfterMso="TabRecent">
<firstColumn>
<group id="group1">
<bottomItems>
<button id="button1" label="Bouton 1"/>
<button id="button2" label="Bouton 2"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

IX-13 - insertAfterQ

Attribut identique au précédent mais en utilisant l'identifiant Qualifié.

IX-14 - isDefinitive

Attribut permettant de définir la réaction de la vue Backstage lors de la sélection du contrôle, à savoir, si la vue reste ouverte ou se ferme. Un exemple concret : la vue se ferme lorsque vous sélectionnez les Options dans la vue Backstage.

<button id="button1" label="Bouton 1" isDefinitive="true"/>

IX-15 - title

Attribut permettant de définir le titre de l'onglet personnalisé.

<tab id="tab1" label="Onglet Perso" title="Titre : Onglet Personnalisé">

Voici le résultat :

IX-16 - firstColumnMinWidth

Attribut permettant de définir la largeur minimum de la première colonne de l'onglet personnalisé.

Cette valeur est définie en pixels entre les valeurs 1 et 10000.

<tab id="tab1" label="Onglet Perso" insertAfterMso="TabRecent" title="Titre : Onglet Personnalisé" firstColumnMinWidth="750">

Dans le cas suivant l'onglet possède deux colonnes, dans la première colonne nous définissons la taille minimum à 750 pixels, la seconde colonne prend le reste de pixels.

IX-17 - firstColumnMaxWidth

Attribut permettant de définir la largeur maximum de la première colonne de l'onglet personnalisé.

Cette valeur est définie en pixels entre les valeurs 1 et 10000.

<tab id="tab1" label="Onglet Perso" insertAfterMso="TabRecent" title="Titre : Onglet Personnalisé" firstColumnMaxWidth="750">

Dans le cas suivant l'onglet possède deux colonnes, dans la première colonne nous définissons la taille maximum à 750 pixels, la seconde colonne prend le reste de pixels dans le cas ou les contrôles dépassent les 750 pixels de la première colonne, dans le cas contraire les deux colonnes possèdent la même taille.

IX-18 - secondColumnMinWidth

Attribut identique à firstColumnMinWidthmais concernant la seconde colonne d'un onglet personnalisé.

<tab id="tab1" label="Onglet Perso" insertAfterMso="TabRecent" title="Titre : Onglet Personnalisé" secondColumnMinWidth="750">

IX-19 - secondColumnMaxWidth

Attribut identique à firstColumnMaxWidthmais concernant la seconde colonne d'un onglet personnalisé.

<tab id="tab1" label="Onglet Perso" insertAfterMso="TabRecent" title="Titre : Onglet Personnalisé" secondColumnMaxWidth="750">

IX-20 - columnWidthPercent

Attribut permettant de préciser la répartition des colonnes de l'onglet.

La valeur est définie en pourcentage, les valeurs sont comprise entre 1 et 99.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso" getTitle="clbckgetTitle" columnWidthPercent="40">
<firstColumn>
<group id="group1">
<bottomItems>
<button id="button1" label="Bouton 1" onAction="clbckonAction"/>
<button id="button2" label="Bouton 2" onAction="clbckonAction"/>
</bottomItems>
</group>
</firstColumn>
<secondColumn>
<group id="group2">
<bottomItems>
<button id="button3" label="Bouton 3"/>
</bottomItems>
</group>
</secondColumn>
</tab>
</backstage>
</customUI>

Dans le cas présent non définissons l'attribut à 40%, la première colonne prend la valeur de l'attribut et le seconde utilise le restant.

IX-21 - showlabel

Attribut permettant de définir s'il faut ou non montrer l'étiquette sur un contrôle.
L'étiquette est visible si on met la valeur true (1), et masquée si on met la valeur false (0).

<group id="group1" label="Nom du Groupe" showLabel="false">

IX-22 - style

Attribut permettant de définir le style du contrôle.

<group id="group1" style="normal">

Dans le cas d'un groupe trois valeurs sont disponible :

- Normal

- Warning

- Error

Voici le rendu :

Dans le cas d'un bouton la balise <style> permet de modifier le contour de celui-ci :

- normal

- borderless

- large

Voici le rendu :

IX-23 - helperText

Attribut permettant de définir le texte auxiliaire du contrôle.

<group id="group1" helperText="Texte auxiliaire pour le Groupe" label="Label du Groupe">

Voici le résultat :

IX-24 - allowedTaskSizes

Attribut permettant de définir la taille de la tâche affichée.

<taskGroup id="taskGroup1" label="Catégorie 1" allowedTaskSizes="largeMediumSmall">

Plusieurs valeurs sont disponibles :

- largeMediumSmall

- largeMedium

- mediumSmall

- medium

- small

- large

IX-25 - screentip

Attribut permettant de renseigner l'infobulle s'affichant lors du survol de la souris sur le contrôle.

<button id="button1" label="Bouton" screentip="Screentip du bouton 1"/>

Voici le résultat :

IX-26 - supertip

Cet attribut doit être associé au précédent et permet d'afficher une infobulle de grande taille et multiligne. L'attribut screentip est repris comme titre de l'infobulle et supertip en est le corps.

Pour effectuer des sauts de lignes utilisez &#13; dans le XML.

<button id="button1" screentip="screentip : Titre de l'info bulle" supertip="supertip : Corps du message de l'info bulle" label="Boutton"/>

Voici le résultat :

IX-27 - expand

Attribut permettant d'indiquer les directions dans lesquelles le contrôle se développera pour combler son conteneur parent.

Plusieurs valeurs sont disponibles :

- horizontal

- vertical

- both (les deux)

- neither (Aucun)

<button id="button1" label="Bouton 1" expand="vertical"/>

IX-28 - description

Attribut utilisé pour les cases à cocher et les tâches.
Pour les cases à cocher cet attribut n'est utilisable que lorsque le contrôle est contenu dans un menu ayant pour itemsize la valeur : large.

<checkBox id="checkBox1" description="Description de la case à cocher"/>

Représentation graphique :
Case à cocher d'un menu :

Tâche :

IX-29 - sizeString

Attribut permettant de définir la taille du contrôle. Par exemple pour une série de chiffres, telle que le code postal, le numéro de téléphone,le numéro d'une carte bancaire ou d'une carte vitale.

Dans notre exemple nous étendons la liste à sept caractères :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1">
<bottomItems>
<comboBox id="comboBox1" label="Liste déroulante" sizeString="1234567">
<item id="item1" label="Ligne 1"/>
<item id="item2" label="Ligne 2"/>
<item id="item3" label="Ligne 3"/>
</comboBox>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

IX-30 - alignLabel

Attribut permettant l'alignement d'un contrôle.

Liste des valeurs :

- topLeft -> Haut et gauche

- top -> Haut et centré

- topRight -> Haut et droite

- left -> gauche

- center -> centré

- right -> droite

- bottomLeft -> bas et gauche

- bottom -> bas et centré

- bottomRight-> bas et droit

<comboBox id="comboBox1" label="Liste déroulante" alignLabel="topLeft">

IX-31 - tag

Attribut permettant de véhiculer une chaîne de caractères. L'information placée dans cet attribut est récupérable dans les fonctions de Callback.

Code VBA :

Sub clbckonAction(control As IRibbonControl)
MsgBox Control.tag
End Sub

IX-32 - maxLength

Attribut permettant de définir le nombre de caractères maximum que l'utilisateur peut saisir.

Code XML :

<editBox id="txtZone1" label="Zone de saisie" maxLength="5"/>

Dans ce cas la saisie est limitée à cinq caractères, au sixième une info bulle vous signale la limite

IX-33 - target

Attribut permettant de définir la cible du lien hypertexte.

<hyperlink id="hypLien1" label="http://dolphy35.developpez.com/" target="http://dolphy35.developpez.com/"/>

IX-34 - altText

Attribut permettant de définir le texte alternatif pour ce contrôle.

<imageControl id="imageControl1" image="dolphy.bmp" altText="Image de Dolphy"/>

IX-35 - noWrap

Attribut permettant de définir si le texte d'une étiquette doit être sur une même ligne ou suivre la largeur du contenant.
La valeur true (1) désactive le retour à la ligne, false (0) le laisse actif.

<labelControl id="lblLabel2" label="Test" noWrap="false"/>

IX-36 - align

Permet d'aligner les contrôles dans le Layout.

<layoutContainer id="layoutContainer1" align="top"/>

Liste des paramètres pour cet attribut :

- topLeft -> Haut et gauche

- top -> Haut et centré

- topRight -> Haut et droite

- left -> gauche

- center -> centré

- right -> droite

- bottomLeft -> bas et gauche

- bottom -> bas et centré

- bottomRight-> bas et droit

IX-37 - layoutChildren

Cet attribut définit la direction dans laquelle sont positionnés les contrôles.

<layoutContainer id="layoutContainer1" layoutChildren="horizontal"/>

Liste des parmètres pour cet attribut :

- horizontal

- vertical

X - Callback

Les fonctions de rappel (appelées Callback), permettent d'interagir sur le contenu ou sur le visuel des contrôles.
Celles-ci sont appelées au chargement de la vue Backstage et lorsqu'on invalide le ruban ou un contrôle.

Dans les différents exemples j'ai opté pour un seul type d'appel et de solution par Select Case sur l'ID du contrôle pour exécuter le code. Je trouve ceci beaucoup plus clair et surtout plus facile au niveau maintenance. Vous pouvez créer une procédure différente pour chaque Callback mais pensez à bien structurer celle-ci et surtout à bien les nommer.

X-1 - onAction

Nom du Ruban : rubonAction

Cette fonction permet de lancer une procédure VBA sur action du contrôle.

<button id="btnTest1" label="Test" onAction="clbckonAction"/>

Sur action du bouton la procédure clbckonAction sera exécutée :

Sub clbckonAction(control As IRibbonControl)
Select Case control.Id
Case "btnTest1"
MsgBox "Vous venez de cliquer sur le bouton"
End Select
End Sub

X-1-1 - Case à cocher

Nom du Ruban : rubonActionPress

Cette fonction permet de lancer une procédure VBA sur l'action d'une case à cocher. La procédure de rappel renvoie une valeur de type booléen correspondant à l'état du contrôle.

Code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1">
<bottomItems>
<button id="btnPressed1" label="Bouton N° 1" onAction="clbckonAction"/>
<button id="btnPressed2" label="Bouton 2" onAction="clbckonAction"/>
<checkBox id="chkPressed" label="Case à cocher" getPressed="clbckgetPressed" onAction="clbckonActionPress"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Code VBA : la valeur est retournée par pressed

Option Compare Database

Public UIRubanPerso As IRibbonUI
Public blnTest As Boolean
'

Sub oldBackstage(UIRuban As IRibbonUI)
Set UIRubanPerso = UIRuban
blnTest = False
End Sub

Sub clbckonAction(control As IRibbonControl)
Select Case control.id
Case "btnPressed1"
blnTest = False
Case "btnPressed2"
blnTest = True
End Select
UIRubanPerso.Invalidate
End Sub

Sub clbckonActionPress(control As IRibbonControl, pressed As Boolean)
Select Case control.id
Case "chkPressed"
MsgBox "La case à cocher à pour valeur : " & pressed
End Select
End Sub

X-1-2 - Liste

Nom du Ruban : rubCombo

Cette fonction permet de lancer une procédure VBA sur l'action d'une liste de type dropDown. La procédure de rappel renvoi l'ID de la sélection du contrôle ainsi que l'index.

Code XML :

<dropDown id="comboBox1" label="Liste déroulante" onAction="clbckOnActionListe">

Code VBA :

Sub clbckOnActionListe(control As IRibbonControl, itemID As String, itemIndex As Integer)
Select Case control.id
Case "comboBox1"
MsgBox "itemID : " & itemID & vbCrLf & "itemIndex : " & itemIndex
End Select
End Sub

X-2 - getEnabled

Nom du Ruban : rubgetEnabled

Cette fonction permet de définir l'activation ou non du contrôle.

Voici le code XML :

<button id="button1" label="Test" getEnabled="clbckgetEnabled"/>

Lors du chargement de la vue Backstage la fonction clbckgetEnabled sera exécutée, la valeur pour le contrôle est retournée par le paramètre enabled.

Sub clbckgetEnabled(control As IRibbonControl, ByRef enabled)
Select Case control.id
Case "button1"
enabled = blnTest
End Select
End Sub

Dans notre exemple, la variable blnTest de type booléen est chargée à False au lancement de la vue Backstage.

Voici le résultat :

Maintenant nous allons rendre dynamique cette vue, ajouter un autre bouton qui lors de son action activera le premier bouton et se désactivera et vice-versa entre les deux boutons.

Code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1">
<bottomItems>
<button id="button1" label="Test" getEnabled="clbckgetEnabled" onAction="clbckonAction"/>
<button id="button2" label="btn Action" onAction="clbckonAction" getEnabled="clbckgetEnabled"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

On peut distinguer que chaque bouton appelle les procédures clbckgetEnabled et clbckonAction.

Voici le code VBA :

Option Compare Database

Global UIRubanPerso As IRibbonUI
Public blnTest As Boolean
'

Sub oldBackstage(UIRuban As IRibbonUI)
Set UIRubanPerso = UIRuban
End Sub

Sub clbckgetEnabled(control As IRibbonControl, ByRef enabled)
Select Case control.id
Case "button1"
enabled = blnTest
Case "button2"
enabled = Not (blnTest)
End Select
End Sub

Sub clbckonAction(control As IRibbonControl)
Select Case control.id
Case "button1"
blnTest = False
Case "button2"
blnTest = True
End Select
UIRubanPerso.Invalidate
End Sub

On déclare une variable Global pour instancier le Ruban, puis une variable Public, toutes deux de type booléen. On instancie la variable pour le Ruban et on affecte sa valeur à un bouton et la valeur inverse à l'autre bouton. Sur action des boutons on modifie la variable et on demande le rechargement de la Vue pour sa mise à jour.

X-3 - getVisible

Nom du Ruban : rubgetVisible

Cette fonction permet de définir la visibilité ou non du contrôle.

Voici le code XML :

<button id="btnVisible1" label="Test" getVisible="clbckgetVisible"/>

Lors du chargement de la vue Backstage la fonction clbckgetVisible sera exécutée, la valeur pour le contrôle est retournée par le paramètre visible.

Sub clbckgetVisible(control As IRibbonControl, ByRef visible)
Select Case control.id
Case "btnVisible1"
visible = blnTest
End Select
End Sub

Dans notre exemple, la variable blnTest de type booléen, est chargée à False au lancement de la vue Backstage. Par défaut le contrôle n'est pas visible.

Nous allons refaire le même jeu que le Callbak précédent sauf qu'au lieu d'activer/désactiver nous allons rendre visibles ou non les boutons.

XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1">
<bottomItems>
<button id="btnVisible1" label="Test" onAction="clbckonAction" getVisible="clbckgetVisible"/>
<button id="btnVisible2" label="btn Action" onAction="clbckonAction" getVisible="clbckgetVisible"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

VBA :

Option Compare Database

Global UIRubanPerso As IRibbonUI
Public blnTest As Boolean
'

Sub oldBackstage(UIRuban As IRibbonUI)
Set UIRubanPerso = UIRuban
blnTest = False
End Sub

Sub clbckonAction(control As IRibbonControl)
Select Case control.id
Case "btnVisible1"
blnTest = False
Case "btnVisible2"
blnTest = True
End Select
UIRubanPerso.Invalidate
End Sub

Sub clbckgetVisible(control As IRibbonControl, ByRef visible)
Select Case control.id
Case "btnVisible1"
If blnTest = True Then
visible = False
Else
visible = True
End If
Case "btnVisible2"
If blnTest = True Then
visible = True
Else
visible = False
End If
End Select
End Sub

X-4 - getLabel

Nom du Ruban : rubgetLabel

Cette fonction permet de définir le texte qui sera affiché dans le label du contrôle.

Voici le code XML :

<button id="button1" getLabel="clbckgetLabel"/>

Lors du chargement de la vue Backstage la fonction clbckgetLabel sera exécutée, la valeur pour le contrôle est retournée par le paramètre label.

Sub clbckgetLabel(control As IRibbonControl, ByRef label)
Select Case control.id
Case "button1"
label = IIf(blnTest, "Sélectionné", "Non Sélectionné")
End Select
End Sub

Toujours sur le principe précédent nous allons modifier le label des boutons en fonction de leur sélection.

XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1">
<bottomItems>
<button id="button1" onAction="clbckonAction" getLabel="clbckgetLabel"/>
<button id="button2" onAction="clbckonAction" getLabel="clbckgetLabel"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

VBA :

Option Compare Database

Global UIRubanPerso As IRibbonUI
Public blnTest As Boolean
'

Sub oldBackstage(UIRuban As IRibbonUI)
Set UIRubanPerso = UIRuban
blnTest = False
End Sub

Sub clbckonAction(control As IRibbonControl)
Select Case control.id
Case "button1"
blnTest = False
Case "button2"
blnTest = True
End Select
UIRubanPerso.Invalidate
End Sub

Sub clbckgetLabel(control As IRibbonControl, ByRef label)
Select Case control.id
Case "button1"
label = IIf(blnTest, "Non Sélectionné", "Sélectionné")
Case "button2"
label = IIf(Not (blnTest), "Non Sélectionné", "Sélectionné")
End Select
End Sub

X-5 - getImage

Nom du Ruban : rubgetImage

Cette fonction permet de définir l'image du contrôle.

Voici le code XML :

<button id="button1" label="Bouton 1" getImage="clbckgetImage"/>

Lors du chargement de la vue Backstage la fonction clbckgetImage sera exécutée, la valeur pour le contrôle est retournée par le paramètre image.

Sub clbckgetImage(control As IRibbonControl, ByRef image)
Select Case control.id
Case "button1"
Set image = LoadPicture(strCheminBDD & "ok.ico")
End Select

End Sub

Nous allons maintenant changer l'icône du contrôle en fonction de sa sélection, celle-ci sera représentée par une coche.

Code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso" insertBeforeMso="TabRecent">
<firstColumn>
<group id="group1">
<bottomItems>
<button id="button1" label="Bouton 1" getImage="clbckgetImage" onAction="clbckonAction"/>
<button id="button2" label="Bouton 2" getImage="clbckgetImage" onAction="clbckonAction"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Code VBA :

Option Compare Database

Global UIRubanPerso As IRibbonUI
Public blnTest As Boolean
'

Sub oldBackstage(UIRuban As IRibbonUI)
Set UIRubanPerso = UIRuban
blnTest = False
End Sub

Sub clbckonAction(control As IRibbonControl)
Select Case control.id
Case "button1"
blnTest = False
Case "button2"
blnTest = True
End Select
UIRubanPerso.Invalidate
End Sub

Sub clbckgetImage(control As IRibbonControl, ByRef image)
' déclaration des objets
Dim objOK As Object
Dim objNOK As Object

' instance des objets
Set objOK = LoadPicture(strCheminBDD & "ok.ico")
Set objNOK = LoadPicture(strCheminBDD & "nok.ico")

Select Case control.Id
Case "button1"
Set image = IIf(blnTest, objNOK, objOK)
Case "button2"
Set image = IIf(Not (blnTest), objNOK, objOK)
End Select

End Sub

X-6 - getKeytip

Nom du Ruban : rubgetKeytip

Cette fonction permet de définir le raccourci clavier du contrôle, par appui de la touche ALT.

Voici le code XML :

<button id="button1" label="Bouton 1" getKeytip="clbckgetKeytip"/>

Code VBA:

Sub clbckgetKeytip(control As IRibbonControl, ByRef keytip)
Select Case control.id
Case "button1"
keytip = "BT1"
End Select
End Sub

Voici un exemple avec un onglet personnalisé et deux boutons.

Code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso" insertBeforeMso="TabRecent" keytip="BY7">
<firstColumn>
<group id="group1">
<bottomItems>
<button id="button1" label="Bouton 1" onAction="clbckonAction" getKeytip="clbckgetKeytip"/>
<button id="button2" label="Bouton 2" onAction="clbckonAction" getKeytip="clbckgetKeytip"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Code VBA :

Sub clbckgetKeytip(control As IRibbonControl, ByRef keytip)
Select Case control.id
Case "button1"
keytip = "BT1"
Case "button2"
keytip = "BT2"
End Select
End Sub

Sur appui de la touche ALT une liste de raccourcis apparaît sur le volet de navigation. Notre onglet personnalisé a bien le raccourci BY7. En tapant les lettres, l'onglet est sélectionné et on aperçoit ensuite les raccourcis des deux boutons BT1 et BT2.

X-7 - getTitle

Nom du Ruban : rubgetTitle

Cette fonction permet de définir le titre du contrôle.

Voici le code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso" getTitle="clbckgetTitle">
<firstColumn>
<group id="group1">
<bottomItems>
<button id="button1" label="Bouton 1" onAction="clbckonAction"/>
<button id="button2" label="Bouton 2" onAction="clbckonAction"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Code VBA :

Sub clbckgetTitle(control As IRibbonControl, ByRef title)
Dim strTitre As String
strTitre = "Titre : Onglet Personnalisé - "
Select Case control.id
Case "tab1"
title = IIf(blnTest, strTitre & "Bouton 2", strTitre & "Bouton 1")
End Select
End Sub

Voici le résultat :

Le titre devient dynamique, et change en fonction du bouton sélectionné.

X-8 - getShowLabel

Nom du Ruban : rubgetShowLabel

Cette fonction permet de définir l'affichage ou non de l'étiquette du contrôle.

Voici le code XML :

<group id="group1" label="Label du Groupe" getShowLabel="clbckgetShowLabel">

Lors du chargement de la vue Backstage la fonction clbckgetShowLabel sera exécutée, la valeur pour le contrôle est retournée par le paramètre showlabel

Sub clbckgetShowLabel(control As IRibbonControl, ByRef showLabel)
Select Case control.id
Case "group1"
showLabel = False
End Select
End Sub

X-9 - getHelperText

Nom du Ruban : getHelperText

Cette fonction permet de définir la valeur du Helper (texte placé sous le label).

Voici le code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1" label="Label du Groupe" getHelperText="clbckgetHelperText">
<bottomItems>
<button id="button1" label="Bouton 1"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Lors du chargement de la vue Backstage la fonction clbckgetHelperTextsera exécutée, la valeur pour le contrôle est retournée par le paramètre helperText

Sub clbckgetHelperText(control As IRibbonControl, ByRef helperText)
Select Case control.id
Case "group1"
helperText = "Texte Auxiliaire"
End Select
End Sub

X-10 - getStyle

Nom du Ruban : getStyle

Cette fonction permet de définir le style d'affichage du contrôle.

Voici le code XML :

<group id="group1" label="Label du Groupe" getStyle="clbckgetStyle">

Lors du chargement de la vue Backstage la fonction clbckgetStyle sera exécutée. La valeur pour le contrôle est retournée par le paramètre style, et elle est de type numérique :

- 0 = Normale;

- 1 = Warning;

- 2 = Error.

Sub clbckgetStyle(control As IRibbonControl, ByRef style)
Select Case control.id
Case "group1"
style = 1 'warning
End Select
End Sub

Dans l'exemple suivant nous modifions le style du groupe lors de la sélection du bouton.

Code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1" label="Label du Groupe" getStyle="clbckgetStyle">
<bottomItems>
<button id="button1" label="Bouton 1" onAction="clbckonAction"/>
<button id="button2" label="Bouton 2" onAction="clbckonAction"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Code VBA :

Public blnTest As Boolean

Sub clbckonAction(control As IRibbonControl)
Select Case control.id
Case "button1"
blnTest = False
Case "button2"
blnTest = True
End Select
UIRubanPerso.Invalidate
End Sub

Sub clbckgetStyle(control As IRibbonControl, ByRef style)
Select Case control.id
Case "group1"
style = IIf(blnTest, 2, 1)
End Select
End Sub

Résultat :

X-11 - getScreentip

Nom du Ruban : getScreentip

Cette fonction permet de définir l'infobulle du contrôle.

Voici le code XML :

<button id="button1" label="Bouton 1" expand="vertical" getScreentip="clbckgetScreentip"/>

Code VBA:

Sub clbckgetScreentip(control As IRibbonControl, ByRef screentip)
Select Case control.id
Case "button1"
screentip = "Screentip titre de l'info bulle"
End Select
End Sub

X-12 - getSupertip

Nom du Ruban : getSupertip

Cette fonction permet de définir le texte multiligne de l'infobulle.

Pour réaliser un retour à ligne utilisez : &#13;

Voici le code XML :

<button id="button1" label="Bouton 1" expand="vertical" getScreentip="clbckgetScreentip" getSupertip="clbckgetSupertip"/>

Code VBA :

Sub clbckgetSupertip(control As IRibbonControl, ByRef supertip)
Select Case control.id
Case "button1"
supertip = "Supertip corps du message de l'infobulle"
End Select
End Sub

X-13 - getDescription

Nom du Ruban : getDescription

Cette fonction permet de définir la description d'une case à cocher contenue dans un menu.

Voici le code XML :

<checkBox id="checkBox1" getDescription="clbckgetDescription"/>

Code VBA:

Sub clbckgetDescription(control As IRibbonControl, ByRef description)
Select Case control.id
Case "checkBox1"
description = "Description de la case à cocher"
End Select
End Sub

X-14 - getPressed

Nom du Ruban : getPressed

Cette fonction permet de définir la valeur d'une case à cocher.

Voici le code XML :

<checkBox id="checkBox1" label="Case à cocher" getPressed="clbckgetPressed"/>

Code VBA :

Sub clbckgetPressed(control As IRibbonControl, ByRef pressed)
Select Case control.id
Case "checkBox1"
pressed = True
End Select
End Sub

Dans le cas présent on force la valeur de la case à 1.

Maintenant nous allons changer la valeur de la case en fonction de la sélection de deux boutons :

Code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1">
<bottomItems>
<button id="button1" label="Bouton N° 1" onAction="clbckonAction"/>
<button id="button2" label="Bouton 2" onAction="clbckonAction"/>
<checkBox id="checkBox1" label="Case à cocher" getPressed="clbckgetPressed"/>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Code VBA :

Option Compare Database

Global UIRubanPerso As IRibbonUI
Public blnTest As Boolean
'

Sub oldBackstage(UIRuban As IRibbonUI)
Set UIRubanPerso = UIRuban
blnTest = False
End Sub

Sub clbckonAction(control As IRibbonControl)
Select Case control.id
Case "button1"
blnTest = False
Case "button2"
blnTest = True
End Select
UIRubanPerso.Invalidate
End Sub

Sub clbckgetPressed(control As IRibbonControl, ByRef pressed)
Select Case control.id
Case "checkBox1"
pressed = blnTest
End Select
End Sub

X-15 - onChange

Nom du Ruban : rubonChange

Dans notre exemple, un message s'affiche donnant la valeur sélectionnée dans la liste.

Voici le code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1">
<bottomItems>
<comboBox id="comboBox1" label="Liste déroulante" onChange="clbckonChange">
<item id="item1" label="Ligne 1"/>
<item id="item2" label="Ligne 2"/>
<item id="item3" label="Ligne 3"/>
</comboBox>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Code VBA :

Sub clbckonChange(control As IRibbonControl, text As String)
Select Case control.id
Case "comboBox1"
MsgBox "Vous avez sélectionné " & text
End Select
End Sub

Dans notre exemple, un message s'affiche donnant la valeur sélectionnée dans la liste.

X-16 - getText

Nom du Ruban : rubgetText

Cette fonction permet de définir un texte qui sera affiché dans la zone de saisie de la liste déroulante.

Voici le code XML :

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="oldBackstage">
<backstage>
<tab id="tab1" label="Onglet Perso">
<firstColumn>
<group id="group1">
<bottomItems>
<comboBox id="comboBox1" label="Liste déroulante" getText="clbckgetText">
<item id="item1" label="Ligne 1"/>
<item id="item2" label="Ligne 2"/>
<item id="item3" label="Ligne 3"/>
</comboBox>
</bottomItems>
</group>
</firstColumn>
</tab>
</backstage>
</customUI>

Code VBA :

Sub clbckgetText(control As IRibbonControl, ByRef text)
Select Case control.id
Case "comboBox1"
text = "Saisie"
End Select
End Sub

X-17 - getItemCount

Nom du Ruban : rubCombo

Cette fonction permet de définir le nombre d'objets à afficher dans la liste déroulante.

Voici le code XML :

<comboBox id="comboBox1" label="Liste déroulante" getItemCount="clbckgetItemCount">

Code VBA :

Sub clbckgetItemCount(control As IRibbonControl, ByRef itemcount)
Select Case control.id
Case "comboBox1"
itemcount = 3
End Select
End Sub

X-18 - getItemiD

Nom du Ruban : rubCombo

Cette fonction permet de définir l'ID d'un élément spécifique dans le contrôle.

<comboBox id="comboBox1" label="Liste déroulante" getItemCount="clbckgetItemCount" getItemID="clbckGetItemID">

Code VBA :

Sub clbckgetItemiD(control As IRibbonControl, index As Integer, ByRef id)
Select Case control.id
Case "comboBox1"
id = "item" & index + 1
End Select
End Sub

X-19 - getItemLabel

Nom du Ruban : rubCombo

Cette fonction permet de définir le texte qui s'affichera pour un élément spécifique de la liste.

<comboBox id="comboBox1" label="Liste déroulante" getItemCount="clbckgetItemCount" getItemID="clbckGetItemID" getItemLabel="clbckGetItemLabel">

Code VBA :

Sub clbckGetItemLabel(control As IRibbonControl, index As Integer, ByRef label)
Select Case control.id
Case "comboBox1"
label = "Liste " & index + 1
End Select
End Sub

X-20 - getSelectedItemIndex

Nom du Ruban : rubCombo

Cette fonction permet de définir l'index de l'élément selectionné.

<comboBox id="comboBox1" label="Liste déroulante" getItemCount="clbckgetItemCount" getItemID="clbckGetItemID" getItemLabel="clbckGetItemLabel">

Code VBA : (ici l'élément ayant pour index 2 sera défini par défaut).

Sub clbckGetSelectedItemIndex(control As IRibbonControl, ByRef index)
Select Case control.id
Case "comboBox1"
index = 2
End Select
End Sub

X-21 - getTarget

Nom du Ruban : rubLien

Cette fonction permet de définir le chemin du lien hypertexte.

<hyperlink id="hypLien1" label="http://dolphy35.developpez.com/" getTarget="clbckGetTarget"/>

Code VBA : (ici l'élément ayant pour index 2 sera défini par défaut).

Sub clbckGetTarget(control As IRibbonControl, ByRef target)
Select Case control.id
Case "hypLien1"
target = "http://dolphy35.developpez.com/"
End Select
End Sub

X-22 - getAltText

Nom du Ruban : rubAltTexte

Cette fonction permet de définir le texte alternatif du contrôle.

<imageControl id="imageControl1" image="dolphy.bmp" getAltText="clbckGetAltText"/>

Code VBA :

Sub clbckGetAltText(control As IRibbonControl, ByRef alText)
Select Case control.id
Case "imageControl1"
alText = "Image de Dolphy"
End Select
End Sub

XI - Téléchargement

Tous les exemples sont disponibles sur la base de données, au format Access 2010, à cette adresse :
Base exemple

XII - Remerciements

Je tiens à remercier :
- Arkham46 pour son assistant ruban et Backstage.
- Arkham46 et LedZeppII pour leurs conseils techniques.
- Domi2, jacques_jean et Pierre Fauconnier pour leur relecture orthographique.

Merci à developpez.com le Club des professionnels de l'informatique pour l'hébergement et outils qui ont permis la création de cet article.