I. Introduction▲
Cet article met en avant quelques nouveautés du ruban Office 2010.
Pour une première découverte du ruban, consultez ces tutoriels :
— 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.
II. L'espace de noms : cibler la version d'Office▲
L'espace de noms (Namespace) est déterminé par l'attribut xmlns de la balise customUI.
Pour un ruban sous Office 2007, on écrivait :
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2006/01/customui"
>
Pour un ruban Office 2010, la valeur de xmlns est différente :
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
>
Un ruban Office 2007 fonctionnera sous Office 2010. La réciproque est fausse.
III. Activation d'un onglet▲
Cette fonctionnalité manquait cruellement au ruban d'Office 2007.
Il est désormais possible d'activer un onglet en VBA.
Il faut au préalable déclarer un objet de type IRibbonUI et l'initialiser au chargement du ruban (callback onLoad).
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
onLoad
=
"RibbonOnLoad"
>
</customUI>
Public
oRibbon As
IRibbonUI
Sub
RibbonOnLoad
(
Ribbon As
IRibbonUI)
Set
oRibbon =
Ribbon
End
Sub
Ensuite, il suffit d'utiliser une des méthodes suivantes :
— ActivateTab pour un onglet personnalisé.
— ActivateTabMso pour un onglet standard.
— ActivateTabQ pour un onglet partagé (entre plusieurs compléments).
Par exemple, le code suivant...
oRibbon.ActivateTabMso
"TabFormulas"
...active l'onglet Formules dans Excel.
Téléchargez la liste des idMso des onglets standards.
(Excel 2010 requis pour ouvrir cette liste.)
IV. Redimensionnement des groupes de contrôles▲
Les groupes de contrôles (tag group) possèdent un attribut supplémentaire : autoScale.
Cet attribut peut prendre les valeurs suivantes :
— true ou 1 pour activer le redimensionnement ;
— false ou 0 pour le désactiver.
Lorsque le redimensionnement est activé, les contrôles changent de taille lorsqu'on redimensionne horizontalement la fenêtre contenant le ruban.
Ce changement de taille se traduit par :
1 - le passage des boutons de taille large vers normal ;
2 - la disparition des étiquettes (label);
3 - le regroupement des boutons en un seul.
Voici les différentes étapes :
0 - Affichage complet :
1 - Taille des boutons :
2 - Disparition des étiquettes :
3 - Regroupement :
Lors du regroupement, le bouton prend l'image du groupe : ici BlogHomePage.
Voici le XML de ce ruban :
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
>
<ribbon>
<tabs>
<tab
id
=
"tab1"
label
=
"Test autoScale"
>
<group
id
=
"group1"
imageMso
=
"BlogHomePage"
label
=
"Groupe de contrôles"
autoScale
=
"true"
>
<button
id
=
"button1"
label
=
"Valider"
imageMso
=
"AcceptInvitation"
/>
<button
id
=
"button2"
label
=
"Sauvegarder"
imageMso
=
"FileSave"
/>
<editBox
id
=
"editBox1"
label
=
"Nom :"
/>
<button
id
=
"button3"
label
=
"Supprimer"
imageMso
=
"InkDeleteAllInk"
/>
<gallery
id
=
"gallery1"
imageMso
=
"AccessListContacts"
label
=
"Liste"
/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
V. Centrage vertical des contrôles▲
En plus de l'attribut autoScale vu précédemment, l'attribut centerVertically est ajouté aux attributs des groupes (tag group).
Cet attribut permet de centrer verticalement les contrôles au sein d'un groupe.
Par exemple si l'on a cinq contrôles de taille normal, on obtiendra trois éléments sur une colonne et deux éléments en haut d'une deuxième colonne :
Le tag centerVertically peut prendre la valeur true ou 1 pour demander le centrage des éléments :
Voici le XML de ce ruban :
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
>
<ribbon>
<tabs>
<tab
id
=
"tab1"
label
=
"Test autoScale"
>
<group
id
=
"group1"
imageMso
=
"BlogHomePage"
label
=
"Groupe de contrôles"
centerVertically
=
"true"
>
<button
id
=
"button1"
label
=
"Valider"
imageMso
=
"AcceptInvitation"
/>
<button
id
=
"button2"
label
=
"Sauvegarder"
imageMso
=
"FileSave"
/>
<editBox
id
=
"editBox1"
label
=
"Nom :"
/>
<button
id
=
"button3"
label
=
"Supprimer"
imageMso
=
"InkDeleteAllInk"
/>
<gallery
id
=
"gallery1"
imageMso
=
"AccessListContacts"
label
=
"Liste"
/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
VI. Les menus contextuels▲
Il est désormais possible de modifier les menus contextuels dans le même XML que celui du ruban.
Par contre, cela se limite aux menus contextuels standards.
Il n'est pas possible de modifier un menu contextuel personnalisé de cette manière.
Exemple de modification du menu contextuel affiché par clic droit sur une image :
Notez les deux dernières entrées de menu qui ont été rajoutées.
Voici le XML de ce ruban :
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
>
<contextMenus>
<contextMenu
idMso
=
"ContextMenuPicture"
>
<button
label
=
"Image depuis fichier"
idMso
=
"PictureInsertFromFile"
/>
<checkBox
id
=
"checkBox1"
label
=
"Ma case à cocher"
onAction
=
"Ribbon_OnAction_Press"
/>
</contextMenu>
</contextMenus>
</customUI>
Téléchargez la liste des idMso qui contient la liste des menus contextuels.
(Excel 2010 requis pour ouvrir cette liste.)
VII. La vue Backstage▲
L'ancien bouton Office a été remplacé par un bouton Fichier .
Ce bouton ouvre la vue Backstage qui est paramétrable :
Voici le XML de ce ruban :
<customUI
xmlns
=
"http://schemas.microsoft.com/office/2009/07/customui"
>
<backstage>
<button
id
=
"button1"
insertBeforeMso
=
"FileOpen"
label
=
"Mon bouton dans la vue BackStage"
imageMso
=
"NewTask"
/>
<tab
id
=
"tab1"
label
=
"Mon onglet"
insertBeforeMso
=
"TabInfo"
>
<firstColumn>
<taskFormGroup
id
=
"taskFormGroup1"
>
<category
id
=
"category1"
label
=
"Category 1"
>
<task
id
=
"task1"
label
=
"Task 1"
>
<group
id
=
"group1"
label
=
"Group 1"
>
<bottomItems>
<hyperlink
id
=
"hyperlink1"
label
=
"http://Arkham46.developpez.com"
target
=
"http://Arkham46.developpez.com"
/>
</bottomItems>
</group>
</task>
</category>
</taskFormGroup>
</firstColumn>
</tab>
</backstage>
</customUI>
Consultez ce tutoriel : Personnaliser la vue Backstage d'Access 2010
VIII. Conclusion▲
Finalement, nous avons découvert assez peu de nouveautés majeures hormis la vue Backstage.
La programmation du ruban reste identique à celle que nous connaissions sur Office 2007.
Vous trouverez des informations (en anglais) sur ces nouveautés sur MSDN :
http://msdn.microsoft.com/en-us/library/ee692951%28office.14%29.aspx
Merci à Watcher pour sa relecture.