Retour à Excel 2007


Article de Microsoft : De nouveaux moyens d'offrir un plus à l'utilisateur .

Les développeurs d'applications ont tiré parti des outils et des structures de programmation des versions antérieures d'Office pour étendre l'interface de manière créative. Par exemple, le modèle d'objet CommandBars a permis aux développeurs de créer des solutions riches dans leurs applications Office personnalisées. Dans cette optique, la version 2007 d'Office propose un modèle innovant dont les développeurs peuvent se servir pour apporter un plus à l'utilisateur. Vous utilisez XML (Extensible Markup Language) et l'un des différents langages de programmation traditionnels pour la manipulation des composants qui constituent l'interface ruban. Étant donné que le langage XML se présente sous la forme de texte brut, vous pouvez créer des fichiers de personnalisation dans n'importe quel éditeur de texte, ce qui simplifie l'exploitation de l'interface. Vous pouvez également réutiliser des fichiers personnalisés d'interface ruban sans que cela entraîne d'énormes modifications, car chaque application utilise le même modèle de programmation. Par exemple, vous pouvez réutiliser les fichiers personnalisés d'interface ruban créés sous Word 2007, Excel 2007, Access 2007 ou PowerPoint 2007.

L'utilisation des fichiers de balisage XML pour personnaliser l'interface permet de réduire considérablement la nécessité d'avoir des compléments complexes basés sur le modèle d'objet CommandBars. Néanmoins, les compléments écrits dans des versions antérieures d'Office fonctionnent toujours dans l'interface ruban avec peu ou pas de modifications. Le sujet des compléments est abordé ultérieurement dans cet article. 

http://www.microsoft.com/france/msdn/office/Personnalisation-interface-utilisateur-ruban-Office-2007.mspx


Comment personnaliser le ruban d'Excel 2007 ?

Déplacer la position de l'onglet
Une image Office Icon Gallery sur le bouton
Une image perso sur le bouton
Un lien hypertexte sur le bouton
Quelques astuces ...

Créez un nouveau classeur dans Excel 2007 et enregistrez-le sous forme d'un Classeur Excel (prenant en charge les macros)(*.xlsm)
avec l'extension .xlsm . Le suffixe m. signifie que le classeur contient des macros. Appelez le "testruban.xlsm" (par exemple)

Dans l'Editeur Visual Basic (Alt + F11) insérez un nouveau module et collez ce code :

Sub test(ByVal control As IRibbonControl)
MsgBox ("Bonjour")
End Sub

Enregistrez et fermez le classeur.

Télécharger et installez l'outil "Editeur de Ruban" Microsoft Office 2007 Custom UI Editor que vous trouverez ici (Un excellent outil pour ne pas manipuler directement le fichier XML.

 http://dj.joss.free.fr/download/CustomUIEditorSetup.zip

Lancez "Custom UI Editor" l'éditeur de Ruban
Dans l'éditeur ouvrez votre classeur "testruban.xlsm"
Copiez le code xml ci-dessous et collez le dans l'onglet Custom UI

 

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

<ribbon startFromScratch="false">

<tabs>

<tab id = "Perso" label="Perso" insertAfterMso="TabView">

<group id="Message" label="Message">

<button id="Coucou" label="Coucou" onAction="test" size="large" imageMso="HappyFace" />

</group>

</tab>

</tabs>

</ribbon>

</customUI>

 

Le nom de la macro à exécuter se trouve apres la balise onAction

onAction="lenomdelamacro"

 Il est tout à fait possible d'exécuter une macro placée dans le "ThisWorkbook"

onAction="ThisWorkbook.lenomdelamacro"  (Attention au point apres le ThisWorkbook)

 

Enregistrez et fermez.

Dans excel 2007 ouvrez le fichier testruban.xlsm
Vous trouverez un nouvel onglet appelé Perso après l'onglet Affichage.
Cliquez et admirez le résultat.
Cliquez sur le bouton et le message "Bonjour" s'affiche.

 

Comment déplacer l'onglet ?

C'est la balise "insertAfterMso" du code XML qui détermine la position de l'onglet dans le ruban.

<tab id = "Perso" label="Perso" insertAfterMso="TabView">

Ici l'onglet est placé après celui qui se nomme "Affichage" (TabView)

Pour le placer à la fin il suffit d'indiquer "insertAfterMso="TabAddIns"" (Compléments, le dernier onglet)

Ce qui donne :

<tab id = "Perso" label="Perso" insertAfterMso="TabAddins">

Liste des "idTab"

Accueil =>TabHome

Insertion=>TabInsert

Mise en page=>TabPageLayoutExcel

Formules=>TabFormulas

Donnees=>TabData

Revision=>TabReview

Affichage=>TabView

Developpeur=>TabDeveloper

Complements=>TabAddIns

 

Une image Office Icon Gallery sur le bouton

C'est la balise "imageMso" du code XML qui détermine l'image (Icône)

imageMso="HappyFace"

<button id="Coucou" label="Coucou" onAction="test" size="large" imageMso="HappyFace" />

 Pour avoir les noms des différentes images (les icônes) téléchargez le classeur "Office2007IconsGallery.xlsm"

 http://dj.joss.free.fr/download/Office2007IconsGallery.xlsm

Cliquez sur l'onglet "Développeur" et vous avez toutes les "Gallery" à votre disposition.

En passant la souris sur les icônes une info bulle vous donne le nom de l'icône choisie 

 

 

Une image perso sur le bouton

Dans l'éditeur ouvrez votre classeur "testruban.xlsm"
Cliquez sur le bouton "Insert Icons" et dans la boîte qui s'affiche sélectionnez votre image
Cliquez sur Ouvrir et l'image sélectionnée apparait alors dans une nouvelle fenêtre à droite.
Dans l'exemple ci-dessous l'image est "noir.jpg"
Le format de l'image peut être : gif, jpeg, png, ico etc... (Attention à ne pas choisir une image trop "lourde")
Modifiez la balise
"imageMso" du code XML par celle çi "image"
Et indiquez le nom de l'image que vous venez d'insérer sans l'extension.

image="noir"


Enregistrez et fermez.

 

Un lien hypertexte sur le bouton

Il est tout à fait possible de mettre un lien hypertexte sur un bouton
Par exemple pour ouvrir une page web ou bien simplement ouvrir un fichier d'aide

Dans l'Editeur Visual Basic (Alt + F11) insérez un nouveau module et collez ce code :

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

Public Sub OpenBrowser(ByVal control As IRibbonControl)
ShellExecute 0&, vbNullString, control.Tag, vbNullString, vbNullString, SW_SHOWNORMAL
End Sub

'La macro lancera le lien indiqué après la balise "tag" du code XML  (Tag="le lien")

Dans l'éditeur ouvrez votre classeur "testruban.xlsm"
Ajouter le code ci-dessous après la balise </group>
Ce qui ajoutera un nouveau groupe appelé "Visitez mon site Web" avec un bouton "Site VBAXL"
N'oubliez pas d'ajouter l'image pour le bouton en cliquant sur "Insert Icons"

<group id="Services" label="Visitez mon site Web">

<button id="VBAXL" label="Site VBAXL" onAction="OpenBrowser" size="large" image="vbaxl" tag="http://dj.joss.free.fr" />

</group>

Et voila le résultat


testruban.zip   12 ko  Téléchargez testruban.zip

 

Quelques astuces ...

Il est très facile de supprimer toute l'interface utilisateur prédéfinie d'excel.
Pour cela définissez StartFromScratch ="true" dans la balise <ribbon> principale

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

<ribbon startFromScratch="true">

Les principaux onglets prédéfinis, la barre d'outils Accès rapide et les commandes du menu
à l'exception de Nouveau, Ouvrir et Enregistrer seront masqués.

 

Comment ne masquer qu'un seul onglet ?

L'onglet "Accueil" par exemple.
Il suffit de placer ce code <tab idMso="TabHome" visible="false"/> après la balise <tabs>

<tabs>

<tab idMso="TabHome" visible="false"/>

 

Comment ajouter l'onglet Font (Police) à votre barre perso ?

En le plaçant à la fin de votre barre par exemple.
Il suffit de placer ce code <group idMso="GroupFont" /> avant la balise </tab>

<group idMso="GroupFont" />

</tab>