Personnalisation de l'interface utilisateur d'Office 2007 Ruban pour les développeurs (partie 1 sur 2)

Paru le 28 août 2006

Frank Rice

Lire l'article en anglais Site en anglais

S'applique à :

  • Suites Microsoft Office 2007

  • Microsoft Office Access 2007

  • Microsoft Office Excel 2007

  • Microsoft Office PowerPoint 2007

  • Microsoft Office Outlook 2007

  • Microsoft Office Word 2007

Résumé : Découvrez les scénarios et le balisage XML que vous pouvez utiliser pour personnaliser l'interface utilisateur ruban de la version Microsoft Office 2007. L'interface ruban remplace, dans la version 2007, les menus, les barres d'outils et la majeure partie de l'interface utilisateur du volet des tâches.

Sur cette page

Une interface utilisateur améliorée Une interface utilisateur améliorée
De nouveaux moyens d'offrir un plus à l'utilisateur De nouveaux moyens d'offrir un plus à l'utilisateur
Personnalisation de l'interface ruban pour la plupart des applications Office Personnalisation de l'interface ruban pour la plupart des applications Office
Qu'en est-il des solutions existantes ? Qu'en est-il des solutions existantes ?
Utilisation des rappels Utilisation des rappels
Deux façons de personnaliser l'interface ruban Deux façons de personnaliser l'interface ruban
Format général des fichiers de balisage XML Format général des fichiers de balisage XML
Personnalisation de l'interface dans Access 2007 Personnalisation de l'interface dans Access 2007
Création d'un ruban personnalisé de niveau d'application d'accès Création d'un ruban personnalisé de niveau d'application d'accès
Création d'une interface ruban personnalisée dans Access pour des formulaires multiples Création d'une interface ruban personnalisée dans Access pour des formulaires multiples
Autres scénarios de personnalisation de ruban d'application dans Office 2007 Autres scénarios de personnalisation de ruban d'application dans Office 2007
Utilisation de compléments COM pour modifier l'interface utilisateur ruban Utilisation de compléments COM pour modifier l'interface utilisateur ruban
Ajout de compléments de type document à l'interface ruban Ajout de compléments de type document à l'interface ruban
Utilisation de compléments COM hérités de la barre de commande Utilisation de compléments COM hérités de la barre de commande
Mise à jour dynamique de l'interface utilisateur ruban Mise à jour dynamique de l'interface utilisateur ruban
Chargement d'images Chargement d'images
Conclusion Conclusion
Ressources supplémentaires Ressources supplémentaires

Une interface utilisateur améliorée

La plupart des applications de Microsoft Office System 2007 ont un nouvel aspect. L'interface utilisateur ruban remplace le système actuel de menus superposés, barres d'outils et volets de tâches par un système d'interfaces optimisé pour une plus grande efficacité et une meilleure découverte. La nouvelle interface est dotée de menus contextuels améliorés, d'info-bulles, d'une mini barre d'outils et de raccourcis clavier permettant à l'utilisateur d'être plus efficace et plus productif.

Remarque : L'interface ruban est présente dans la version Microsoft Office 2007, comprenant Microsoft Office Access 2007, Microsoft Office Excel 2007, Microsoft Office PowerPoint 2007, Microsoft Office Word 2007 et Microsoft Office Outlook 2007. Elle est aussi présente dans Microsoft Office Outlook 2007 lorsqu'un utilisateur crée ou édite des messages électroniques ou quand il utilise des contacts ou l'application Calendrier. Vous pouvez personnaliser l'interface ruban par le biais du balisage XML ou de n'importe quel langage Microsoft .NET accepté par Microsoft Visual Studio. Vous pouvez aussi personnaliser l'interface ruban en utilisant Microsoft Visual Basic pour Applications (VBA), Microsoft Visual C++ et Microsoft Visual Basic 6.0.

Cet article présente en détails la nouvelle interface utilisateur et fournit des exemples de code, ainsi que des scénarios de personnalisation de l'interface ruban.

  • Pour plus d'informations sur les commandes ruban et les listes d'attributs, voir Personnalisation de l'interface utilisateur d'Office 2007 Ruban pour les développeurs (partie 2 sur 2).

  • Pour une présentation orientée développeurs du système d'interface utilisateur de la version 2007 des applications Microsoft Office, et pour en savoir plus sur la nouvelle conception de l'interface et sur l'impact de cette dernière sur les solutions personnalisées et les compléments, voir la Présentation pour les développeurs de l'interface utilisateur de Microsoft Office System 2007.

  • Pour plus de renseignements sur les fonctionnalités, voir le fichier Lisez-moi de l'interface ruban, disponible avec la version bêta 2 de Microsoft Office System 2007.

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'interface ruban dans des applications de la version 2007 d'Office

Figure 1

Figure 1. L'interface ruban dans des applications de la version 2007 d'Office

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.

Personnalisation de l'interface ruban pour la plupart des applications Office

Vous pouvez créer une interface ruban personnalisée au niveau de l'application sous Word 2007, Excel 2007 ou PowerPoint 2007 en procédant comme suit :

  • En utilisant des compléments COM dans un code géré ou non géré

  • En utilisant des compléments propres à l'application, comme des fichiers .ppam et .xlam

  • En utilisant des modèles (fichiers .dotm) sous Word 2007

Généralement, le code du complément COM contient des procédures qui renvoient un balisage XML à partir d'un fichier de personnalisation externe ou à partir d'un contenu XML dans le code même. Lorsque l'application démarre, le complément se charge et exécute le code qui renvoie le balisage XML. Le code valide le balisage XML par rapport à un schéma XSD, puis le charge en mémoire et l'applique à l'interface ruban. L'interface ruban modifiée est affichée. Les commandes et les contrôles de l'interface ruban utilisent également des procédures de rappel afin d'exécuter le code dans le complément.

Les personnalisations de niveau document utilisent le même balisage XML, ainsi qu'un fichier Open XML Formats portant l'une de ces extensions : .docx, .docm, .xlsx, .xlsm, .pptx ou .pptm. Dans ce scénario, vous créez un fichier de personnalisation contenant le balisage XML et vous l'enregistrez dans un dossier. Vous modifiez ensuite les parties du conteneur Open XML Formats pour la réorientation vers le fichier de personnalisation. Lorsque vous ouvrez le document dans l'application Office, le fichier de personnalisation se charge en mémoire et il est appliqué à l'interface ruban. Les commandes et les contrôles appellent ensuite le code contenu dans le document ce qui les rend fonctionnels.

Qu'en est-il des solutions existantes ?

Dans les versions précédentes d'Office, les développeurs utilisaient le modèle d'objet CommandBars pour créer le code Visual Basic qui modifiait l'interface. Dans la version 2007, ce code hérité continue de fonctionner sans aucune modification, dans la plupart des cas. Cependant, les changements apportés aux barres d'outils dans Microsoft Office 2003 figurent maintenant dans un onglet Compléments. Le type de personnalisation affiché dépend de la conception initiale du complément. Par exemple, Office crée un groupe Commandes de menu contenant les éléments ajoutés à la structure de menu préalable (menu Fichier, menu Insertion, menu Outils, etc.). Il crée également un groupe Commandes de barre d'outils contenant les éléments ajoutés aux barres d'outils intégrées préalablement (barre d'outils Standard, barre d'outils Mise en forme, barre d'outils Image, etc.). De plus, les barres d'outils personnalisées ajoutées par un document complémentaire apparaissent dans le groupe Barres d'outils personnalisées dans l'onglet Compléments.

Utilisation des rappels

Avant d'entrer dans les détails de la personnalisation de l'interface ruban, arrêtons-nous sur l'utilisation des rappels. En ce qui concerne l'extensibilité du ruban, vous indiquez des rappels pour la mise à jour de propriétés et l'exécution de tâches à partir de votre interface lors de l'exécution. Par exemple, prenons la fonction de rappel onAction pour un bouton. Le balisage du ruban ressemble à ce qui suit :

‹button id="myButton" onAction="MyButtonOnAction" /›

Ce balisage indique à Microsoft Office d'appeler la fonction MyButtonOnAction lorsqu'on clique sur le bouton. La fonction MyButtonOnAction comporte une signature spécifique selon le langage que vous avez choisi ; voici un exemple dans C :

public void MyButtonOnAction (IRibbonControl control)
{
	if (control.Id=="myButton")
	{
		System.Windows.Forms.MessageBox.Show("Button clicked!");
	}
}

La fonction MyButtonOnAction peut porter n'importe quel nom à condition que sa signature corresponde à celles du tableau ci-dessous :

Personnalisation de l'interface utilisateur d'Office 2007 Ruban pour les développeurs (partie 2 sur 2) : Table 12. Liste de tous les rappels et toutes les signatures de C et VBA

Personnalisation de l'interface utilisateur d'Office 2007 Ruban pour les développeurs (partie 2 sur 2) : Table 13. Liste de tous les rappels et toutes les signatures de C++ et Visual Basic .NET

Vous devez le déclarer « public ». Le paramètre de contrôle vous permet d'utiliser la même fonction de rappel pour de nombreux contrôles différents.

Remarque : tous les attributs dans le balisage de personnalisation XML utilisent la notation « camel-case » ; la première lettre de chaque mot est mise en majuscule à l'exception du premier mot. Par exemple, onAction et insertBefore.

Deux façons de personnaliser l'interface ruban

La version 2007 d'Office (à l'exception d'Access 2007 ; voir plus loin dans cet article) fournit deux moyens de personnaliser l'interface ruban à l'aide du balisage XML : en utilisant des fichiers Open XML Formats valides contenant un balisage XML ou en utilisant des compléments COM contenant un balisage XML. Tous les changements que vous indiquez dans ce balisage XML sont incrémentiels par rapport à l'interface ruban existante. Par exemple, l'ajout d'un balisage XML pour identifier un onglet personnalisé ajoute un onglet unique.

Remarque : le ruban est doté d'un certain nombre d'attributs pouvant définir des propriétés diverses. Pour consulter la liste des attributs, voir le Tableau 14. Liste des attributs de ruban.

Tous les contrôles du balisage de ruban doivent être accompagnés de l'un des identificateurs ci-dessous.

Table 1. L'un de ces identificateurs doit être utilisé avec tous les contrôles

Identificateur

Description

Id

Utilisé avec des contrôles personnalisés. Cet identificateur est transmis comme propriété sur un contrôle IRibbonControl pour rappeler des fonctions.

idMso

Utilisé avec des contrôles intégrés.

idQ

Utilisé avec des contrôles qualifiés. Par exemple :


‹customUI xmlns=https://schemas.microsoft.com/office/2006/01/customui 
            xmlns:x="myNameSpace"›
‹button idQ="x:myButton" . . . /›

Remarque : en créant un espace de noms x, deux compléments différents peuvent compléter le même groupe personnalisé ; ils doivent simplement se référer au groupe personnalisé par son nom qualifié.

Personnalisation de l'interface ruban en utilisant des fichiers Open XML Formats

Au niveau document, le processus de personnalisation de l'interface ruban en utilisant le balisage XML implique les étapes suivantes. Pour plus d'informations, voir Ajout de compléments basés sur des documents pour l'interface ruban, plus loin dans cet article.

Personnaliser l'interface ruban en utilisant des fichiers Open XML Formats :

  1. Créez le fichier de personnalisation dans n'importe quel éditeur de texte en ajoutant le balisage XML qui ajoute de nouveaux composants à l'interface ruban, modifie des composants existants ou masque des composants. Enregistrez le fichier sous le nom customUI.xml.

  2. Créez un dossier sur votre bureau appelé customUI et copiez le fichier de personnalisation à l'intérieur.

  3. Validez le balisage XML avec un schéma UI personnalisé.
    Remarque : cette étape est facultative.

  4. Créez un document dans l'application Office, puis enregistrez-le sous forme de fichier Open XML Formats portant l'une de ces extensions : .docx, .docm, .xlsx, .xlsm, .pptm ou .pptx.
    Les fichiers contenant des macros ont un suffixe m. Ces fichiers contiennent également des procédures appelées par les commandes et les contrôles du ruban.

  5. Ajoutez une extension .zip au nom de fichier du document, puis ouvrez le fichier.

  6. Ajoutez le fichier de personnalisation au conteneur en faisant glisser le dossier du bureau dans le fichier Zip.

  7. Extrayez le fichier .rels du fichier Zip sur votre bureau. Un dossier _rels contenant le fichier .rels est alors copié sur votre bureau.

  8. Ouvrez le fichier .rels situé dans le dossier _rels, ajoutez une ligne pour créer une relation entre le fichier du document et le fichier de personnalisation, puis enregistrez le fichier.

  9. Remettez le dossier _rels dans le conteneur en écrasant le fichier existant.

  10. Redonnez au fichier son nom initial en retirant son extension .zip.

Maintenant, lorsque vous ouvrez le fichier dans l'application Office, l'interface ruban apparaît avec vos personnalisations.

Personnalisation de l'interface ruban avec des compléments COM

Des personnalisations effectuées au niveau de l'application permettent d'afficher une UI ruban modifiée dans l'application quel que soit le document ouvert. Vous créez principalement des compléments COM pour effectuer ces modifications.

Personnaliser l'interface ruban en utilisant des compléments COM :

  1. Créez un projet de compléments COM.
    Le complément que vous créez doit implémenter l'interface Extensibility.IDTExtensibility2 (comme avec tous les compléments COM) et il doit aussi implémenter l'interface supplémentaire IRibbonExtensibility (située dans l'espace de noms Microsoft.Office.Core).

  2. Créez le projet de complément et d'installation, puis installez le projet.

  3. Lancez l'application Microsoft Office.
    Lors du chargement du complément, l'événement IDTExtensibility2::OnConnection est déclenché, ce qui initialise le complément, exactement comme dans les versions antérieures d'Office.

  4. Ensuite, la méthode QueryInterface est appelée ; elle détermine si l'interface IRibbonExtensibility est implémentée.

  5. Si c'est le cas, la méthode IRibbonExtensibility::GetCustomUI est appelée ; elle charge le balisage XML (à partir du fichier de personnalisation XML ou à partir du balisage XML intégré dans la procédure), puis charge ensuite l'interface ruban personnalisée dans l'application.

  6. Enfin, l'interface ruban personnalisée est prête pour l'utilisateur.

Chaque contrôle spécifié dans le balisage XML révèle sa fonctionnalité en appelant des procédures de rappel. Par exemple, le balisage XML pour un contrôle de bouton peut spécifier un attribut onAction qui oriente vers une procédure exécutée lorsque l'utilisateur clique sur le bouton. Dans la plupart des cas, la procédure de rappel révèle une interface IRibbonControl identifiant le contrôle. Vous pouvez également transmettre d'autres arguments. Vous pouvez, par exemple, transmettre un objet booléen spécifiant l'état d'un bouton d'activation (enfoncé ou non). L'interface IRibbonControl implémente trois propriétés : l'objet Contexte, l'objet Id et la propriété de balise. L'objet Contexte correspond à la fenêtre active contenant le ruban qui déclenche le rappel. L'objet Id correspond à l'identificateur de chaîne du contrôle personnalisé spécifié dans le balisage. La propriété de balise est une propriété non unique que vous pouvez éventuellement spécifier dans le balisage.

Format général des fichiers de balisage XML

Vous pouvez utiliser le balisage XML pour personnaliser l'interface ruban. L'exemple ci-dessous montre le format général d'un fichier de balisage XML personnalisant l'interface ruban sous Word 2007.

‹customUI xmlns="https://schemas.microsoft.com/office/2005/08/customui" › 
   ‹ribbon startFromScratch="false" › 
      ‹tabs› 
         ‹tab idMso="TabWrite"› 
            ‹group idMso="GroupFont" visible="false" /› 
         ‹/tab› 
         ‹tab id="CustomTab" label="My Tab"› 
            ‹group id="mygroup" label="Sample Group" › 
               ‹button id="Button1" label="My Large Button" 
                  size="large" onAction="MyMacro" /› 
               ‹button id="Button2" label="My Normal Button" 
                  size="normal" onAction="MyMacro" /› 
            ‹/group › 
            ‹group id="SimpleControls" label="My Group "› 
               ‹toggleButton id="ToggleButton1" size="large" 
                  label="Large Toggle Button" getPressed="MyMacro"  /› 
               ‹checkBox id="CheckBox1" label="A CheckBox" 
                  tooltip="This is a check box" onAction="MyMacro" /› 
               ‹editBox id="EditBox1" getText="MyMacro" label=
                  "My EditBox" onChange="MyMacro"/› 
               ‹comboBox id="Combo1" label="My ComboBox" 
                  showItemLabel="false" onChange="MyMacro"› 
                  ‹item id="Zip1" label="33455" /› 
                  ‹item id="Zip2" label="81611" /› 
                  ‹item id="Zip3" label="31561" /› 
               ‹/comboBox› 
               ‹advanced› 
                  ‹button id="Launcher" tooltip="My Launcher" 
                     onAction="MyMacro" /› 
               ‹/advanced› 
            ‹/group› 
         ‹/tab› 
      ‹/tabs› 
   ‹/ribbon› 
‹/customUI› 

Ce balisage XML modifie l'interface ruban, comme le montre la figure ci-dessous :

Figure 2

Figure 2. Exemple de personnalisation de l'interface ruban sous Word

Cet exemple apporte les changements suivants à l'interface ruban sous Word 2007, dans l'ordre indiqué :

  1. Tout d'abord, il déclare l'espace de noms par défaut, ainsi qu'un espace de noms personnalisé.

  2. Ensuite, il masque le groupe intégré GroupFont qui se trouve dans l'onglet Accueil intégré.

  3. Puis, il ajoute un nouvel onglet CustomTab à droite du dernier onglet intégré.
    Remarque : Utilisez l'attribut id=identifier pour créer un élément personnalisé, comme l'onglet personnalisé. Utilisez l'attribut idMso= identifier pour faire référence à un élément intégré, comme l'onglet TabHome.

  4. L'exemple ajoute un nouveau groupe SampleGroup à Mon onglet.

  5. Il ajoute un bouton ToogleButton1 grand format à Mon groupe. Un rappel onAction et un rappel GetPressed sont également spécifiés.

  6. L'exemple ajoute une case à cocher CheckBox1 à Mon groupe avec une info-bulle personnalisée. Un rappel onAction est également spécifié.

  7. L'exemple ajoute une zone d'édition EditBox1 à Mon groupe. Un rappel onChange est également spécifié.

  8. L'exemple ajoute une liste modifiable Combo1 à Mon groupe comportant trois éléments. Cette liste indique un rappel onChange utilisant le texte de chaque élément.

  9. L'exemple ajoute un lanceur Launcher1 à Mon groupe comportant un ensemble de rappels onAction.
    Le lanceur peut aussi afficher une boîte de dialogue personnalisée proposant des options supplémentaires à l'utilisateur.

  10. L'exemple ajoute un nouveau groupe Mon groupe à l'onglet personnalisé.

  11. Il ajoute un bouton Button1 grand format au groupe Mon groupe. Un rappel onAction est également spécifié.

  12. Enfin, l'exemple ajoute un bouton Button1 de taille normale au groupe Mon groupe. Un rappel onAction est également spécifié.

Comme vous pouvez le voir, il est facile de modifier l'interface ruban.

Personnalisation de l'interface dans Access 2007

Les personnalisations du ruban dans Access 2007 ont des options en commun avec les autres applications d'Office, à quelques différences près. Comme avec les autres applications d'Office 2007, vous personnalisez l'interface ruban d'Access en utilisant le balisage XML. Et vous pouvez utiliser des fichiers externes contenant un balisage XML ou des compléments COM afin d'intégrer les personnalisations du ruban à votre application. Néanmoins, contrairement aux autres applications d'Office et compte tenu du fait que les fichiers de base de données d'Access sont binaires et ne peuvent pas être ouverts comme des fichiers Open XML Formats d'Office, vous ne pouvez pas personnaliser le ruban d'Access en ajoutant des composants au fichier de base de données.

Access apporte cependant une incroyable souplesse au niveau de la personnalisation de l'interface ruban. Vous pouvez stocker, par exemple, le balisage de personnalisation dans un tableau, l'intégrer à une procédure VBA, le stocker dans une autre base de données Access ou créer un lien vers ce dernier à partir d'une feuille de calcul Excel. Vous pouvez également spécifier une UI personnalisée pour l'application dans son ensemble ou pour des formulaires et des rapports spécifiques.

Pour vous faire une idée de la facilité de personnalisation de l'interface d'Access, examinons deux scénarios.

Remarque : Étant donné que ceci implique des modifications de la base de données, il est peut-être préférable d'entreprendre ces étapes sur une base de données qui ne craint rien ; la base de données échantillon Northwind fournie avec Access, par exemple.

Personnalisation de l'interface ruban d'Access

Toutes les personnalisations d'interface de l'application Access ont une chose en commun : Les rubans correspondants ne sont rendus disponibles dans l'application qu'en appelant le seul membre d'objet Access VBA propre au ruban, la méthode LoadCustomUI. La signature pour cette méthode est la suivante :

expression.LoadCustomUI(CustomUIName As String, CustomUIXML As String)

où l'expression renvoie un objet Application et

CustomUIName est le nom de l'ID du ruban personnalisé devant être associé à ce balisage et

CustomUIXML contient le balisage de personnalisation XML.

Généralement, pour créer et mettre le ruban à la disposition de l'application, vous commencez par créer un module dans la base de données contenant une procédure appelant la méthode LoadCustomUI, transmettant le nom du ruban et le balisage de personnalisation XML. Comme on vous l'a précisé plus haut, le balisage XML peut provenir d'un objet Recordset créé à partir d'un tableau, d'une source extérieure à la base de données (comme un fichier XML que vous devez analyser dans une chaîne) ou d'un balisage XML intégré directement dans la procédure. Vous pouvez rendre plusieurs rubans disponibles en utilisant des appels multiples à la méthode LoadCustomUI, en transmettant différents balisages XML, tant que le nom de chaque ruban et que l'attribut id des onglets qui constituent le ruban sont uniques.

Une fois la procédure terminée, vous pouvez créer une macro AutoExec qui appelle la procédure en utilisant l'action RunCode. De cette façon, lorsque l'application est démarrée, la méthode LoadCustomUI est automatiquement exécutée et tous les rubans personnalisés sont mis à la disposition de l'application.
Pour appliquer un ruban personnalisé lorsque l'application est démarrée

Pour implémenter une interface ruban de façon à la rendre disponible lorsque l'application démarre, procédez comme suit :

  1. Suivez le processus décrit plus haut pour mettre les rubans personnalisés à la disposition de l'application.

  2. Fermez l'application et redémarrez-la.

  3. Cliquez sur le bouton Microsoft Office (menu Fichier) puis sur le bouton Options d'accès.

  4. Cliquez sur l'option Démarrage dans le panneau de gauche, puis dans la section Options de l'application, cliquez sur ID des rubans personnalisés et sélectionnez l'un des rubans dans la liste.

  5. À présent, fermez et redémarrez l'application. L'interface utilisateur que vous avez sélectionnée s'affiche.

Pour attribuer un ruban personnalisé à un formulaire ou rapport

  1. Suivez le processus décrit plus haut pour mettre le ruban personnalisé à la disposition de l'application.

  2. Ouvrez le formulaire ou rapport en mode Conception.

  3. Sur l'onglet Conception, cliquez sur le bouton Feuille de propriétés.

  4. Sur l'onglet Tout de la fenêtre Propriété, cliquez sur la liste déroulante ID de ruban personnalisé, puis sélectionnez l'un des rubans de la liste.

  5. Enregistrez, fermez, puis rouvrez le formulaire ou rapport. L'interface utilisateur que vous avez sélectionnée s'affiche.

Remarque : Les onglets affichés dans l'interface utilisateur ruban sont additifs. C'est-à-dire que, à moins que vous ne masquiez spécialement les onglets ou que vous ne définissiez l'attribut Start from Scratch (Tout recommencer) sur True, les onglets affichés par l'interface utilisateur ruban d'un formulaire ou rapport s'ajouteront aux onglets existants.

Voyons quelques exemples illustrant ce processus.

Création d'un ruban personnalisé de niveau d'application d'accès

Les étapes suivantes illustrent la création et l'implémentation d'un ruban personnalisé pour la base de données.

Avant de commencer, nous souhaitons définir une option qui signalera les erreurs éventuelles lors de l'exécution de notre code :

  1. Cliquez sur le bouton Microsoft Office (menu Fichier), cliquez sur Options d'accès, puis sur l'onglet Affichage.

  2. Sous Dans toutes les applications Office, montrer la section, sélectionnez l'option Signaler les erreurs d'interface utilisateur personnalisée dans compléments.
    Nous allons ensuite créer un tableau contenant notre balisage XML de personnalisation :

  3. Démarrez Access 2007.

  4. Sur l'onglet Insérer, cliquez sur Tableau, puis cliquez sur Conception de tableau.

  5. Ajoutez les champs suivants au tableau :

    Table 2. Définitions des champs du tableau DbRibbons

    Nom du champ

    Type

    ID Long Integer (AutoNumber)
    RibbonName Texte
    RibbonXml Memo
  6. Cliquez ensuite avec le bouton droit de la souris sur l'onglet Tableau1 et cliquez sur Affichage de la feuille de données.

  7. Ajoutez les données suivantes aux champs que vous avez créés :

    Table 3. Données du tableau DbRibbons

    Nom du champ

    Valeur

    ID

    (AutoNumber)

    RibbonName

    HideData

    RibbonXml

    ‹customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui"›
    
    
    

    ‹ribbon startFromScratch="false"› ‹tabs› ‹tab idMso="TabAccessEdit" visible="false" /› ‹tab id="dbCustomTab" label="Onglet personnalisé A" visible="true"› ‹group id="dbCustomGroup" label="Groupe A personnalisé"› ‹control idMso="Paste" label="Coller intégré" enabled="true"/› ‹/group› ‹/tab› ‹/tabs› ‹/ribbon› ‹/customUI›

    Ce balisage définit l'attribut startfromScratch sur False, puis il masque l'onglet Modifier intégré. Il crée ensuite un onglet personnalisé et un groupe personnalisé, et ajoute la commande Coller intégrée au groupe.

    1. Enregistrez le tableau sous DbRibbons et fermez-le.
      Nous allons ensuite créer le module VBA et la macro qui charge les rubans lors du démarrage.

    2. Sur l'onglet Insérer, cliquez sur le bouton Avancé, puis cliquez sur Module.

    3. Dans le menu Affichage de l'Editeur Visual Basic, cliquez sur la fenêtre Propriétés.

    4. Dans la zone de texte de la propriété Nom de la fenêtre Propriétés, donnez au module le nom RibbonLoader.

    5. Dans la fenêtre Code, insérez le code VBA suivant :

      Option Compare Database
      
      

    Function LoadRibbons() Dim i As Integer Dim db As DAO.Database Set db = Application.CurrentDb

    For i = 0 To (db.TableDefs.Count - 1) If (InStr(1, db.TableDefs(i).Name, "Ribbons")) Then Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset(db.TableDefs(i).Name) rs.MoveFirst

      While Not rs.EOF
            Application.LoadCustomUI rs("RibbonName").Value, rs("RibbonXml").Value
    
            rs.MoveNext
      Wend
    
      rs.Close
      Set rs = Nothing
    

    End If Next i

    db.Close Set db = Nothing End Function

    Ce code crée un Recordset à partir de n'importe quel tableau contenant le mot « Ribbons » dans son nom. Il appelle ensuite la méthode LoadCustomUI pour charger les rubans afin qu'ils soient disponibles pour la base de données. Pour finir, il ferme le recordset et la référence au DAO (Database object : objet de base de données).
    
    1. Enregistrez et fermez l'Editeur Visual Basic.

    2. Dans la fenêtre Base de données, cliquez sur Avancé dans l'onglet Insérer, puis sur Macro.

    3. Dans la fenêtre Macro, ajoutez l'action suivante :
      Action : RunCode
      Nom de la fonction : LoadRibbons()

    4. Cliquez avec le bouton droit de la souris sur l'onglet Macro1, puis cliquez sur Enregistrer.

    5. Dans la boîte de dialogue Enregistrer sous, tapez AutoExec.

    6. Cliquez avec le bouton droit de la souris sur l'onglet AutoExec, puis cliquez sur Fermer.

    7. À présent, fermez et redémarrez la base de données.

    8. Cliquez sur le bouton Microsoft Office, cliquez sur Options d'accès, puis sur l'onglet Démarrage.

    9. Dans la section Options de l'application, sélectionnez HideData dans la liste ID des rubans personnalisés.

    10. Fermez et redémarrez la base de données.

    Vous remarquerez que l'interface utilisateur ruban comprend un onglet appelé Onglet personnalisé A, qui contient un groupe, appelé Groupe personnalisé A, avec un bouton Coller intégré.

    L'interface utilisateur ruban de niveau application d'accès

    Figure 3

    Figure 3. L'interface utilisateur ruban de niveau application d'accès

    Pour résumer le processus, lorsque la base de données démarre, la macro AutoExec est exécutée, laquelle appelle la procédure LoadRibbons. La procédure LoadRibbons crée un objet Recordset à partir du tableau DBRibbons, puis elle appelle la méthode LoadCustomUI, tout en transmettant le nom du ruban et le balisage de personnalisation XML. Après la fermeture et le redémarrage de l'application, le ruban HideData est prêt à être utilisé. Vous définissez ensuite le ruban HideData comme étant celui qui s'affiche lorsque l'application démarre. Enfin, après la fermeture et le redémarrage de l'application, l'interface utilisateur ruban personnalisée s'affiche.

    Création d'une interface ruban personnalisée dans Access pour des formulaires multiples

    La procédure qui suit concerne la création de deux interfaces utilisateur ruban personnalisées et l'attribution d'une interface utilisateur différente à deux formulaires différents. Vous pourriez également utiliser la même procédure pour un ou plusieurs rapports. Cette procédure part du principe que vous avez complété la procédure précédente et que la macro et le module existent déjà.

    Nous commençons par créer un tableau contenant notre balisage de personnalisation XML :

    1. Démarrez Access 2007.

    2. Sur l'onglet Insérer, cliquez sur le bouton Tableau, puis cliquez sur Conception de tableau.

    3. Ajoutez les champs suivants au tableau :

      Table 4. Définitions des champs du tableau FormRibbons

      Nom du champ

      Type

      ID Long Integer (AutoNumber)
      RibbonName Texte
      RibbonXml Memo
    4. Cliquez ensuite avec le bouton droit de la souris sur Tableau1 puis sur Affichage de la feuille de données.

    5. Ajoutez les deux enregistrements et données suivants aux champs que vous avez créés :

      Table 5. Données du tableau FormRibbons

      Nom du champ

      Valeur

      ID

      (AutoNumber)

      RibbonName

      HideInsert

      RibbonXml

      ‹customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui"›
      
      
      

      ‹ribbon startFromScratch="false"› ‹tabs› ‹tab idMso="TabCreate" visible="true" /› ‹tab id="frm1CustomTab" label="Onglet Formulaire 1 personnalisé" visible="true"› ‹group id="frm1CustomGroup" label="Groupe personnalisé A"› ‹control idMso="Paste" label="Coller intégré" enabled="true" /› ‹control idMso="Copy" label="Afficher message" /› ‹/group› ‹/tab› ‹/tabs› ‹/ribbon› ‹/customUI›

      ID

      (AutoNumber)

      RibbonName

      HidePageLayout

      RibbonXml

      ‹customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui"›
         ‹ribbon startFromScratch="false"›
            ‹tabs›
                  ‹tab idMso="TabPageLayout" visible="false" /›
               ‹tab id="frm2CustomTab" label="Onglet formulaire 2 personnalisé" 
               visible="true"›
                     ‹group id="frm2CustomGroup" label="Groupe personnalisé A Custom"›
                        ‹button id="myButton" label="Afficher message" enabled="true" 
                        onAction="MyButtonOnAction" /›
                     ‹/group›
                  ‹/tab›
            ‹/tabs›
         ‹/ribbon›
      ‹/customUI›

      A l'instar du balisage de la procédure précédente, ce balisage définit l'attribut startfromScratch sur False, puis il masque un onglet intégré. Il crée ensuite un onglet personnalisé et un groupe personnalisé, et ajoute, dans l'un, des contrôles intégrés au groupe personnalisé. Dans l'autre balisage, un bouton personnalisé est ajouté au group avec un attribut OnAction, lequel déclenche une procédure qui affiche une zone de message.

      1. Enregistrez le tableau sous FormRibbons et fermez-le.
        Etant donné que la procédure LoadRibbons a déjà été décrite dans la procédure précédente, nous n'avons qu'à ajouter la procédure de rappel appelée par l'attribut onAction dans le ruban HidePageLayout.

      2. Ouvrez le module RibbonLoader.

      3. Dans le menu Outils, cliquez sur Références puis, dans la boîte de dialogue Références, faites défiler jusqu'à ce que vous voyiez la bibliothèque d'objets Microsoft Office 12.0, puis cliquez sur la case à cocher. Vous aurez ainsi accès à l'objet IRibbonControl.

      4. Insérez le code suivant en dessous de la procédure LoadRibbons :

        Sub MyButtonOnAction(ByVal control As IRibbonControl)
        

      MsgBox ("You clicked " & control.Id) End Sub

      1. Enregistrez, fermez, puis redémarrez la base de données afin que les nouveaux rubans soient disponibles pour l'application.

        A présent, nous devons créer les formulaires non liés. Assurez-vous qu'aucun des tableaux n'est sélectionné lorsque vous créez le formulaire, sans quoi ce dernier contiendrait tous les champs du tableau.

      2. Sur l'onglet Insérer, cliquez sur Formulaire simple, puis cliquez sur Conception de formulaire.

      3. Sur l'onglet Conception, cliquez sur Feuille de propriétés.

      4. Dans la fenêtre Feuille de propriétés, faites défiler jusqu'à ce que vous voyiez la propriété ID de ruban personnalisé.

      5. Cliquez sur la liste et sélectionnez le ruban HideInsert.

      6. Fermez et enregistrez le formulaire sous Form_HideInsert.

      7. À présent, répétez cette procédure mais en sélectionnant cette fois le ruban HidePageLayout dans la propriété ID de ruban personnalisé et donnez le nom Form_HidePageLayout au formulaire.

      8. Fermez et redémarrez la base de données.

      9. Ouvrez le formulaire HideInsert. Vous remarquerez que l'interface utilisateur ruban comprend maintenant un onglet Formulaire 1 personnalisé qui contient un groupe, appelé Groupe personnalisé A, avec les boutons Coller et Copier intégrés.

        Figure 4

        Figure 4. L'interface utilisateur ruban du formulaire HideInsert

      10. Fermez le formulaire, puis ouvrez le formulaire HidePageLayout. L'interface utilisateur ruban affiche à présent un onglet Formulaire 2 personnalisé qui contient un Groupe A personnalisé avec un bouton personnalisé Afficher message. En outre, l'onglet Mise en page intégré n'est pas affiché.

        Figure 5

        Figure 5. L'interface utilisateur ruban du formulaire HidePageLayout

      11. À présent, ouvrez le formulaire HideInsert. Vous remarquerez que, lorsque vous passez d'un formulaire à l'autre, l'interface utilisateur ruban change en fonction du formulaire affiché.

      Dans les étapes précédentes, nous avons expliqué comment créer une interface utilisateur ruban orientée application et des rubans personnalisés pour des formulaires différents. Vous pouvez également créer une interface utilisateur ruban Access personnalisée en utilisant un complément COM. Les compléments COM offrent l'avantage d'ajouter une fonctionnalité ruban personnalisée sous forme de package sans avoir à ajouter un code VBA à chaque application. Les compléments sont implémentés dans Access de la même façon que dans d'autres applications Office.

      Poursuivons maintenant notre discussion sur l'interface utilisateur ruban dans d'autres applications Office.

      Autres scénarios de personnalisation de ruban d'application dans Office 2007

      Examinons les scénarios suivants qui illustrent des façons de modifier l'interface utilisateur ruban en fonction de vos besoins.

      Créations de solutions personnalisées

      Vous pouvez créer votre propre interface utilisateur de toutes pièces. L'élément ‹ribbon› a un attribut startFromScratch. Si l'attribut startFromScratch est défini sur True, les principaux onglets intégrés sont masqués. Ceci peut se produire si vous souhaitez créer votre propre interface utilisateur et ajouter vos propres composants personnalisés pour une solution extrêmement personnalisée. La définition de l'attribut startFromScratch sur True est un raccourci vous empêchant d'avoir à définir la propriété visible de tous les onglets manuellement et d'avoir à définir les groupes sur False. Ce raccourci vous empêche également d'avoir à masquer les commandes du menu Fichier et la barre d'outils à accès rapide. L'attribut startFromScratch est défini sur False par défaut.

      Remarque : Si vous définissez l'attribut startFromScratch sur True, toutes les commandes du menu Fichier sont masquées à l'exception des commandes Nouveau, Ouvrir, Options de l'application et Quitter.

      Lorsque vous définissez l'attribut startFromScratch sur True, l'action :

      • Masque tous les onglets par défaut, y compris l'onglet Compléments.

      • Modifie le menu Fichier pour inclure les commandes Nouveau, Ouvrir, Enregistrer, Imprimer, Fermer, Paramètres de l'application et Quitter.

        Attention : Vous pouvez spécifier dans le fichier de balisage XML que vous souhaitez modifier les commandes Nouveau, Ouvrir, Enregistrer, Imprimer et Fermer. Vous devez le déclarer explicitement dans le fichier de balisage XML en définissant l'attribut visible pour le contrôle concerné sur False. Toutefois, le masquage de ces contrôles risque de placer l'application dans un état irrécupérable que seule la fermeture de l'application et la désinstallation de votre solution pourront annuler.

      • Masque la barre d'outils à accès rapide.

      L'exemple ne modifie en rien la barre d'état, qui reste présente.

      L'exemple suivant de balisage XML utilise l'attribut startFromScratch pour personnaliser l'interface utilisateur ruban :

      ‹customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui" › 
         ‹ribbon startFromScratch="true" › 
            ‹tabs› 
               ‹tab id="CustomTab" label="My Tab" › 
                  ‹group id="SimpleControls" label="My Group"› 
                     ‹toggleButton id="ToggleButton1" image="Icon.bmp" 
                        size="large" label="Large Toggle Button"/› 
                     ‹button id="Button2" label="My Button" /› 
                     ‹comboBox id="Combo1" label="ComboBox" showItemLabel="false"› 
                        ‹item id="Month1" label="January" /› 
                        ‹item id="Month2" label="February" /› 
                        ‹item id="Month3" label="March" /› 
                     ‹/comboBox› 
                     ‹advanced› 
                        ‹button id="Launcher" tooltip="My Launcher" 
                           onAction="MyMacro" /› 
                     ‹/advanced› 
                  ‹/group› 
               ‹/tab› 
            ‹/tabs› 
         ‹/ribbon› 
      ‹/customUI› 

      Dans cet exemple, tous les composants intégrés de l'interface utilisateur ruban sont masqués et remplacés par un onglet personnalisé, un groupe et divers contrôles.

      Affichage et masquage des onglets personnalisés

      Vous pouvez utiliser l'exemple de code suivant pour afficher ou masquer des onglets personnalisés intégrés :

      ‹tab idMso="TabHome" visible="false" /›‹tab id="MyTab" getVisible="returnVisibleState" /› 

      Affichage et masquage de groupes

      Vous pouvez utiliser l'exemple de code suivant pour afficher ou masquer des groupes personnalisés intégrés :

      ‹tab idMso="TabHome"› 
         ‹group id="GroupFont" visible="false" /› 
         ‹group id="MyCustomGroup" label="Custom Group" getVisible="showFunction" /›‹/tab› 

      Ajouts d'onglets personnalisés

      Vous pouvez utiliser l'exemple de code suivant pour ajouter des onglets personnalisés :

      ‹tab id="CustomTab" label="Mon onglet" /›

      Ajouts de groupes personnalisés avec des contrôles

      Vous pouvez utiliser l'exemple de code suivant pour ajouter un groupe personnalisé, puis des contrôles intégrés :

      ‹group id="CustomGroup" label="Mon groupe"›
         ‹toggleButton idMso="Italic" /› 
         ‹toggleButton idMso="Bold" /› 
         ‹button idMso="Save" /›
      ‹/group›

      Vous pouvez utiliser l'exemple de code suivant pour ajouter un groupe personnalisé, puis des contrôles intégrés :

      ‹group id="CustomGroup" › 
         ‹toggleButton id="MyToggleButton" size="large" label="Insert My Object"/› 
         ‹checkBox id="AllowChanges" label="Allow Changes" /› 
         ‹dropDown id="ChooseDepartment" showLabel="true" label="Choose 
            Department"› 
            ‹item id="Dept1" label="Shipping" /› 
            ‹item id="Dept2" label="Accounting" /› 
            ‹item id="Dept3" label="Engineering" /› 
         ‹/dropDown› 
      ‹/group› 

      Création de menus personnalisés avec des menus et contrôles imbriqués

      Vous pouvez utiliser l'exemple de code suivant pour ajouter un groupe personnalisé, puis des menus et contrôles imbriqués :

      ‹menu id="MyMenu" label="Test Menu" itemSize="normal"› 
         ‹togglebutton idMso="Bold"/› 
         ‹button id="MenuButton" label="Button" /› 
         ‹button id="MenuButton2" label="" /› 
         ‹toggleButton id="MenuToggleButton1" label="ToggleButton" /› 
         ‹button idMso="Exit"/› 
         ‹menu id="Nested1" label="Advanced" itemSize="normal"› 
            ‹button idMso="Cut"/› 
            ‹button idMso="Copy"/› 
            ‹button idMso="Paste"/› 
            ‹menu id="Nested2" label="Large" itemSize="large"› 
            ‹button idMso="Cut"/› 
               ‹button idMso="Copy"/› 
            ‹button idMso="Paste"/› 
            ‹/menu› 
         ‹/menu› 
      ‹/menu› 

      Ajout de zones de liste déroulantes avec des éléments imbriqués

      Vous pouvez utiliser l'exemple de code suivant pour ajouter un contrôle de zone de liste déroulante intégré avec des éléments, puis un contrôle bouton imbriqué. Les contrôles des listes déroulantes utilisent le même format :

      ‹comboBox id="ComboBox1" label="ComboBox" description="A simple combo box" › 
            ‹item id="item1" label="one" getImage="MyImageMacro" /› 
            ‹item id="item2" label="two" getImage="MyImageMacro" /› 
            ‹Item id="item3" label="three" getmage="MyImageMacro" /› 
      ‹/comboBox› 

      Ajout de contrôles de galerie personnalisés avec des éléments

      Vous pouvez utiliser l'exemple de code suivant pour ajouter des contrôles de galerie avec des éléments, puis un contrôle bouton personnalisé :

      ‹gallery id="Gallery1" imageMso="DateAndTime" label=
         "Pick a Month:" columns="3" rows="4" onAction="MyMacro" › 
         ‹item id="Month1" label="January" /› 
         ‹item id="Month2" label="February"/› 
         ‹item id="Month3" label="March"/› 
         ‹item id="Month4" label="April"/› 
         ‹item id="Month5" label="May"/› 
         ‹item id="Month6" label="June"/› 
         ‹item id="Month7" label="July"/› 
         ‹item id="Month8" label="August"/› 
         ‹item id="Month9" label="September"/› 
         ‹item id="Month10" label="October"/› 
         ‹item id="Month11" label="November"/› 
         ‹item id="Month12" label="December"/› 
         ‹button id="Calendar" label="Calendar..."/› 
      ‹/gallery› 

      Remarque : Vous devez définir les contrôles d'éléments avant les contrôles boutons dans ces procédures.

      Les contrôles de galerie sont renseignés au moment de l'exécution à l'aide de rappels. Dans l'exemple suivant, la méthode getItemCount obtient le nombre d'éléments, la méthode getItemImage extrait une image personnalisée pour chaque élément et la méthode getItemLabel extrait une étiquette personnalisée pour chaque élément.

      ‹gallery id="galleryMyPictures" label="Mes images" size="large" columns="3" 
          getImage="GetImage" onAction="OnAction" showOptionLabel="false" getItemCount="GetItemCount" 
          getItemImage="GetItemImage" getItemLabel="GetItemLabel"/›

      Ajout de contrôles boutons avec des rappels d'actions

      Vous pouvez utiliser l'exemple de code suivant pour ajouter un contrôle bouton, puis spécifier une macro pour le rappel OnAction.

      ‹button id="Button1" image="Icon.bmp" size="large" label="Appuyez !" 
          onAction="ThisWorkbook.MyMacro" /› 

      Regroupement de contrôles individuels

      Vous pouvez utiliser la structure de zone pour lier ou regrouper deux contrôles ou plus.

      ‹box id="box1" boxStyle="horizontal"›
      ‹checkBox id="check1" label="Enabled" onAction="IsEnabled_OnAction" /›
      ‹checkBox id="check2" label="Visible" onAction="IsVisible_OnAction" /›
      ‹/box›

      Utilisation de compléments COM pour modifier l'interface utilisateur ruban

      Vous pouvez utiliser des compléments COM dans C pour modifier l'interface utilisateur ruban, comme illustré par la figure 6.

      Figure 6

      Figure 6. Interface utilisateur ruban affichant un onglet ajouté à l'aide d'un complétement COM

      L'exemple utilise un complément COM géré pour ajouter une interface utilisateur ruban dans Word 2007. Dans cet exemple, nous ajoutons un onglet, un groupe et un bouton personnalisés. Lorsque vous cliquez sur le bouton, un nom de société est inséré à l'endroit où se trouve le curseur.

      Pour créer un fichier de personnalisation XML

      1. Dans un éditeur de texte, ajoutez le balisage XML suivant :

         ‹customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui"› 
             ‹ribbon› 
                ‹tabs› 
                   ‹tab id="CustomTab" label="My Tab"› 
                   ‹group id="SampleGroup" label="Sample Group"› 
                      ‹button id="Button" label="Insert Company Name" size="large"  
                         onAction="InsertCompanyName" /› 
                   ‹/group› 
                   ‹/tab› 
                ‹/tabs› 
             ‹/ribbon› 
          ‹/customUI› 
      2. Enregistrez le fichier sous customUI.xml et fermez-le.

      Pour créer le projet Microsoft Visual C modifiant l'interface utilisateur ruban

      1. Démarrez Visual Studio .NET 2005.

      2. Dans le menu Fichier, cliquez sur Nouveau projet.

      3. Dans la boîte de dialogue Nouveau projet, sous Types de projets, développez Autres projets, cliquez sur Projets d'extensibilité, puis double-cliquez sur Complément partagé.

      4. Tapez un nom pour le projet. Dans cet exemple, tapez RibbonXSampleCS.

      5. Dans le premier écran de l'Assistant de Complément partagé, cliquez sur Suivant.

      6. À l'écran suivant, sélectionnez Créer un complément à l'aide de Visual C, puis cliquez sur Suivant.

      7. À l'écran suivant, supprimez toutes les sélections sauf Microsoft Word, puis cliquez sur Next.

      8. Tapez un nom et une description pour le complément, puis cliquez sur Suivant.

      9. Dans l'écran Choisir les options du complément, sélectionnez j'aimerais que mon complément se charge au moment du chargement de l'application hôte, cliquez sur Suivant, puis sur Terminer.

      10. À présent, ajoutez des références au projet.

      11. Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur Références, puis cliquez sur Ajouter une référence.

      12. Si le dossier Références n'apparaît pas dans le menu Projet, cliquez sur Afficher tous les fichiers.

      13. Faites défiler l'onglet .NET et sélectionnez Microsoft.Office.Interop.Word.

      14. Sur l'onglet COM, faites défiler les options pour sélectionner Bibliothèque d'objets Microsoft Office 12.0, puis fermez la boîte de dialogue.

      15. Ajoutez ensuite les références d'espace de noms suivantes au projet, si elles n'existent pas déjà. Ajoutez-les juste en-dessous de la ligne d'espace de noms :

        using System.Reflection;
        

      using Microsoft.Office.Core; using System.IO; using System.Xml; using Extensibility; using System.Runtime.InteropServices; using MSword=Microsoft.Office.Interop.Word;

      1. Ajoutez le fichier de personnalisation XML sous forme de ressource incorporée dans le projet en procédant de la façon suivante :

        • Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur RibbonXSampleCS, pointez sur Ajouter et cliquez sur Elément existant.

        • Accédez au fichier customUI.xml que vous avez créé, sélectionnez-le, puis cliquez sur Ajouter.

        • Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur customUI.xml et sélectionnez Propriétés.

        • Dans la fenêtre Propriétés, sélectionnez Action de génération, puis faites défiler la liste jusqu'à Ressource incorporée.

        Ensuite, pour obtenir l'accès à ses membres, vous devez implémenter le seul membre de l'interface IRibbonExtensibility dans la classe Connecter du projet.

      2. Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur Connect.cs et cliquez sur Afficher le code.

      3. En-dessous de la méthode Connecter, ajoutez la déclaration suivante, laquelle crée une référence à l'objet application Word :

        private MSword.Application applicationObject;
      4. Ajoutez la ligne suivante à la méthode OnConnection. Cette instruction crée une instance de l'objet Application :

        applicationObject =(MSword.Application)application;
      5. À la fin de l'instruction Connecter de classe publique, ajoutez une virgule, puis tapez IRibbonExtensibility.

        Astuce : Vous pouvez utiliser Microsoft IntelliSense pour insérer des méthodes d'interface pour vous. Par exemple, à la fin de l'instruction de classe publique Connecter, tapez IRibbonExtensibility, cliquez avec le bouton droit de la souris, pointez sur Implémenter une interface, puis cliquez sur Implémenter interface explicitement. Ceci ajoute un objet pour le seul membre d'interface IRibbonExtensibility : GetCustomUI. La méthode se présente comme suit :

        string IRibbonExtensibility.GetCustomUI(string RibbonID)
        

      { }

      1. Insérez la procédure suivante dans la méthode GetCustomUI, en écrasant le code existant :

        return GetResource("customUI.xml");
      2. Insérez la méthode suivante en dessous de la méthode GetCustommUI :

        private string GetResource(string resourceName)
        

      { Assembly asm = Assembly.GetExecutingAssembly(); foreach (string name in asm.GetManifestResourceNames()) { if (name.EndsWith(resourceName)) { System.IO.TextReader tr = new System.IO.StreamReader(asm.GetManifestResourceStream(name)); string resource = tr.ReadToEnd; tr.Close(); return resource; } } return null; }

      La méthode GetCustomUI appelle la méthode GetResource. La méthode GetResource établit une référence à cet assembly pendant l'exécution puis effectue une itération sur la ressource incorporée jusqu'à ce qu'elle ait trouvé celle appelée customUI.xml. Elle crée ensuite une instance de l'objet StreamReader qui lit le fichier incorporé contenant le balisage XML. La procédure renvoie le XML à la méthode GetCustomUI, qui le renvoie à son tour à l'interface ruban. Vous pouvez aussi créer une chaîne renfermant le balisage XML et le lire directement dans la méthode GetCustomUI.
      
      1. Après la méthode GetResource, ajoutez cette méthode. Cette méthode insère le nom de l'entreprise dans le document au début de la page.

        public void InsertCompanyName(IRibbonControl control)
        

      { // Inserts the specified text at the beginning of a range or selection. string MyText; MyText = "Microsoft Corporation";

      MSword.Document doc = applicationObject.ActiveDocument;

      //Inserts text at the beginning of the active document. object startPosition = 0; object endPosition = 0; MSword.Range r = (MSword.Range)doc.Range( ref startPosition, ref endPosition); r.InsertAfter(MyText); }

      1. Vérifiez que Word est fermé. Compilez le complément et son projet de configuration.

      2. Dans le menu Projet, cliquez sur Générer la solution. Une fois la compilation terminée, vous voyez un message sur la barre d'état système, dans le coin inférieur droit de l'écran.

      3. Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur RibbonXSampleCSSetup et cliquez sur Générer.

      4. Cliquez, à nouveau, avec le bouton droit de la souris sur RibbonXSampleCSSetup et cliquez sur Installer. Vous lancez ainsi l'écran Assistant de configuration RibbonXSampleCSSetup.

      5. Cliquez sur Suivant sur chacun des écrans suivants puis sur Fermer, au dernier écran.

      6. Démarrez Word. Vous devriez voir s'afficher Mon onglet, à droite des autres onglets.

      7. Allez au Centre de confiance pour activer les macros. Cliquez sur le bouton Microsoft Office (le bouton rond situé dans le coin supérieur gauche de l'écran).

      8. Cliquez sur Centre de confiance, cliquez sur Paramètres des macros puis sélectionnez les options Désactiver toutes les macros avec notification et Accès de confiance au modèle d'objet du projet VBA.

      Pour tester le projet

      • Cliquez avec le bouton droit de la souris sur le projet de configuration pour installer le complément.

      • À la fin de l'installation, redémarrez Word pour afficher l'interface utilisateur personnalisée.

      Si vous ne voyez pas l'interface ruban, vous devrez peut-être ajouter une entrée au registre. Pour ce faire, procédez comme suit :

      Attention : Les prochaines étapes comportent des informations sur la modification du registre. Avant de modifier le registre, veillez à en faire une copie de secours et assurez-vous que vous savez comment restaurer le registre en cas de problème. Pour savoir comment sauvegarder, restaurer et modifier le registre, consultez Description du registre de Microsoft Windows dans la Base de connaissances Microsoft.

      a. Dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris sur le projet de configuration RibbonXSampleCSSetup, allez sur Affichage puis cliquez sur Registre.
      b. Dans l'onglet Registre, allez à la clé de registre suivante du complément :

      HKCU\Software\Microsoft\Office\Word\AddIns\RibbonXSampleCS.Connect

      Remarque : Si la clé RibbonXSampleCS.Connect n'existe pas, vous pouvez la créer. Pour ce faire, cliquez avec le bouton droit de la souris sur le dossier Compléments, allez sur Nouveau puis cliquez sur Clé. Nommez la clé RibbonXSampleCS.Connect. Ajoutez un DWord LoadBehavior et donnez-lui la valeur 3.

      Ajout de compléments de type document à l'interface ruban

      Les étapes suivantes décrivent le processus de création d'une interface ruban dans Excel 2007 contenant les composants servant à appeler une macro personnalisée :

      1. Créez une feuille de calcul Excel avec macros.

      2. Créez un fichier pour personnaliser l'interface ruban en ajoutant un onglet, un groupe et un bouton.

      3. Spécifiez un rappel dans le bouton pour appeler la macro que vous avez créée dans le document.

      4. Modifiez le contenu du conteneur du document avec macros de manière à ce qu'il pointe vers le fichier qui personnalise l'interface ruban.

      5. Enregistrez le fichier avec macros puis ouvrez-le dans Excel 2007.

      Pour créer un fichier Open XML Formats avec macros

      1. Démarrez Excel.

      2. Cliquez sur l'onglet Développeur puis sur Visual Basic.

        Remarque : Si vous ne voyez pas l'onglet Développer des solutions, vous devez vous identifier en tant que développeur. Pour ce faire, dans votre application, cliquez sur le menu Bouton Microsoft Office, sur Paramètres de l'application et sur Affichage, puis sélectionnez Outils développeur. Il s'agit d'un paramètre global qui vous identifie en tant que développeur dans toutes les applications Microsoft Office qui implémentent l'interface ruban.

      3. Dans l'Editeur Visual Basic, double cliquez sur Ce classeur pour ouvrir la fenêtre de code.

      4. Tapez la procédure VBA suivante puis fermez l'Editeur Visual Basic.

        Votre macro devrait ressembler à ceci :

        Sub MyMacro(ByVal control as IRibbonControl)
        MsgBox("Hello World")
        

      End Sub

      **Remarque :** La valeur de retour dans VBA doit être un type de données Variant.
      
      1. Enregistrez le document en tant que fichier Open XML Formats avec macros et avec l'extension .xlsm.

      Pour créer le fichier XML contenant le balisage XML pour modifier l'interface

      1. Créez un dossier appelé customUI et ajoutez-le au bureau.

      2. Ouvrez un nouveau fichier dans un éditeur de texte et enregistrez-le sous customUI.xml dans le dossier que vous avez créé.

      3. Ajoutez le code suivant au fichier :

        ‹customUI xmlns="https://schemas.microsoft.com/office/2006/01/customui"› 
        

      ‹ribbon startFromScratch="true"› ‹tabs› ‹tab id="CustomTab" label="My Tab"› ‹group id="SimpleControls" label="My Group"› ‹button id="Button1" imageMso="HappyFace" size="large" label="Large Button" onAction="ThisWorkbook.MyMacro" /› ‹/group› ‹/tab› ‹/tabs› ‹/ribbon› ‹/customUI›

      Pour modifier des fichiers se trouvant dans un conteneur de fichiers avec macros

      1. Ajoutez une extension .zip au nom du fichier avec macros.

      2. Double cliquez sur le nom de fichier pour l'afficher.

      3. Ajouter le dossier customUI au conteneur Zip.

      4. Extrayez le fichier .rels sur le bureau. Un dossier nommé _rels contenant le fichier .rels apparaît sur le bureau.

      5. Ouvrez le fichier .rels dans l'éditeur de texte.

      6. Ajoutez la ligne suivante entre le dernier élément ‹Relation› et l'élément ‹/Relations› puis enregistrez et fermez le fichier :

        ‹Relationship Id="someID" Type="https://schemas.microsoft.com/office/2006/relationships
          /ui/extensibility" Target="customUI/customUI.xml" /›
      7. Déplacez le dossier _rels du bureau vers le fichier du conteneur Zip.

      8. Supprimez l'extension .zip du fichier du conteneur.

      9. Ouvrez le fichier avec macros dans Excel 2007. L'interface ruban intégrée est remplacée par l'interface personnalisée.

      10. Cliquez sur Grand bouton. Le message Hello World est affiché.

      Si vous ne voyez pas ce message, veillez à ce que les macros soient activées dans le classeur.

      Utilisation de compléments COM hérités de la barre de commande

      Lorsque vous créez des compléments COM, vous devez généralement trouver un moyen permettant aux utilisateurs d'interagir avec ces compléments. Dans les versions Office précédentes, vous ajoutiez un article de menu ou un bouton de la barre d'outils à l'application à l'aide du modèle d'objet CommandBars. Dans la version Office 2007, les applications personnalisées continuent à fonctionner dans l'interface ruban sans modification dans la plupart des cas. Toutefois, les changements que vous avez effectués avec le modèle d'objet CommandBars ou avec une autre technologie modifiant les menus ou barres d'outils (telle que WordBasic ou XLM) apparaissent sur un onglet Compléments à part. Les utilisateurs peuvent ainsi facilement trouver les commandes dont ils ont besoin pour travailler avec les compléments qu'ils avaient précédemment utilisés.

      Bouton de la barre d'outils personnalisée ajouté à l'onglet Compléments dans Excel 2007

      Figure 7

      Figure 7. Bouton de la barre d'outils personnalisée ajouté à l'onglet Compléments dans Excel 2007

      Pour effectuer des changements sur les éléments de l'interface ruban, vous pouvez utiliser les techniques et le code décrits précédemment. Concernant les compléments hérités qui modifient la structure des menus, dirigez vos clients vers l'onglet Compléments.

      Mise à jour dynamique de l'interface utilisateur ruban

      Les rappels renvoyant les propriétés d'une commande sont normalement appelés, à moins que vous ne précisiez que l'appel doit être répété. Vous pouvez faire une nouvelle requête sur votre rappel en implémentant le rappel onLoad dans l'élément customui. Le rappel est appelé une fois, après que le fichier de balisage ruban ait été chargé, puis il passe le code à un objet IRibbonUI.

      Voici un exemple de code vous permettant d'obtenir l'objet IRibbonUI, afin de mettre à jour vos contrôles lors de l'exécution.

      Balisage XML :

      ‹customUI xmlns="https://schemas.microsoft.com/office/2006/01/
      customui" onLoad="ribbonLoaded"›

      Dans C :

      Écrivez un rappel dans votre classe Connect :

      IRibbonUI myRibbon;
      
      	public void ribbonLoaded(IRibbonUI ribbon) {
      	     myRibbon = ribbon;
         }

      Cet objet expose les méthodes suivantes :

      Table 6. Méthodes de l'objet IRibbonUI

      Méthode

      Action

      Description

      Invalidate() Rappel Marque tous vos contrôles personnalisés pour la mise à jour
      InvalidateControl(chaîne controlID) Rappel Marque un contrôle particulier pour la mise à jour

      Chargement d'images

      Le rappel loadImage concerne un seul rappel pouvant charger toutes les images. Une fois ce rappel implémenté, Microsoft Office passe la Chaîne de l'attribut d'image. Ceci vous permet d'éviter d'implémenter le rappel getImage plusieurs fois. Par exemple :

      ‹customUI xmlns="https://schemas.microsoft.com/office/2006/01/
      customui" loadImage="getImages"›
         ‹button id="myButton" image="mypic.jpg" /›

      Microsoft Office appelle la fonction getImages avec le paramètre mypic.jpg et s'attend à recevoir un objet IPictureDisp en retour.

      Conclusion

      La nouvelle interface utilisateur de la version 2007 de Microsoft Office propose aux utilisateurs une manière flexible d'utiliser les applications Office. La personnalisation de l'interface utilisateur des versions Office précédentes impliquait la création de compléments COM ou de fichiers DLL pour chaque application partageant le complément. Le ruban, par contre, utilise un balisage XML texte et déclaratif qui simplifie la création et la personnalisation de l'interface ruban. Avec quelques lignes de XML, vous pouvez créer l'interface précisément requise par l'utilisateur. Vu que le balisage XML est contenu dans un seul fichier, il est beaucoup plus facile de modifier l'interface selon les besoins. Vous pouvez aussi améliorer la productivité de l'utilisateur en plaçant les contrôles là où ce dernier s'attend à les trouver. L'interface ruban rend également les applications plus cohérentes entre elles, ce qui réduit le temps passé par les utilisateurs à apprendre chaque application.

      Pour plus d'informations sur les commandes ruban et les listes d'attributs, voir Personnalisation de l'interface utilisateur d'Office 2007 Ruban pour les développeurs (partie 2 sur 2) Site en anglais.

      Ressources supplémentaires

      Pour plus d'informations, consultez les ressources suivantes :

      En outre, vous trouverez davantage d'informations sur les sujets connexes suivants :