Objets de liste VBA

Que sont les ListObjects dans VBA?

Dans une table normalement, ce que nous voyons est un ensemble de données, mais dans la terminologie VBA, il y en a beaucoup plus, comme il y a une plage de la plage de la liste de données totale, la colonne est connue comme la colonne de liste et la ligne est connue comme la ligne de liste et ainsi de suite , donc pour accéder à ces propriétés, nous avons une fonction intégrée appelée Listobjects et qui est utilisée avec la fonction de feuille de calcul.

VBA ListObject est une façon de se référer aux tables Excel lors de l'écriture du code VBA. En utilisant VBA LISTOBJECTS, nous pouvons créer, supprimer des tables, et totalement nous pouvons jouer avec des tables Excel en code VBA. Les tableaux Excel sont délicats, débutants et même dans une certaine mesure, les utilisateurs de niveau intermédiaire ont du mal à travailler avec des tableaux. Étant donné que cet article parle de référencer des tables Excel dans le codage VBA, il est préférable que vous ayez une bonne connaissance des tables Excel.

Lorsque les données sont converties en tables, nous ne travaillons plus avec une plage de cellules, mais nous devons travailler avec des plages de tables.Dans cet article, nous allons donc vous montrer comment travailler avec des tables Excel pour écrire efficacement des codes VBA.

Créer un format de tableau à l'aide de ListObjects dans Excel VBA

Par exemple, regardez les données Excel ci-dessous.

En utilisant le code VBA ListObject, nous allons créer un format de table pour ces données.

Vous pouvez télécharger ce modèle Excel VBA ListObjects ici - Modèle Excel VBA ListObjects
  • Pour ces données, nous devons d'abord trouver quelle est la dernière ligne et colonne utilisée, définissez donc deux variables pour la trouver.

Code:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC As Long End Sub 

  • Pour trouver la dernière ligne et colonne utilisées, utilisez le code ci-dessous.

Code:

LR = Cellules (Rows.Count, 1) .End (xlUp) .Row LC = Cells (1, Columns.Count) .End (xlToLeft) .Colonne

  • Définissez maintenant une autre variable pour contenir la référence des données.

Code:

 Dim Rng As Range 

  • Définissez maintenant la référence à cette variable en utilisant le code ci-dessous.

Code:

 Définissez Rng = Cells (1, 1) .Resize (LR, LC)

Nous devons maintenant utiliser la méthode VBA «ListObject.Add» pour créer une table et voici la syntaxe de la même chose.

ListObject.Add (Source, XlListObjectHasHeaders, Destination, TableStyleName)

Source: Ce n'est rien pour quelle plage de cellules nous insérons le tableau. Nous pouvons donc fournir ici deux arguments, à savoir «xlSrcRange» et «xlSrcExternal».

XlListObjectHasHeaders: si la table d'insertion de données a des en-têtes ou non. Si oui, nous pouvons fournir «xlYes» sinon nous pouvons fournir «xlNo».

Destination: ce n'est rien d'autre que notre plage de données.

Style de tableau: Si vous souhaitez appliquer n'importe quel style de tableau, nous pouvons fournir des styles.

  • Ok, maintenant dans la feuille active, nous créons la table, donc le code ci-dessous créerait une table pour nous.

Code:

 Dim Ws As Worksheet Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng

  • Après cela, nous devons donner un nom à cette table.

Code:

Ws.ListObjects (1) .name = "EmpTable"

  • Vous trouverez ci-dessous le code complet pour votre référence.

Code:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC As Long LR = Cells (Rows.Count, 1) .End (xlUp) .Row LC = Cells (1, Columns.Count) .End (xlToLeft) .Column Dim Rng As Range Set Rng = Cells (1, 1) .Resize (LR, LC) Dim Ws As Worksheet Set Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange, xllistobjecthasheaders: = xlYes, Destination: = Rng Ws.ListObjects (1) .name = " EmpTable "End Sub 

Ok, exécutons le code et voyons la magie.

Il a créé la table avec les données mentionnées et a donné le nom de table comme «EmpTable» .

Mise en forme de tableaux Excel avec VBA ListObjects

Une fois le tableau Excel créé, nous pouvons travailler avec des tableaux en utilisant la collection vba ListObject.

  • Tout d'abord, définissez la variable comme «ListObject».

Code:

 Sub List_Objects_Example2 () Dim MyTable As ListObject End Sub 

  • Définissez maintenant la référence à cette variable en utilisant le nom de la table.

Code:

 Sub List_Objects_Example2 () Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") End Sub 

Maintenant, la variable «MyTable» contient la référence de la table «EmpTable».

  • Entrez le nom de la variable et mettez un point pour voir les propriétés et les méthodes de VBA ListObject.

Par exemple, si nous voulons sélectionner la table entière, nous devons utiliser l'objet «Range» et sous celui-ci, nous devons utiliser la méthode «Select».

Code:

MyTable.Range.Select

Cela sélectionnerait la table de données entière, y compris l'en-tête.

  • Si vous souhaitez sélectionner uniquement le contenu du tableau sans en-têtes, nous devons utiliser «DataBodyRange».

Code:

MyTable.DataBodyRange.Select

Comme ça, on peut jouer avec les tables.

  • Below is the list of activity codes for your reference.

Code:

 Sub List_Objects_Example2() Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects("EmpTable") MyTable.DataBodyRange.Select 'To Select data range without headers MyTable.Range.Select 'To Select data range with headers MyTable.HeaderRowRange.Select 'To Select table header rows MyTable.ListColumns(2).Range.Select 'To select column 2 including header MyTable.ListColumns(2).DataBodyRange.Select 'To select column 2 without header End Sub 

Like this, we can use the “ListObject” collection to play around with excel tables.

Things to Remember

  • VBA ListObject is the collection of objects to reference excel tables.
  • To access ListObject collection first we need to specify what worksheet we are referring to is.