file-cabinets-big-data

Array, Collection et Dictionnaire : stocker des données en VBA

19/10/2016

En VBA, il est très pratique de pouvoir stocker un ensemble de données au sein d’un code, sans avoir besoin que ces données apparaissent dans des cellules de notre classeur.

Pour cela, on peut utiliser différentes méthodes, plus ou moins complexes, selon les fonctionnalités qu’on veut y associer.

Commençons par un exemple simple qui nous permet d’introduire les méthodes Array, Collection et Dictionnaire : nous voulons ici stocker les notes des élèves Marine, Thomas et Céline au sein d’un code VBA.

 

tableau-blog

 

Array

La méthode Array est la méthode la plus basique pour stocker des données. Array représente un tableau avec une seule ligne, dont la numérotation des éléments commence à 0.

Cette méthode est simple à comprendre et à utiliser mais elle peut devenir pénible lorsqu’on a un grand nombre de données à stoker et à manipuler. De plus, cette méthode n’est pas dynamique : lorsque l’on a défini notre Array il est fixe, on ne peut pas ajouter ou supprimer un élément (contrairement à la collection ou au dictionnaire).

 

Collection

Une Collection dans VBA nous permet de stocker des données et de manipuler ces données par le code de manière plus flexible qu’avec la méthode Array.

Une collection est de la forme macollection (Item, Key), ou la variable Item est obligatoire et la variable Key est optionnelle. On peut donc choisir de stocker une liste d’éléments ou une liste d’éléments associés à des clés.

Cette méthode est idéale pour gérer une base de données dynamique sur laquelle on veut effectuer des opérations simples, comme ajouter ou supprimer des éléments de la collection.

Toutefois, il n’est pas possible d’extraire facilement un élément spécifique de la collection ou de savoir si un élément appartient à la collection (pour cela il faut avoir recours à une boucle For…Next qui parcourt la collection et vérifie pour chaque élément s’il existe ou non).

 

Dictionnaire

Le dictionnaire est la méthode la plus avancée de stockage de données en VBA que nous présentons dans cet article.

Un dictionnaire est de la forme mondico (Key, Item) où les variables key et Item sont toutes les deux obligatoires. Le dictionnaire associe donc toujours un élément à une clé. Cela permet de pouvoir parcourir à la fois les éléments et les clés du dictionnaire (contrairement à la collection où l’on ne peut parcourir que les éléments).

L’avantage principal du dictionnaire par rapport à la collection est qu’il est possible de savoir directement si une valeur du dictionnaire existe grâce à la propriété mondico.Exists(Key).

Toutefois, le dictionnaire n’est pas activé par défaut dans VBA, il faut faire la manipulation suivante :

Aller dans Outils –> Références

capture-1

Cocher « Microsoft Scripting Runtime » et cliquer sur Ok

capure-2

 

Pour aller plus loin :

Si vous voulez stocker des données en VBA en utilisant des objets à plusieurs dimensions, vous pouvez avoir recours aux tableaux virtuels.