Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez ajouter des contrôles à un document Microsoft Office Word et un classeur Microsoft Office Excel au moment de l’exécution. Vous pouvez également les supprimer au moment de l’exécution. Les contrôles que vous ajoutez ou supprimez au moment de l’exécution sont appelés contrôles dynamiques.
S’applique à : Les informations contenues dans cette rubrique s’appliquent aux projets de niveau document et aux projets de complément VSTO pour Excel et Word. Pour plus d’informations, consultez Fonctionnalités disponibles par type d’application et de projet Office.
Cette rubrique décrit les éléments suivants :
Gérer les contrôles au moment de l’exécution à l’aide de collections de contrôles
Pour ajouter, obtenir ou supprimer des contrôles au moment de l'exécution, utilisez les méthodes d'assistance des objets ControlCollection et ControlCollection.
La façon dont vous accédez à ces objets dépend du type de projet que vous développez :
Dans un projet au niveau du document pour Excel, utilisez la propriété des classes Controls,
Sheet1,Sheet2etSheet3. Pour plus d’informations sur ces classes, consultez l’élément hôte de feuille de calcul.Dans un projet au niveau du document pour Word, utilisez la Controls propriété de la
ThisDocumentclasse. Pour plus d’informations sur cette classe, consultez l’élément hôte document.Dans un projet de complément VSTO pour Excel ou Word, utilisez la
Controlspropriété d’un Worksheet ou Document que vous générez au moment de l’exécution. Pour plus d’informations sur la génération de ces objets au moment de l’exécution, consultez Étendre des documents Word et des classeurs Excel dans des compléments VSTO au moment de l’exécution.
Ajouter des contrôles
Les types ControlCollection et ControlCollection incluent des méthodes d’assistance que vous pouvez utiliser pour ajouter des contrôles hôtes et des contrôles Windows Forms courants aux documents et feuilles de calcul. Chaque nom de méthode suit le format Addclasse de contrôle, où classe de contrôle est le nom de la classe du contrôle que vous souhaitez ajouter. Par exemple, pour ajouter un NamedRange contrôle à votre document, utilisez la AddNamedRange méthode.
L’exemple de code suivant ajoute un NamedRange à Sheet1 dans un projet au niveau du document pour Excel.
Excel.Range range1 = Globals.Sheet1.Range["A1", "D5"];
Microsoft.Office.Tools.Excel.NamedRange namedRange1 =
Globals.Sheet1.Controls.AddNamedRange(range1, "ChartSource");
Contrôles d’accès et de suppression
Vous pouvez utiliser la Controls propriété d’un élément ou Worksheet pour parcourir parmi tous les contrôles de votre document, y compris les contrôles que vous avez ajoutés au moment de la conception. Les contrôles que vous ajoutez au moment du design sont également appelés contrôles statiques.
Vous pouvez supprimer des contrôles dynamiques en appelant la Delete méthode du contrôle ou en appelant la Remove méthode de chaque collection Controls. L’exemple de code suivant utilise la méthode Remove pour supprimer un NamedRange de Sheet1 dans un projet de niveau document pour Excel.
Vous ne pouvez pas supprimer les contrôles statiques au moment de l’exécution. Si vous essayez d’utiliser la méthode Delete ou Remove pour supprimer un contrôle statique, une CannotRemoveControlException sera déclenchée.
Note
Ne supprimez pas les contrôles par programmation dans le Shutdown gestionnaire d’événements du document. Les éléments d’interface utilisateur du document ne sont plus disponibles lorsque l’événement Shutdown est déclenché. Si vous souhaitez supprimer des contrôles avant la fermeture du document, ajoutez votre code au gestionnaire d’événements pour un autre événement, tel que BeforeClose ou BeforeSave pour Word, ou BeforeClosepour BeforeSave Excel.
Ajouter des contrôles hôtes à des documents
Lorsque vous ajoutez par programme des contrôles hôtes à des documents, vous devez fournir un nom qui identifie de façon unique le contrôle et vous devez spécifier où ajouter le contrôle sur le document. Pour obtenir des instructions spécifiques, consultez les rubriques suivantes :
Guide pratique pour ajouter des contrôles ListObject à des feuilles de calcul
Guide pratique pour ajouter des contrôles NamedRange à des feuilles de calcul
Guide pratique pour ajouter des contrôles de graphique aux feuilles de calcul
Guide pratique pour ajouter des contrôles de contenu aux documents Word
Guide pratique pour ajouter des contrôles Signet aux documents Word
Pour plus d’informations sur les contrôles hôtes, consultez la vue d’ensemble des éléments hôtes et des contrôles hôtes.
Lorsqu’un document est enregistré, puis fermé, tous les contrôles hôtes créés dynamiquement sont déconnectés de leurs événements et perdent leurs fonctionnalités de liaison de données. Vous pouvez ajouter du code à votre solution pour recréer les contrôles hôtes lorsque le document est rouvert. Pour plus d’informations, consultez Conserver les contrôles dynamiques dans les documents Office.
Note
Les méthodes d’assistance ne sont pas fournies pour les contrôles hôtes suivants, car ces contrôles ne peuvent pas être ajoutés par programme aux documents : XmlMappedRange, XMLNodeet XMLNodes.
Ajouter des contrôles Windows Forms à des documents
Lorsque vous ajoutez par programme un contrôle Windows Forms à un document, vous devez fournir l’emplacement du contrôle et un nom qui identifie de manière unique le contrôle. Le runtime Visual Studio Tools pour Office fournit des méthodes d’assistance pour chaque contrôle. Ces méthodes sont surchargées pour que vous puissiez passer un intervalle ou des coordonnées spécifiques pour l’emplacement du composant.
Lorsqu’un document est enregistré, puis fermé, tous les contrôles Windows Forms créés dynamiquement sont supprimés du document. Vous pouvez ajouter du code à votre solution pour recréer les contrôles lorsque le document est rouvert. Si vous créez des contrôles Windows Forms dynamiques à l’aide d’un complément VSTO, les wrappers ActiveX pour les contrôles sont laissés dans le document. Pour plus d’informations, consultez Conserver les contrôles dynamiques dans les documents Office.
Note
Les contrôles Windows Forms ne peuvent pas être ajoutés par programme aux documents protégés. Si vous annulez la protection par programmation d’un document Word ou d’une feuille de calcul Excel pour ajouter un contrôle, vous devez écrire du code supplémentaire pour supprimer le wrapper ActiveX du contrôle lorsque le document est fermé. Le wrapper ActiveX du contrôle n’est pas automatiquement supprimé des documents protégés.
Ajouter des contrôles personnalisés
Si vous souhaitez ajouter un Control élément qui n’est pas pris en charge par les méthodes d’assistance disponibles, telles qu’un contrôle utilisateur personnalisé, utilisez les méthodes suivantes :
Pour Excel, utilisez l’une AddControl des méthodes d'un objet ControlCollection.
Pour Word, utilisez l’une AddControl des méthodes d’un objet ControlCollection.
Pour ajouter le contrôle, passez l’emplacement Control, un emplacement pour le contrôle et un nom qui identifie de manière unique le contrôle à la
AddControlméthode. LaAddControlméthode retourne un objet qui définit la façon dont le contrôle interagit avec la feuille de calcul ou le document. LaAddControlméthode retourne un ControlSite (pour Excel) ou un ControlSite objet (pour Word).L’exemple de code suivant montre comment utiliser la AddControl méthode pour ajouter dynamiquement un contrôle utilisateur personnalisé à une feuille de calcul dans un projet Excel au niveau du document. Dans cet exemple, le contrôle utilisateur est nommé
UserControl1et le Range contrôle est nommérange1. Pour utiliser cet exemple, exécutez-le à partir d’uneSheetclasse n dans le projet.
Utiliser des membres de contrôles personnalisés
Après avoir utilisé l’une des méthodes pour ajouter un contrôle à une feuille de calcul ou un document, vous disposez maintenant de AddControl deux objets de contrôle différents :
Le Control qui représente le contrôle personnalisé.
L'objet
ControlSite,OLEObjectouOLEControlqui représente le contrôle après avoir été ajouté à la feuille de calcul ou au document.De nombreuses propriétés et méthodes sont partagées entre ces contrôles. Il est important d’accéder à ces membres via le contrôle approprié :
Pour accéder aux membres qui appartiennent uniquement au contrôle personnalisé, utilisez le Control.
Pour accéder aux membres partagés par les contrôles, utilisez les objets
ControlSite,OLEObject, ouOLEControl.Si vous accédez à un membre partagé depuis Control, cela peut échouer sans avertissement ni notification, ou produire des résultats non valides. Utilisez toujours des méthodes ou des propriétés de l'objet
ControlSite,OLEObjectouOLEControlsauf si la méthode ou la propriété nécessaire n'est pas disponible ; dans ce cas, vous devez uniquement référencer le Control.Par exemple, la ControlSite classe et la Control classe ont une
Toppropriété. Pour obtenir ou définir la distance entre le haut du contrôle et le haut du document, utilisez la Top propriété du ControlSite, et non la Top propriété du Control.
Contenu connexe
- Contrôles sur les documents Office
- Conserver les contrôles dynamiques dans les documents Office
- Guide pratique pour ajouter des contrôles ListObject à des feuilles de calcul
- Guide pratique pour ajouter des contrôles NamedRange à des feuilles de calcul
- Guide pratique pour ajouter des contrôles de graphique aux feuilles de calcul
- Guide pratique pour ajouter des contrôles de contenu à des documents Word
- Guide pratique pour ajouter des contrôles Signet aux documents Word
- Vue d’ensemble des contrôles Windows Forms sur les documents Office
- Guide pratique pour ajouter des contrôles Windows Forms aux documents Office