Procédure pas à pas : importation d'une zone de formulaire conçue dans Outlook

Cette procédure pas à pas montre comment concevoir une zone de formulaire dans Microsoft Office Outlook, puis importer la zone de formulaire dans un projet de complément Outlook en utilisant l'Assistant Nouvelle zone de formulaire. Lorsque vous concevez la zone de formulaire dans Outlook, vous pouvez ajouter des contrôles Outlook natifs à la zone de formulaire, qui sont liés aux données Outlook. Après avoir importé la zone de formulaire, vous pouvez gérer les événements de chaque contrôle.

S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau application pour Outlook 2007 et Outlook 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.

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

  • Conception d'une zone de formulaire à l'aide du Concepteur de zones de formulaire d'Outlook.

  • Importation d'une zone de formulaire dans un projet de complément Outlook.

  • Gestion des événements de contrôles sur la zone de formulaire.

Notes

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de Visual Studio 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 :

-

Une édition de Visual Studio 2010 qui inclut les outils de développement Microsoft Office. Pour plus d'informations, consultez [Configuration d'un ordinateur pour développer des solutions Office](bb398242\(v=vs.100\).md).
  • Microsoft Office Outlook 2007 ou Outlook 2010.

Notes

Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes. Ces éléments dépendent de l'édition de Visual Studio dont vous disposez et des paramètres que vous utilisez. Pour plus d'informations, consultez Utilisation des paramètres.

lien vers la vidéo Pour une démonstration vidéo connexe, consultez Comment faire pour créer des zones de formulaire Outlook à l'aide de Visual Studio 2008 ? (page éventuellement en anglais).

Conception d'une zone de formulaire à l'aide du Concepteur de zones de formulaire d'Outlook

Dans cette étape vous concevrez une zone de formulaire dans Outlook. Vous enregistrerez ensuite la zone de formulaire à un emplacement facile à trouver afin que vous puissiez l'importer dans Visual Studio.

Cet exemple de zone du formulaire remplace complètement le formulaire de tâche habituel. Il permet de suivre la progression de toutes les tâches qui doivent être réalisées avant que la tâche principale puisse être exécutée (tâches requises). La zone de formulaire affiche une liste des tâches requises et l'état d'achèvement de l'opération pour chaque tâche de la liste. Les utilisateurs peuvent ajouter des tâches à la liste et les supprimer. Ils peuvent également actualiser l'état d'achèvement de chaque tâche.

Pou concevoir une zone de formulaire à l'aide du Concepteur de zones de formulaire d'Outlook

  1. Démarrez Microsoft Office Outlook.

  2. Ouvrez le Concepteur de formulaires en exécutant l'une des tâches suivantes :

    • Dans Outlook 2010, sous l'onglet Développeur, cliquez sur Créer un formulaire. Pour plus d'informations, consultez Comment : afficher l'onglet Développeur sur le ruban.

    • Dans Outlook 2007, dans le menu Outils, pointez sur Formulaires, puis cliquez sur Créer un formulaire.

  3. Dans la zone Créer un formulaire, cliquez sur Tâche, puis sur Ouvrir.

  4. Créez une zone de formulaire en exécutant l'une des tâches suivantes :

    • Dans Outlook 2010, dans le groupe Création de l'onglet Développeur, cliquez sur Nouvelle zone de formulaire.

    • Dans Outlook 2007, dans le groupe Création de l'onglet Développeur, cliquez sur Zone de formulaire, puis sur Nouvelle zone de formulaire.

    Une nouvelle zone de formulaire s'affiche. Si le Sélecteur de champs n'apparaît pas, cliquez sur Sélecteur de champs dans le groupe Outils.

  5. Faites glisser les champs Objet et % réalisée du Sélecteur de champs vers la zone de formulaire.

  6. Dans le groupe Outils, cliquez sur Boîte à outils Contrôles pour ouvrir la Boîte à outils.

  7. Faites glisser une étiquette de la Boîte à outils vers la zone de formulaire. Positionnez l'étiquette sous les champs Objet et % réalisée.

  8. Cliquez avec le bouton droit sur l'étiquette, puis cliquez sur Propriétés avancées.

  9. Dans la fenêtre Propriétés, affectez à la propriété Caption la valeur Cette tâche dépend des tâches suivantes, affectez à la propriété Width la valeur 200, puis cliquez sur Appliquer.

  10. Faites glisser un contrôle ListBox de la Boîte à outils vers la zone de formulaire. Positionnez la zone de liste sous l'étiquette Cette tâche dépend des tâches suivantes.

  11. Sélectionnez la zone de liste que vous venez d'ajouter.

  12. Dans la fenêtre Propriétés, affectez à Width la valeur 300, puis cliquez sur Appliquer.

  13. Faites glisser une étiquette de la Boîte à outils vers la zone de formulaire. Positionnez l'étiquette sous la zone de liste.

  14. Sélectionnez l'étiquette qui venez d'ajouter.

  15. Dans la fenêtre Propriétés, affectez à la propriété Caption la valeur Sélectionnez une tâche à ajouter à la liste de tâches dépendantes, affectez à la propriété Width la valeur 200, puis cliquez sur Appliquer.

  16. Faites glisser un contrôle ComboBox de la Boîte à outils vers la zone de formulaire. Positionnez la zone de liste déroulante sous l'étiquette Sélectionnez une tâche à ajouter à la liste de tâches dépendantes.

  17. Sélectionnez la zone de liste déroulante que vous venez d'ajouter.

  18. Dans la fenêtre Propriétés, affectez à la propriété Width la valeur 300, puis cliquez sur Appliquer.

  19. Faites glisser un contrôle CommandButton de la Boîte à outils jusqu'à la zone de formulaire. Positionnez le bouton de commande en regard de la zone de liste déroulante.

  20. Sélectionnez le bouton de commande que vous venez d'ajouter.

  21. Dans la fenêtre Propriétés, affectez à Name la valeur AddDependentTask, affectez à Caption la valeur Ajouter une tâche dépendante, affectez à Width la valeur 100, puis cliquez sur Appliquer.

  22. Dans le Sélecteur de champs, cliquez sur Nouveau.

  23. Dans la boîte de dialogue Nouveau champ, tapez hiddenField dans le champ Nom, puis cliquez sur OK.

  24. Faites glisser le champ hiddenField du Sélecteur de champs vers la zone de formulaire.

  25. Dans la fenêtre Propriétés, affectez à Visible la valeur 0 - False, puis cliquez sur Appliquer.

  26. Enregistrez la zone de formulaire en exécutant l'une des tâches suivantes :

    • Dans Outlook 2010, dans le groupe Création de l'onglet Développeur, cliquez sur le bouton Enregistrer, puis sur Enregistrer la zone du formulaire sous.

    • Dans Outlook 2007, dans le groupe Création de l'onglet Développeur, cliquez sur Zone de formulaire, puis sur Enregistrer la zone du formulaire sous.

    Attribuez le nom TaskFormRegion à la zone de formulaire et enregistrez-la dans un répertoire local de votre ordinateur.

    Outlook enregistre la zone de formulaire en tant que fichier de stockage de formulaire Outlook (.ofs). La zone de formulaire est enregistrée sous le nom TaskFormRegion.ofs.

  27. Quittez Outlook.

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

Dans cette étape, vous allez créer un projet de complément Outlook. À une étape ultérieure de cette procédure, vous importerez la zone de formulaire dans le projet.

Pour créer un projet de complément Outlook

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

  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 Office dans Visual Studio.

Importation de la zone de formulaire

Vous pouvez importer la zone de formulaire que vous avez conçue dans Outlook dans le projet de complément Outlook en utilisant l'Assistant Nouvelle zone de formulaire Outlook.

Pour ajouter la zone de formulaire dans le projet de complément Outlook

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet TaskAddIn, pointez sur Ajouter, puis cliquez sur Nouvel élément.

  2. Dans le volet Modèles, sélectionnez Zone de formulaire Outlook, nommez le fichier TaskFormRegion, puis cliquez sur Ajouter.

    L'Assistant Nouvelle zone de formulaire Outlook démarre.

  3. Sur la page Sélectionnez la méthode de création de la zone de formulaire, cliquez sur Importer un fichier de stockage de formulaire Outlook (.ofs), puis cliquez sur Parcourir.

  4. Dans la boîte de dialogue Emplacement du fichier de zone du formulaire Outlook existant, accédez à l'emplacement de TaskFormRegion.ofs, sélectionnez ce dernier, cliquez sur Ouvrir, puis sur Suivant.

  5. Sur la page Sélectionnez le type de zone de formulaire que vous souhaitez créer, cliquez sur Remplacement global, puis cliquez sur Suivant.

    Une zone de formulaire de remplacement global remplace le formulaire Outlook complet. Pour plus d'informations sur les types de zones de formulaire, consultez Création de zones de formulaire Outlook.

  6. Sur la page Fournissez un texte descriptif et sélectionnez vos préférences d'affichage, cliquez sur Suivant.

  7. Sur la page Identifiez les classes de message qui afficheront cette zone de formulaire, dans le champ Quelles classes de message personnalisées afficheront cette zone de formulaire ?, tapez IPM.Task.TaskFormRegion, puis cliquez sur Terminer.

    Un fichier TaskFormRegion.cs ou TaskFormRegion.vb est ajouté à votre projet.

Gestion des événements de contrôles sur la zone de formulaire

Maintenant que la zone de formulaire est dans le projet, vous pouvez ajouter le code qui gère l'événement Microsoft.Office.Interop.Outlook.OlkCommandButton.Click du bouton que vous avez ajouté à la zone de formulaire dans Outlook.

Ajoutez également le code à l'événement FormRegionShowing qui met à jour des contrôles sur la zone de formulaire lorsque la zone de formulaire apparaît.

Pour gérer des événements de contrôles sur la zone de formulaire

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur TaskFormRegion.cs ou TaskFormRegion.vb, puis cliquez sur Afficher le code.

    TaskFormRegion.cs ou TaskFormRegion.vb s'ouvre dans l'éditeur de code.

  2. Ajoutez le code suivant à la classe TaskFormRegion. Ce code remplit la zone de liste déroulante sur la zone de formulaire avec la ligne Objet de chaque tâche à partir du dossier Tâches d'Outlook.

    Private Sub populateComboBox()
        Dim Application As New Outlook.Application()
        Dim outlookNameSpace As Outlook.NameSpace = _
        Application.GetNamespace("MAPI")
        Dim taskFolder As Outlook.MAPIFolder = _
        outlookNameSpace.GetDefaultFolder _
            (Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks)
        Dim taskItems As Outlook.Items = taskFolder.Items
        Dim task As Outlook.TaskItem
        For Each task In taskItems
            If Not (task.Subject Is Nothing) Then
                comboBox1.AddItem(task.Subject, System.Type.Missing)
            End If
        Next task
        comboBox1.Text = comboBox1.GetItem(0)
    End Sub
    
    private void populateComboBox()
    {
        Outlook.Application Application = new Outlook.Application();
        Outlook.NameSpace outlookNameSpace = Application.GetNamespace("MAPI");
        Outlook.MAPIFolder taskFolder = outlookNameSpace.GetDefaultFolder(
            Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks);
        Outlook.Items taskItems = taskFolder.Items;
        foreach (Outlook.TaskItem task in taskItems)
        {
            if (task.Subject != null)
            {
                comboBox1.AddItem(task.Subject, System.Type.Missing);
            }
        }
        comboBox1.Text = comboBox1.GetItem(0);
    }
    
  3. Ajoutez le code suivant à la classe TaskFormRegion. Ce code exécute les tâches suivantes :

    • Recherche le Microsoft.Office.Interop.Outlook.TaskItem dans le dossier Tâches en appelant la méthode d'assistance FindTaskBySubjectName et en passant l'objet de la tâche souhaitée. Vous ajouterez la méthode d'assistance FindTaskBySubjectName à l'étape suivante.

    • Ajoute les valeurs Microsoft.Office.Interop.Outlook.TaskItem.Subject et Microsoft.Office.Interop.Outlook.TaskItem.PercentComplete à la zone de liste de tâches dépendantes.

    • Ajoute l'objet de la tâche au champ masqué sur la zone de formulaire. Le champ masqué stocke ces valeurs dans l'élément Outlook.

    Private Sub AddDependentTask_Click1() Handles addDependentTask.Click
        Dim tempTaskItem As Outlook.TaskItem = FindTaskBySubjectName _
            (comboBox1.Text)
        If Not (tempTaskItem Is Nothing) Then
            Me.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() & _
                "% Complete -- " & tempTaskItem.Subject, System.Type.Missing)
            Me.olkTextBox3.Text = Me.olkTextBox3.Text & "|" & tempTaskItem.Subject
        End If
    End Sub
    
        void AddDependentTask_Click()
        {
            Outlook.TaskItem tempTaskItem = FindTaskBySubjectName(comboBox1.Text);
            if (tempTaskItem != null)
            {
                this.listBox1.AddItem(tempTaskItem.PercentComplete.ToString()
    + "% Complete -- " + tempTaskItem.Subject, System.Type.Missing);
                this.olkTextBox3.Text = this.olkTextBox3.Text + "|" + 
                    tempTaskItem.Subject;
            }
        }
    
  4. Ajoutez le code suivant à la classe TaskFormRegion. Ce code fournit la méthode d'assistance FindTaskBySubjectName décrite à l'étape précédente.

    Private Function FindTaskBySubjectName(ByVal subjectName As String) _
        As Outlook.TaskItem
        Dim Application As New Outlook.Application()
        Dim outlookNameSpace As Outlook.NameSpace = _
            Application.GetNamespace("MAPI")
        Dim tasksFolder As Outlook.MAPIFolder = _
            outlookNameSpace.GetDefaultFolder _
                (Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderTasks)
        Dim taskItems As Outlook.Items = tasksFolder.Items
        Dim taskItem As Outlook.TaskItem
        For Each taskItem In taskItems
            If taskItem.Subject = subjectName Then
                Return taskItem
            End If
        Next taskItem
        Return Nothing
    End Function
    
    private Outlook.TaskItem FindTaskBySubjectName(string subjectName)
    {
        Outlook.Application Application = new Outlook.Application();
        Outlook.NameSpace outlookNameSpace = Application.GetNamespace("MAPI");
        Outlook.MAPIFolder tasksFolder =
            outlookNameSpace.GetDefaultFolder(
        Microsoft.Office.Interop.Outlook.
            OlDefaultFolders.olFolderTasks);
        Outlook.Items taskItems = tasksFolder.Items;
        foreach (Outlook.TaskItem taskItem in taskItems)
        {
            if (taskItem.Subject == subjectName)
            {
                return taskItem;
            }
        }
        return null;
    }
    
  5. Ajoutez le code suivant à la classe TaskFormRegion. Ce code exécute les tâches suivantes :

    • Actualise la zone de liste sur la zone de formulaire avec l'état d'achèvement actuel de chaque tâche dépendante.

    • Analyse le champ de texte masqué pour obtenir l'objet de chaque tâche dépendante. Recherche ensuite chaque Microsoft.Office.Interop.Outlook.TaskItem dans le dossier Tâches en appelant la méthode d'assistance FindTaskBySubjectName et en passant l'objet de chaque tâche.

    • Ajoute les valeurs Microsoft.Office.Interop.Outlook.TaskItem.Subject et Microsoft.Office.Interop.Outlook.TaskItem.PercentComplete à la zone de liste de tâches dépendantes.

    Private Sub RefreshTaskListBox()
        listBox1.Clear()
        Dim tempTaskItem As Outlook.TaskItem
        Dim tempArray As [String]() = olkTextBox3.Text.Split(New [Char]() {"|"c})
    
        Dim tempString As String
        For Each tempString In tempArray
            tempTaskItem = FindTaskBySubjectName(tempString)
            If Not (tempTaskItem Is Nothing) Then
                Me.listBox1.AddItem(tempTaskItem.PercentComplete.ToString() & _
                    "% Complete -- " & tempTaskItem.Subject, System.Type.Missing)
            End If
        Next tempString
    End Sub
    
    void RefreshTaskListBox()
    {
        listBox1.Clear();
        Outlook.TaskItem tempTaskItem;
        String[] tempArray = olkTextBox3.Text.Split(new Char[] { '|' });
    
        foreach (string tempString in tempArray)
        {
            tempTaskItem = FindTaskBySubjectName(tempString);
            if (tempTaskItem != null)
            {
                this.listBox1.AddItem(tempTaskItem.PercentComplete.ToString()
                    + "% Complete -- " + tempTaskItem.Subject, 
                        System.Type.Missing);
            }
        }
    }
    
  6. Remplacez le gestionnaire d'événements TaskFormRegion_FormRegionShowing par le code suivant. Ce code exécute les tâches suivantes :

    • Remplit la zone de liste déroulante sur la zone de formulaire avec les objets de tâche lorsque la zone de formulaire apparaît.

    • Appelle la méthode d'assistance RefreshTaskListBox lorsque la zone de formulaire apparaît. Toutes les tâches dépendantes ajoutées à la zone de liste s'affichent lorsque l'élément a été ouvert précédemment.

    Private Sub TaskFormRegion_FormRegionShowing(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles MyBase.FormRegionShowing
        populateComboBox()
        RefreshTaskListBox()
    End Sub
    
    private void TaskFormRegion_FormRegionShowing
        (object sender, EventArgs e)
    {
        populateComboBox();
        RefreshTaskListBox();
        this.addDependentTask.Click += new
        Microsoft.Office.Interop.Outlook.
            OlkCommandButtonEvents_ClickEventHandler(AddDependentTask_Click);
    
    }
    

Test de la zone de formulaire Outlook

Pour tester la zone de formulaire, ajoutez des tâches à la liste de tâches requises sur la zone de formulaire. Mettez à jour l'état de réalisation d'une tâche requise, puis consultez l'état de réalisation de la tâche mis à jour dans la liste des tâches requises.

Pour tester la zone de formulaire

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

    Outlook démarre.

  2. Dans Outlook, créez une tâche en exécutant l'une des tâches suivantes :

    • Dans Outlook 2010, sous l'onglet Accueil, cliquez sur Nouveaux éléments, puis sur Tâche.

    • Dans Outlook 2007, dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Tâche.

  3. Dans le formulaire de tâche, tapez Tâche dépendante dans le champ Objet.

  4. Dans l'onglet Tâche du ruban, cliquez sur Enregistrer et fermer dans le groupe Actions.

  5. Dans Outlook, créez une instance de votre zone de formulaire en exécutant l'une des tâches suivantes :

  6. Dans Outlook 2010, sous l'onglet Accueil, cliquez sur Nouveaux éléments, Autres éléments, puis sur Choisir un formulaire.

  7. Dans le menu Fichier d'Outlook 2007, pointez sur Nouveau, puis cliquez sur Choisir un formulaire.

  8. Dans la boîte de dialogue Choisir un formulaire, cliquez sur TaskFormRegion, puis cliquez sur Ouvrir.

    La zone de formulaire TaskFormRegion apparaît. Ce formulaire remplace le formulaire de tâche complet. La zone de liste déroulante Sélectionnez une tâche à ajouter à la liste de tâches dépendantes est remplie avec d'autres tâches du dossier Tâches.

  9. Dans le formulaire de tâche, tapez Tâche principale dans le champ Objet.

  10. Dans la zone de liste déroulante Sélectionnez une tâche à ajouter à la liste de tâches dépendantes, sélectionnez Tâche dépendante, puis cliquez sur Ajouter une tâche dépendante.

    0 % achevé -- Tâche dépendante apparaît dans la zone de liste Cette tâche dépend des tâches suivantes. Cela indique que vous avez correctement géré l'événement Microsoft.Office.Interop.Outlook.OlkCommandButton.Click du bouton.

  11. Enregistrez puis fermez l'élément Tâche principale.

  12. Rouvrez l'élément Tâche dépendante dans Outlook.

  13. Sur le formulaire Tâche dépendante, modifiez la valeur du champ % achevé en 50 %.

  14. Dans l'onglet Tâche du ruban des tâches dépendantes, cliquez sur Enregistrer et fermer dans le groupe Actions.

  15. Rouvrez l'élément Tâche principale dans Outlook.

    50 % achevé -- Tâche dépendante apparaît maintenant dans la zone de liste Cette tâche dépend des tâches suivantes.

Étapes suivantes

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

Voir aussi

Tâches

Procédure pas à pas : conception d'une zone de formulaire Outlook

Comment : ajouter une zone de formulaire à un projet de complément Outlook

Comment : empêcher Outlook d'afficher une zone de formulaire

Comment : accéder à l'élément Outlook qui affiche la zone de formulaire

Concepts

Accès à une zone de formulaire au moment de l'exécution

Directives pour la création de zones de formulaire Outlook

Association d'une zone de formulaire à une classe de message Outlook

Actions personnalisées dans les zones de formulaire Outlook

Autres ressources

Création de zones de formulaire Outlook