ListObject, contrôle

Le contrôle ListObject est une liste qui expose des événements et peut être liée aux données.Lorsque vous ajoutez une liste à une feuille de calcul, Visual Studio crée un contrôle ListObject par rapport auquel vous pouvez programmer sans devoir parcourir le modèle objet Microsoft Office Excel.

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

Création du contrôle

Dans les projets au niveau du document, vous pouvez ajouter des contrôles ListObject à une feuille de calcul, au moment du design ou de l'exécution.Dans les projets au niveau de l'application, vous pouvez ajouter des contrôles ListObject à des feuilles de calcul, uniquement au moment de l'exécution.Pour plus d’informations, consultez Comment : ajouter des contrôles ListObject aux feuilles de calcul.

[!REMARQUE]

Par défaut, les objets de liste créés dynamiquement ne restent pas dans la feuille de calcul comme contrôles hôtes lorsque la feuille de calcul est fermée.Pour plus d’informations, consultez Ajout de contrôles à des documents Office au moment de l'exécution.

Liaison de données au contrôle

Un contrôle ListObject prend en charge la liaison de données simple et complexe.Le contrôle ListObject peut être lié à une source de données à l'aide des propriétés DataSource et DataMember au moment du design ou à l'aide de la méthode SetDataBinding au moment de l'exécution.

[!REMARQUE]

Le ListObject est mis à jour automatiquement lorsqu'il est lié à une source de données, telle qu'un DataTable, qui déclenche des événements lorsque les données sont modifiées.Si vous liez le ListObject à une source de données qui ne déclenche pas d'événements lorsque les données sont modifiées, vous devez appeler la méthode RefreshDataRow ou RefreshDataRows pour mettre à jour le ListObject.

Lorsque vous ajoutez un ListObject à une cellule de feuille de calcul en mappant un élément de schéma à répétition à cette cellule, Visual Studio mappe automatiquement le ListObject au groupe de données généré.Toutefois, le ListObject n'est pas lié automatiquement aux données.Vous pouvez suivre des étapes pour lier le ListObject au groupe de données au moment du design ou de l'exécution dans un projet au niveau du document.Vous pouvez lier par programmation le ListObject au groupe de données au moment de l'exécution dans un complément d'application.

Dans la mesure où les données sont séparées de l'objet ListObject, vous devez ajouter et supprimer des données via le groupe de données limité, et pas directement via l'objet ListObject.Si les données du groupe de données lié sont mises à jour par le biais d'un mécanisme quelconque, ces modifications sont automatiquement répercutées dans le contrôle ListObject.Pour plus d’informations, consultez Liaison de données aux contrôles dans les solutions Office.

Vous pouvez remplir rapidement un contrôle ListObject en liant le ListObject à une source de données.Si vous modifiez les données dans un ListObject lié aux données, les modifications sont également apportées automatiquement dans la source de données.Si vous souhaitez remplir un ListObject puis permettre à l'utilisateur de modifier les données dans le ListObject sans modifier la source de données, vous pouvez utiliser la méthode Disconnect pour détacher le ListObject de la source de données.Pour plus d’informations, consultez Comment : remplir de données des contrôles ListObject.

[!REMARQUE]

La liaison de données n'est pas prise en charge sur les contrôles ListObject se chevauchant.

2ttzcbhb.collapse_all(fr-fr,VS.110).gifAmélioration des performances dans les contrôles ListObject

La lecture d'un fichier XML dans un contrôle ListObject lié aux données a tendance à être plus lente si vous liez d'abord le contrôle et que vous appelez ensuite ReadXml pour remplir le groupe de données.Pour améliorer les performances, appelez ReadXml avant de lier le contrôle.

2ttzcbhb.collapse_all(fr-fr,VS.110).gifDéconnexion des contrôles ListObject de la source de données

Après avoir rempli un contrôle ListObject avec des données en le liant à une source de données, vous pouvez le déconnecter afin que les modifications apportées aux données dans l'objet de liste n'affectent pas la source de données.Pour plus d’informations, consultez Comment : remplir de données des contrôles ListObject.

2ttzcbhb.collapse_all(fr-fr,VS.110).gifRestauration de l'ordre des colonnes et des lignes

Lorsque vous liez des données à un contrôle ListObject ajouté à un document au moment du design, Visual Studio effectue le suivi de l'ordre des colonnes et des lignes à chaque enregistrement du classeur.Si un utilisateur déplace les colonnes ou les lignes ListObject lors de l'exécution, le nouvel ordre est conservé lors de la prochaine ouverture du classeur et le contrôle ListObject se lie de nouveau à la source de données.

Si vous souhaitez rétablir l'ordre d'origine des colonnes et des lignes de l'ListObject, vous pouvez appeler la méthode ResetPersistedBindingInformation.Cette méthode supprime les propriétés de document personnalisées en rapport avec l'ordre des colonnes et des lignes de ListObject spécifié.Appelez cette méthode à partir de l'événement Shutdown du classeur si vous ne souhaitez pas conserver l'ordre des colonnes et des lignes de l'ListObject.

Mise en forme

Une mise en forme qui peut être appliquée à un Microsoft.Office.Interop.Excel.ListObject peut s'appliquer à un contrôle Microsoft.Office.Tools.Excel.ListObject.Cela inclut les bordures, les polices, le format de nombre et les styles.Les utilisateurs finaux peuvent réorganiser les colonnes dans un ListObject lié aux données, et ces modifications persisteront dans le document, à condition que l'objet ListObject ait été ajouté au document au moment du design.Lors de l'ouverture suivante du document, l'objet de liste est lié à la même source de données, mais l'ordre des colonnes reflète les modifications des utilisateurs.

Ajout et suppression de colonnes au moment de l'exécution

Au moment de l'exécution, vous ne pouvez pas ajouter ou supprimer manuellement des colonnes dans un contrôle ListObject lié aux données.Si un utilisateur final essaie de supprimer une colonne, elle sera immédiatement restaurée et toutes les colonnes ajoutées seront supprimées.Par conséquent, il est important d'écrire le code pour expliquer aux utilisateurs pourquoi ils ne peuvent pas exécuter ces actions sur un ListObject lié aux données.Visual Studio fournit plusieurs événements sur un ListObject relatif à la liaison de données.Par exemple, vous pouvez utiliser l'événement OriginalDataRestored pour avertir les utilisateurs que les données qu'ils ont tenté de supprimer ne peuvent pas l'être et ont été restaurées.

Ajout et suppression de lignes au moment de l'exécution

Vous pouvez ajouter et supprimer manuellement des lignes dans un contrôle ListObject lié aux données, à condition que la source de données autorise l'ajout de nouvelles lignes et ne soit pas en lecture seule.Vous pouvez écrire le code par rapport aux événements tels que BeforeAddDataBoundRow pour valider les données.Pour plus d’informations, consultez Comment : valider des données lorsqu'une nouvelle ligne est ajoutée à un contrôle ListObject.

Il arrive que la relation de l'objet de liste à la source de données provoque des erreurs habituelles.Par exemple, vous pouvez mapper les colonnes que vous souhaitez voir apparaître dans le ListObject ; par conséquent, si vous omettez des colonnes qui comportent des restrictions, comme un champ qui n'accepte pas les valeurs Null, des erreurs sont retournées à chaque fois qu'une ligne est créée.Vous pouvez rédiger du code pour ajouter les valeurs manquantes dans un gestionnaire d'événements pour l'événement ErrorAddDataBoundRow.

Attribution d'un nouveau nom aux contrôles ListObject dans Excel

Excel permet aux utilisateurs de modifier le nom des tables Excel au moment de l'exécution en utilisant l'onglet Création.Toutefois, le contrôle ListObject ne prend pas en charge cette fonctionnalité.Si un utilisateur tente de renommer un tableau Excel correspondant à ListObject, le nom d'origine du tableau Excel est automatiquement rétabli lors de l'enregistrement du classeur.

Événements

Les événements suivants sont disponibles pour le contrôle ListObject :

Voir aussi

Tâches

Comment : ajouter des contrôles ListObject aux feuilles de calcul

Comment : redimensionner les contrôles ListObject

Comment : valider des données lorsqu'une nouvelle ligne est ajoutée à un contrôle ListObject

Comment : mapper des colonnes ListObject aux données

Comment : remplir de données des contrôles ListObject

Comment : remplir des feuilles de calcul avec des données provenant d'une base de données

Concepts

Automatisation d'Excel à l'aide d'objets étendus

Extension de documents Word et de classeurs Excel dans des compléments d'application au moment de l'exécution.

Ajout de contrôles à des documents Office au moment de l'exécution

Limitations de programmation des éléments hôtes et des contrôles hôtes

Autres ressources

Exemples et procédures pas à pas relatifs au développement Office

Liaison de données aux contrôles dans les solutions Office

Contrôles sur des documents Office