image

Une collection est un type de données qui contient des objets stockés comme des tableaux (mais différents). Lors de l’écriture de codes VBA de base, vous devez avoir utilisé des classeurs, des feuilles de calcul, des plages, etc. Ce sont tous des collections. Dans cet article, nous allons découvrir les collections VBA.

Qu’est-ce qu’une collection dans VBA?

Une collection est un type de données qui stocke un type d’objets similaire, tout comme des tableaux. Mais contrairement aux tableaux, sa taille peut être augmentée ou diminuée dynamiquement selon les besoins.

Vous pouvez ajouter, rechercher, récupérer et supprimer des éléments des collections.

Contrairement aux tableaux, vous ne pouvez pas modifier les valeurs des éléments dans les collections. Si vous le souhaitez, utilisez des tableaux comme élément de la collection.

Une collection a 4 propriétés ou méthodes qui lui sont associées.

Collection.Add

Collection.Item

Collection.Count

Collection.Remove

À travers cet article, nous explorerons l’utilisation de ces propriétés.

Comment créer une collection dans VBA?

Une collection est un objet, il est donc nécessaire de la déclarer et de l’initialiser. Comme tout autre objet dans VBA, il existe deux méthodes pour créer une collection dans VBA.

1. Création instantanée

Dim items as new Collection

Dans la méthode ci-dessus, l’objet est créé instantanément. Vous pouvez commencer à utiliser cette collection pour vos besoins immédiatement.

image

2. Création différée

Dim items as Collection

Set items = New Collection

Dans cette méthode, nous créons d’abord une référence de collection et, si nécessaire, nous initialisons avec un objet de collection. En utilisant cette méthode, vous pouvez choisir de créer la collection en fonction de certains critères.

image

Ajout d’éléments à une collection (Collection.Add)

Nous utilisons la méthode Add pour ajouter de nouveaux éléments à une collection.

items.Add "Apples"

Le code ci-dessus ajoutera la chaîne « Apples » dans la collection.

items.Add 1.4

Le code ci-dessus ajoutera le double de 1,4 à la fin de la collection.

image

Nous pouvons également définir des clés pour ces éléments. Ces clés peuvent être utilisées pour accéder aux éléments de la collection.

image

Insertion d’éléments dans une collection avant ou après un élément existant

La méthode Add ajoute de nouveaux éléments à la fin de la collection. La méthode add a quatre paramètres.

Add(item,[Key],[Before],[After])

Le premier argument est nécessaire. C’est l’objet ou que vous souhaitez ajouter à la collection. Les arguments de repos sont facultatifs. Nous verrons les utilisations de ces arguments dans cette section.

Si nous voulons ajouter un élément avant ou après un index / clé spécifique, nous utilisons les paramètres Avant et Après de la méthode Add.

items.Add True, "b", "cnst"

'Or

items.Add True, Before:="cnst"

Les deux lignes insèrent une valeur booléenne avant la clé « cnst » dans les éléments de la collection VBA.

Pour insérer un élément après un index / élément / clé correspondant, nous utilisons le paramètre After de la méthode Add.

'inserting "Mango" with key "m" after key "cnst"

items.Add "Mango", Key:="m", after:="b"

La ligne ci-dessus insérera « Mango » avec la touche « m » après la touche « b ».

image

Remarque: * Les clés des éléments doivent être uniques. Toute clé qui existe déjà dans la collection ne sera pas acceptée. VBA renverra une erreur indiquant que « la clé est déjà associée à un élément de cette collection ».

image

Nous pouvons l’utiliser à notre avantage pour obtenir une liste unique de la collection.

Accéder aux éléments de la collection (Collection.Item)

Il existe deux méthodes pour accéder aux éléments d’une collection. . CollectionName (« index / clé »)

  1. CollectionName.Item (« index / clé »)

Par exemple, pour accéder à un membre dans une collection d’éléments * à l’index 1 et à la clé «apl», je peux utiliser l’un des codes VBA ci-dessous.

Debug.Print items.Item(1)

--

Debug.Print items(1)

--

Debug.Print items.Item("apl")

--

Debug.Print items("apl")

image

Comment obtenir le nombre d’articles dans une collection? (Collection.Count)

Pour obtenir le nombre total d’objets ou d’éléments dans une collection, nous utilisons la fonction .Count de la collection. La méthode .Count renvoie le nombre total d’éléments de la collection.

items.Count

La ligne ci-dessus donnera le nombre d’objets de la collection.

Comment accéder à tous les éléments d’une collection?

Les boucles sont la seule façon d’accéder à tous les éléments de la collection dans VBA.

Nous parcourons chaque élément de la collection pour y accéder. Pour cela, nous utilisons la boucle for. La boucle for-each est considérée comme le moyen le plus rapide et le plus propre d’accéder aux objets de collection.

Bouclage dans une collection en VBA

Il existe différentes manières de parcourir la collection dans VBA. Nous utiliserons le plus élégant pour chaque boucle pour parcourir la collection.

Trop boucler chaque élément d’une collection, utilisez simplement cette ligne de code VBA.

For Each itm In items

Debug.Print itm

Next itm

image

Suppression d’éléments d’une collection (Collection.Remove)

Pour supprimer un élément d’une collection vba, nous pouvons utiliser la méthode Remove. La méthode remove prend un argument. Il peut s’agir de l’index ou de la clé de l’élément (si disponible).

items.Remove (1) 'using index

--

items.Remove 1

--

items.Remove ("apl") 'using key

--

items.Remove "apl"

Suppression de la collection dans VBA

Eh bien, vous ne pouvez pas supprimer une collection dans vba. Cependant, vous pouvez supprimer tous les éléments de cette collection en la redéfinissant en tant que nouvelle collection.

Set items = New Collection

Cette ligne de code créera une nouvelle collection sur l’adresse des articles.

Par conséquent, notre collection sera vidée.

image

Array vs Collection dans VBA

  1. Array size is predefined. The size of array can not be changed

normally.

  1. Array’s can hold only same type of data and the type must be declared

first.

  1. Indexing in array starts from 0

  2. Array members does not have any associated key.

  3. Arrays are mutable. You can change the values of its members.

  1. Collection’s size changes as items are added or removed.

  2. A collection can hold any number of data type. As you have seen in the

above examples.

  1. Indexing in VBA Collection starts from 1.

  2. Collection members can have keys associated with.

  3. Collections are immutable. You cannot change values of its member

directly.

Alors oui les gars, ce sont les bases des collections. Il existe de nombreux avantages et utilisations de la collection VBA dans les outils bureautiques. Nous les explorerons ensemble. Jusque-là, si vous avez des questions concernant la collecte ou tout ce qui concerne Excel / VBA, inscrivez-les dans la section commentaires ci-dessous.