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.
Amé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.
Dé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.
Restauration 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
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