Partager via


Procédure pas à pas : mise à niveau des contrôles sur un ruban au moment de l'exécution

Mise à jour : novembre 2007

S'applique à

Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions de Microsoft Office spécifiés.

Type de projet

  • Projets au niveau du document

  • Projets au niveau de l'application

Version de Microsoft Office

  • Excel 2007

  • Word 2007

  • Outlook 2007

  • PowerPoint 2007

Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet.

Cette procédure pas à pas montre comment utiliser le modèle objet de ruban pour mettre à jour les contrôles sur un ruban après le chargement du ruban dans l'application Office.

L'exemple extrait des données de l'exemple de base de données AdventureWorks pour remplir une zone de liste déroulante et un menu dans Microsoft Office Outlook.

Cette procédure pas à pas décrit les tâches suivantes :

  • Création d'un projet de complément Outlook.

  • Conception d'un groupe de ruban personnalisé.

  • Ajout du groupe personnalisé à un onglet intégré.

  • Mise à jour des contrôles sur le ruban au moment de l'exécution.

Remarque :

Il se peut que votre ordinateur affiche des noms ou des emplacements différents pour certains éléments de l'interface utilisateur de Visual Studio mentionnés dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.

Composants requis

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :

  • Visual Studio Tools pour Office (un composant facultatif de Visual Studio 2008 Professional et Visual Studio Team System).

  • Microsoft Office Outlook 2007

  • Accédez à l'exemple de base de données AdventureWorks pour SQL Server Express. Pour plus d'informations sur l'installation de la base de données AdventureWorks, consultez Procédure pas à pas : installation de la base de données AdventureWorks.

Visual Studio Tools pour Office est installé par défaut avec les versions répertoriées de Visual Studio. Pour vérifier s'il est installé, consultez Installation de Visual Studio Tools pour Office.

Création d'un projet de complément Outlook

Commencez par créer un projet de complément Outlook.

Pour créer un projet de complément Outlook

  1. Dans Visual Studio, créez un projet de complément Outlook 2007 et nommez-le MyOutlookAddIn.

  2. Dans la boîte de dialogue Nouveau projet, sélectionnez Créer le répertoire pour la solution.

  3. Enregistrez le projet dans le répertoire de projet par défaut.

    Pour plus d'informations, consultez Comment : créer des projets Visual Studio Tools pour Office.

Conception d'un groupe de ruban personnalisé

Le ruban n'apparaît pas dans la zone d'interface principale d'Outlook. Pour cet exemple, il apparaîtra donc lorsqu'un utilisateur compose un nouveau message électronique. Pour créer un groupe personnalisé pour le ruban, commencez par ajouter un élément Ruban à votre projet, puis concevez le groupe dans le Concepteur de ruban. Ce groupe personnalisé vous permet d'extraire d'une base de données les noms et les historiques de commande des clients pour créer des messages électronique de suivi.

Pour concevoir un groupe personnalisé

  1. Dans le menu Projet, cliquez sur Ajouter un nouvel élément.

  2. Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez Ruban (Concepteur visuel).

  3. Remplacez le nom du nouveau ruban par CustomerRibbon, puis cliquez sur Ajouter.

    Le fichier CustomerRibbon.cs ou CustomerRibbon.vb s'ouvre dans le Concepteur de ruban et affiche un onglet et un groupe par défaut.

  4. Cliquez sur le Concepteur de ruban pour le sélectionner.

  5. Dans le menu Affichage, cliquez sur Fenêtre Propriétés.

  6. Dans la fenêtre Propriétés, cliquez sur la flèche de déroulement en regard de la propriété RibbonType, puis sur Microsoft.Outlook.Mail.Compose.

    Le ruban apparaîtra lorsque l'utilisateur composera un nouveau message électronique dans Outlook.

  7. Dans le Concepteur de ruban, cliquez sur Group1 pour le sélectionner.

  8. Dans la fenêtre Propriétés, affectez la valeur Customer Purchases à Étiquette.

  9. Dans l'onglet Contrôles de ruban Office de la Boîte à outils, faites glisser une zone de liste déroulante sur le groupe Customer Purchases.

  10. Cliquez sur ComboBox1 pour le sélectionner.

  11. Dans la fenêtre Propriétés, affectez la valeur Customers à Étiquette.

  12. Dans l'onglet Contrôles de ruban Office de la Boîte à outils, faites glisser un menu sur le groupe Customer Purchases.

  13. Dans la fenêtre Propriétés, affectez la valeur Product Purchased à Étiquette.

  14. Affectez la valeur true à Dynamique.

    Vous pouvez maintenant ajouter des contrôles sur le menu et en supprimer au moment de l'exécution, après le chargement du ruban dans l'application Office.

Ajout du groupe personnalisé à un onglet intégré

Un onglet intégré est un onglet qui se trouve déjà sur le ruban d'un inspecteur Outlook. Au cours de cette procédure, vous allez ajouter le groupe personnalisé à un onglet intégré, puis spécifier la position du groupe sur l'onglet.

Pour ajouter le groupe personnalisé à un onglet intégré

  1. Cliquez sur l'onglet TabAddins (Built-In) pour le sélectionner.

  2. Dans la fenêtre Propriétés, développez la propriété ControlId, puis affectez la valeur TabNewMailMessage à OfficeId.

    Le groupe Customer Purchases est alors ajouté à l'onglet Messages du ruban qui apparaît dans un nouveau message électronique.

  3. Cliquez sur le groupe Customer Purchases pour le sélectionner.

  4. Dans la fenêtre Propriétés, développez la propriété Position, cliquez sur la flèche de déroulement en regard de la propriété PositionType, puis cliquez sur BeforeOfficeId.

  5. Affectez la valeur GroupClipBoard à la propriété OfficeId.

    Le groupe Customer Purchases est alors placé avant le groupe Presse-papiers de l'onglet Messages.

Mise à jour de contrôles dans le groupe personnalisé au moment de l'exécution

Utilisez le modèle objet de ruban pour effectuer les tâches suivantes :

  • Ajouter des noms de client à la zone de liste déroulante Customers.

  • Ajouter des contrôles de menu et de case à cocher au menu Products Purchased qui représente les commandes et les produits vendus.

  • Remplir les champs Microsoft.Office.Interop.Outlook.MailItem.To, Microsoft.Office.Interop.Outlook.MailItem.Subject et Microsoft.Office.Interop.Outlook.MailItem.Body de nouveaux messages électronique avec des données de la zone de liste déroulante Customers et du menu Products Purchased.

Pour mettre à jour des contrôles dans le groupe personnalisé en utilisant le modèle objet de ruban

  1. Dans le menu Projet, cliquez sur Ajouter une référence.

  2. Dans la boîte de dialogue Ajouter une référence, cliquez sur l'onglet .NET, sélectionnez l'assembly System.Data.Linq, puis cliquez sur OK.

    Cet assembly contient des classes pour l'utilisation de requêtes LINQ (Language-Integrated Queries). Vous utiliserez LINQ pour remplir des contrôles du groupe personnalisé avec des données de la base de données AdventureWorks. Pour plus d'informations sur LINQ, consultez LINQ (Language-Integrated Query).

  3. Dans l'Explorateur de solutions, cliquez sur CustomerRibbon.cs ou CustomerRibbon.vb pour le sélectionner.

  4. Dans le menu Affichage, cliquez sur Code.

    Le fichier de code du ruban s'ouvre dans l'éditeur de code.

  5. Ajoutez les instructions suivantes au début du fichier de code du ruban. Ces instructions facilitent l'accès aux espaces de noms LINQ et à l'espace de noms de l'assembly PIA (Primary Interop Assembly) d'Outlook.

    Imports Microsoft.Office.Tools.Ribbon
    Imports System.Data.Linq
    Imports System.Linq
    Imports System.Data.Linq.Mapping
    Imports System.Linq.Expressions
    Imports Outlook = Microsoft.Office.Interop.Outlook
    
    using System.Data.Linq;
    using System.Linq;
    using System.Data.Linq.Mapping;
    using System.Linq.Expressions;
    using Outlook = Microsoft.Office.Interop.Outlook;
    using System.IO;
    
  6. Ajoutez les classes suivantes au fichier de code du ruban. Vous utiliserez ces classes pour stocker des informations issues des tables Customer, Contact, Sales Order Header, Sales Order Detail et Product de la base de données AdventureWorks.

    ' Customer Table.
    <Table(Name:="Sales.Customer")> _
    Public Class Customer
        <Column(IsPrimaryKey:=True)> _
            Public CustomerID As Integer
    End Class
    
    ' Contact Table.
    <Table(Name:="Person.Contact")> _
    Public Class Contact
        <Column(IsPrimaryKey:=True)> _
           Public ContactID As Integer
        <Column()> _
        Public LastName As String
    
    End Class
    ' Sales Order Header Table.
    <Table(Name:="Sales.SalesOrderHeader")> _
    Public Class SalesOrderHeader
        <Column(IsPrimaryKey:=True)> _
           Public SalesOrderID As Integer
        <Column()> _
       Public SalesOrderNumber As String
        <Column()> _
        Public CustomerID As Integer
    End Class
    
    ' Sales Order Detail Table.
    <Table(Name:="Sales.SalesOrderDetail")> _
    Public Class SalesOrderDetail
        <Column(IsPrimaryKey:=True)> _
           Public SalesOrderDetailID As Integer
        <Column()> _
       Public SalesOrderID As Integer
        <Column()> _
        Public ProductID As Integer
    End Class
    
    ' Product Table.
    <Table(Name:="Production.Product")> _
    Public Class Product
        <Column(IsPrimaryKey:=True)> _
           Public ProductID As Integer
        <Column()> _
        Public Name As String
    End Class
    ' Data Context Class.
    Partial Public Class AdventureWorks
        Inherits DataContext
        Public Customer As Table(Of Customer)
        Public Contact As Table(Of Contact)
        Public SalesOrderHeader As Table(Of SalesOrderHeader)
        Public SalesOrderDetail As Table(Of SalesOrderDetail)
        Public Product As Table(Of Product)
        Public Sub New(ByVal connection As String)
            MyBase.New(connection)
        End Sub
    End Class
    
    // Customer Table.
    [Table(Name = "Sales.Customer")]
    public class Customer
    {
        [Column(IsPrimaryKey = true)]
        public int CustomerID;
    }
    
    // Contact Table.
    [Table(Name = "Person.Contact")]
    public class Contact
    {
        [Column(IsPrimaryKey = true)]
        public int ContactID;
        [Column]
        public string LastName;
    
    }
    // Sales Order Header Table.
    [Table(Name = "Sales.SalesOrderHeader")]
    public class SalesOrderHeader
    {
        [Column(IsPrimaryKey = true)]
        public int SalesOrderID;
    
        [Column]
        public string SalesOrderNumber;
    
        [Column]
        public int CustomerID;
    
    }
    // Sales Order Detail Table.
    [Table(Name = "Sales.SalesOrderDetail")]
    public class SalesOrderDetail
    {
        [Column(IsPrimaryKey = true)]
        public int SalesOrderDetailID;
    
        [Column]
        public int SalesOrderID;
    
        [Column]
        public int ProductID;
    
    }
    // Product Table.
    [Table(Name = "Production.Product")]
    public class Product
    {
        [Column(IsPrimaryKey = true)]
        public int ProductID;
    
        [Column]
        public string Name;
    
    }
    // Data Context Table.
    public partial class AdventureWorks : DataContext
    {
        public Table<Customer> Customer;
        public Table<Contact> Contact;
        public Table<SalesOrderHeader> SalesOrderHeader;
        public Table<SalesOrderDetail> SalesOrderDetail;
        public Table<Product> Product;
        public AdventureWorks(string connection) : base(connection) { }
    }
    
  7. Remplacez la méthode de gestionnaire d'événements CustomerRibbon_Load par le code suivant. Ce code utilise une requête LINQ pour effectuer les tâches suivantes :

    • Remplir la zone de liste déroulante Customers avec l'ID et le nom de 20 clients de la base de données AdventureWorks.

    • Appelle la méthode d'assistance PopulateSalesOrderInfo. Cette méthode met à jour le menu ProductsPurchased avec les numéros de commande relatifs au client sélectionné.

     Private Sub CustomerRibbon_Load(ByVal sender As System.Object, _
    ByVal e As Microsoft.Office.Tools.Ribbon.RibbonUIEventArgs) _
        Handles MyBase.Load
    
         Dim programFilesDir As String = Environment.GetFolderPath _
         (Environment.SpecialFolder.ProgramFiles)
         Dim db As New AdventureWorks(programFilesDir + _
             "\Microsoft SQL Server\" + "MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf")
    
         Dim customerQuery = From customers In db.Customer.Take(20), contact In db.Contact _
                             Where customers.CustomerID = contact.ContactID _
                 Select CustomerID = customers.CustomerID, LastName = _
                     contact.LastName
    
         ' Execute the query.
         For Each item In customerQuery
             Me.ComboBox1.Items.Add(New RibbonDropDownItem())
             Me.ComboBox1.Items.Last().Label = item.CustomerID.ToString() _
                 + "|" + item.LastName
         Next item
    
         Me.ComboBox1.Text = Me.ComboBox1.Items.First().Label
         PopulateSalesOrderInfo()
     End Sub
    
    
    private void CustomerRibbon_Load(object sender, RibbonUIEventArgs e)
    {
        string programFilesDir = Environment.GetFolderPath
            (Environment.SpecialFolder.ProgramFiles);
        AdventureWorks db = new AdventureWorks
            (programFilesDir + "\\Microsoft SQL Server\\" + 
        "MSSQL.1\\MSSQL\\Data\\AdventureWorks_Data.mdf");
        var customerQuery = from customers in db.Customer.Take(20)
                            join contacts in db.Contact on 
                                customers.CustomerID 
                            equals contacts.ContactID
                            select new { customers.CustomerID, 
                                contacts.LastName };
    
    
        // Execute the query.
        foreach (var item in customerQuery)
        {
            this.comboBox1.Items.Add(new RibbonDropDownItem());
            this.comboBox1.Items.Last().Label = 
                item.CustomerID.ToString() + "|" + item.LastName;
        }
        this.comboBox1.Text = this.comboBox1.Items.First().Label;
        PopulateSalesOrderInfo();
    }
    
  8. Ajoutez le code suivant à la classe CustomerRibbon. Ce code utilise des requêtes LINQ pour effectuer les tâches suivantes :

    • Ajoute un sous-menu au menu ProductsPurchased pour chaque commande relative au client sélectionné.

    • Ajoute des cases à cocher à chaque sous-menu pour les produits relatifs à la commande.

    • Ajoute des gestionnaires d'événements à chaque case à cocher.

     Private Sub PopulateSalesOrderInfo()
    
         Dim tempArray As [String]() = comboBox1.Text.Split(New [Char]() {"|"c})
         Menu1.Items.Clear()
         Dim programFilesDir As String = Environment.GetFolderPath _
             (Environment.SpecialFolder.ProgramFiles)
         Dim db As New AdventureWorks(programFilesDir + _
             "\Microsoft SQL Server\" + "MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf")
    
    
         Dim orderQuery = From orders In db.SalesOrderHeader _
                          Where orders.CustomerID.ToString() = tempArray(0) _
                          Select SalesOrderID = _
                              orders.SalesOrderID, SalesOrderNumber = _
                                  orders.SalesOrderNumber
    
         For Each orderItem In orderQuery
             Dim Menu2 As New RibbonMenu()
             Menu2.Dynamic = True
             Menu1.Items.Add(Menu2)
             CType(Menu1.Items.Last(), RibbonMenu).Label = _
                 orderItem.SalesOrderNumber.ToString()
             CType(Menu1.Items.Last(), RibbonMenu).Tag = _
                 orderItem.SalesOrderID
    
             Dim productQuery = From orderDetail In db.SalesOrderDetail, _
                                    product In db.Product _
                                Where orderDetail.ProductID = _
                                    product.ProductID _
                                And orderDetail.SalesOrderID = _
                                orderItem.SalesOrderID _
             Select productName = product.Name
    
             For Each productItem In productQuery
                 CType(Menu1.Items.Last(), RibbonMenu).Items.Add _
                     (New RibbonCheckBox())
                 CType(CType(Menu1.Items.Last(),  _
    RibbonMenu).Items.Last(), RibbonCheckBox).Label = productItem
                 AddHandler (CType(CType(Menu1.Items.Last(),  _
    RibbonMenu).Items.Last(), RibbonCheckBox).Click), AddressOf CheckBox_Click
    
             Next productItem
         Next orderItem
     End Sub
    
    
    
    
    private void PopulateSalesOrderInfo()
    {
        String[] tempArray = comboBox1.Text.Split(new Char[] { '|' });
        menu1.Items.Clear();
        string programFilesDir = Environment.GetFolderPath
            (Environment.SpecialFolder.ProgramFiles);
        AdventureWorks db = new AdventureWorks
            (programFilesDir + "\\Microsoft SQL Server\\" +
                "MSSQL.1\\MSSQL\\Data\\AdventureWorks_Data.mdf");
    
        var orderQuery = from orders in db.SalesOrderHeader
                         where orders.CustomerID.ToString() == tempArray[0]
                         select new { orders.SalesOrderID, 
                             orders.SalesOrderNumber };
    
        foreach (var orderItem in orderQuery)
        {
            RibbonMenu menu2 = new RibbonMenu();
            menu2.Dynamic = true;
            menu1.Items.Add(menu2);
            ((RibbonMenu)menu1.Items.Last()).Label = 
                orderItem.SalesOrderNumber.ToString();
            ((RibbonMenu)menu1.Items.Last()).Tag = 
                orderItem.SalesOrderID;
    
            var productQuery = from orderDetail in db.SalesOrderDetail
                               join product in db.Product on 
                                   orderDetail.ProductID 
                               equals product.ProductID
                               where orderDetail.SalesOrderID == 
                                   orderItem.SalesOrderID
                               select new { product.Name };
    
            foreach (var productItem in productQuery)
            {
                ((RibbonMenu)menu1.Items.Last()).Items.Add
                    (new RibbonCheckBox());
                ((RibbonCheckBox)((RibbonMenu)menu1.Items.Last()).
                    Items.Last()).Label = productItem.Name;
                ((RibbonCheckBox)((RibbonMenu)menu1.Items.Last()).
                    Items.Last()).Click 
                    += new EventHandler<RibbonControlEventArgs>(checkBox_Click);
            }
    
        }
    }
    
  9. Dans l'Explorateur de solutions, double-cliquez sur le fichier de code du ruban.

    Le Concepteur de ruban s'ouvre.

  10. Dans le Concepteur de ruban, double-cliquez sur la zone de liste déroulante Customers.

    Le fichier de code du ruban s'ouvre dans l'éditeur de code et le gestionnaire d'événements ComboBox1_TextChanged s'affiche.

  11. Remplacez le gestionnaire d'événements ComboBox1_TextChanged par le code suivant. Ce code exécute les tâches suivantes :

    • Appelle la méthode d'assistance PopulateSalesOrderInfo. Cette méthode met à jour le menu Products Purchased avec les commandes relatives au client sélectionné.

    • Appelle la méthode d'assistance PopulateMailItem. Cette méthode renseigne les champs Microsoft.Office.Interop.Outlook.MailItem.To, Microsoft.Office.Interop.Outlook.MailItem.Subject et Microsoft.Office.Interop.Outlook.MailItem.Body de nouveaux messages électroniques.

    Private Sub ComboBox1_TextChanged(ByVal sender As System.Object, _
        ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _
            Handles ComboBox1.TextChanged
        PopulateSalesOrderInfo()
        PopulateMailItem(ComboBox1.Text)
    End Sub
    
    private void comboBox1_TextChanged(object sender, 
        RibbonControlEventArgs e)
    {
        PopulateSalesOrderInfo();
        PopulateMailItem(comboBox1.Text);
    }
    
  12. Ajoutez le code suivant à la classe CustomerRibbon. Ce code ajoute le nom des produits sélectionnés au champ Microsoft.Office.Interop.Outlook.MailItem.Body de nouveaux messages électroniques.

    Private Sub CheckBox_Click(ByVal sender As System.Object, _
        ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs)
        Dim application As Outlook.Application = Globals.ThisAddIn.Application
        Dim inspector As Outlook.Inspector = application.ActiveInspector()
        Dim myMailItem As Outlook.MailItem = CType(inspector.CurrentItem,  _
            Outlook.MailItem)
        Dim myCheckBox As RibbonCheckBox = CType(sender, RibbonCheckBox)
        myMailItem.Subject = "Following up on your order"
        myMailItem.Body = myMailItem.Body + ControlChars.Lf + "* " _
            + myCheckBox.Label
    End Sub
    
    private void checkBox_Click(object sender, RibbonControlEventArgs e)
    {
        Outlook.Application application = Globals.ThisAddIn.Application;
        Outlook.Inspector inspector = application.ActiveInspector();
        Outlook.MailItem myMailItem = (Outlook.MailItem)inspector.CurrentItem;
        RibbonCheckBox myCheckBox = (RibbonCheckBox)sender;
        myMailItem.Subject = "Following up on your order";
        myMailItem.Body = myMailItem.Body + "\n" + "* " + myCheckBox.Label;
    }
    
  13. Ajoutez le code suivant à la classe CustomerRibbon. Ce code exécute les tâches suivantes :

    • Renseigne la ligne Microsoft.Office.Interop.Outlook.MailItem.To de nouveaux messages électroniques avec l'adresse électronique du client sélectionné.

    • Ajoute du texte aux champs Microsoft.Office.Interop.Outlook.MailItem.Subject et Microsoft.Office.Interop.Outlook.MailItem.Body de nouveaux messages électroniques.

    Private Sub PopulateMailItem(ByVal addressToLine As String)
        Dim application As Outlook.Application = Globals.ThisAddIn.Application
        Dim inspector As Outlook.Inspector = application.ActiveInspector()
        Dim myMailItem As Outlook.MailItem = _
            CType(inspector.CurrentItem, Outlook.MailItem)
    
        myMailItem.To = ""
        Dim tempArray As [String]() = addressToLine.Split(New [Char]() {"|"c})
        myMailItem.To = tempArray(1) + "@example.com"
        myMailItem.Subject = "Following up on your order"
        myMailItem.Body = "Hello " + tempArray(1) + ","
        myMailItem.Body = myMailItem.Body + ControlChars.Lf + _
            "We would like to get your " + _
        "feedback on the following products that you recently ordered: "
    End Sub
    
    private void PopulateMailItem(string addressToLine)
    {
        Outlook.Application application = Globals.ThisAddIn.Application;
        Outlook.Inspector inspector = application.ActiveInspector();
        Outlook.MailItem myMailItem = (Outlook.MailItem)inspector.CurrentItem;
    
        myMailItem.To = "";
        String[] tempArray = addressToLine.Split(new Char[] { '|' });
        myMailItem.To = tempArray[1] + "@example.com";
        myMailItem.Subject = "Following up on your order";
        myMailItem.Body = "Hello " + tempArray[1] + ",";
        myMailItem.Body = myMailItem.Body + "\n" + 
            "We would like to get your " + 
                "feedback on the following products that you recently ordered: ";
    }
    

Test des contrôles dans le groupe personnalisé

Lorsque vous ouvrez un nouveau formulaire de courrier dans Outlook, un groupe personnalisé nommé Customer Purchases apparaît sur l'onglet Messages du ruban.

Pour créer un message électronique de suivi client, sélectionnez un client, puis des produits achetés par ce client. Les contrôles du groupe Customer Purchases sont mis à jour au moment de l'exécution avec les données de la base de données AdventureWorks.

Pour tester les contrôles dans le groupe personnalisé

  1. Appuyez sur F5 pour exécuter votre projet.

    Outlook démarre.

  2. Dans le menu Fichier d'Outlook, pointez sur Nouveau, puis cliquez sur Message.

    Les actions suivantes ont lieu :

    • Une nouvelle fenêtre de l'inspecteur de message électronique apparaît.

    • Sur l'onglet Messages du ruban, le groupe Customer Purchases apparaît avant le groupe Presse-papiers.

    • La zone de liste déroulante Customer Purchases du groupe est mise à jour avec les noms de clients de la base de données AdventureWorks.

  3. Sur l'onglet Messages du ruban, dans le groupe Customer Purchases, sélectionnez un client de la zone de liste déroulante Customers.

    Les actions suivantes ont lieu :

    • Le menu Products Purchased est mis à jour avec un menu qui représente chaque commande de ce client.

    • Chaque menu de commande client est mis à jour avec des cases à cocher qui représentent les produits achetés par le client.

    • L'adresse électronique du client sélectionné est ajoutée à la ligne À du message électronique et l'objet et le corps du message sont remplis avec du texte.

  4. Cliquez sur le menu Products Purchases, pointez sur une commande, puis cliquez sur un produit de la commande.

    Le nom du produit est ajouté au corps du message électronique.

Étapes suivantes

Pour plus d'informations sur la personnalisation de l'interface utilisateur d'Office, consultez les rubriques suivantes :

Voir aussi

Tâches

Comment : démarrer avec la personnalisation du ruban

Procédure pas à pas : création d'un onglet personnalisé à l'aide du Concepteur de ruban

Comment : modifier l'ordre des onglets sur le ruban

Comment : personnaliser un onglet intégré

Comment : personnaliser le menu Microsoft Office

Comment : exporter un ruban à partir du Concepteur de ruban vers l'élément XML Ribbon

Comment : afficher les erreurs de l'interface utilisateur du complément

Concepts

Accès au ruban au moment de l'exécution

Vue d'ensemble du ruban

Concepteur de ruban

Vue d'ensemble du modèle objet de ruban

Personnalisation d'un ruban pour Outlook