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 :

Ruban Office 2007
Sélectionnez

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">


Pour un ruban Office 2010, la valeur de xmlns est différente :

Ruban Office 2010
Sélectionnez

<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).

Ruban avec CallBack au chargement
Sélectionnez

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

</customUI>
Code à écrire dans un module VBA
Sélectionnez

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...

 
Sélectionnez

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 :
Image non disponible

1 - Taille des boutons :
Image non disponible

2 - Disparition des étiquettes :
Image non disponible

3 - Regroupement :
Image non disponible

Lors du regroupement, le bouton prend l'image du groupe : ici BlogHomePage.


Voici le XML de ce ruban :

 
Sélectionnez

<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 :

Image non disponible

Le tag centerVertically peut prendre la valeur true ou 1 pour demander le centrage des éléments :

Image non disponible

Voici le XML de ce ruban :

 
Sélectionnez

<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 :

Image non disponible

Notez les deux dernières entrées de menu qui ont été rajoutées.

Voici le XML de ce ruban :

 
Sélectionnez

<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 Image non disponible a été remplacé par un bouton Fichier Image non disponible.

Ce bouton ouvre la vue Backstage qui est paramétrable :


Image non disponible


Voici le XML de ce ruban :

 
Sélectionnez

<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.