La structure “Dictionnaire” dans VBA (tutoriel)

Une fonctionnalité moins connue, mais d'autant plus utile, de VBA est l'utilisation de la structure "Dictionnaire" pour stocker les données dans la mémoire de l'ordinateur. Le mot "mémoire" vous fait peur? Pas de panique, c'est simple et utile!

Cette fonctionnalité permet de contenir de grandes quantités de données disponibles immédiatement à l'utilisation et cette utilisation est particulièrement rapide. En gros, vous n'avez pas besoin de stocker vos données dans les Feuilles – ils sont à votre disposition dans la mémoire tant que votre macro tourne. Le plus souvent, on utilise la mémoire de cette manière pour charger des données "externes" (un fichier TXT ou les données d'une base de données par exemple) ce qui permet ensuite de les utiliser "à l'intérieur d'Excel" de manière très simple et rapide.

La structure "Dictionnaire" dont nous parlons ici attribue une Valeur à une Clé. De cette manière, il est possible d'aller chercher la Valeur (chaîne de texte, nombre, array,…) en utilisant la Clé.

Exemple (pour voir de quoi on parle):

Clé (code postal) –> Valeur (ville)
68100 –> "Mulhouse"
83990 –> "Saint Tropez"
72000 –> "Le Mans"

Comme vous pouvez constater, dans ce cas-ci, on attribue le nom de la ville (Valeur) à un code postal (Clé). Plus tard, il nous suffira de demander "quelle ville a le code postal "72000" et on aura immédiatement la réponse. Cela fonctionne dans l'autre sens aussi. Donc pas besoin de faire des boucles et devoir parcourir les données à chaque fois que l'on cherche un code postal… Gain de temps garanti!

Comment cela se passe et pratique en VBA

Deux méthodes sont possibles pour pouvoir utiliser cette structure. Le choix dépend de votre possibilité d'utiliser les Références car la méthode plus simple requiert la présence de la Référence Microsoft Scripting Runtime. Il s'agit d'une des Références de base fournies dans chaque installation d'Excel mais qui n'est pas activée par défaut. Pour pouvoir l'utiliser, vous devez avoir la possibilité de l'activer.

Si ce n'est pas possible, vous pouvez utiliser l'objet Collection qui ne requiert aucune Référence supplémentaire.

Méthode 1: Utilisation de Scripting.Dictionary

Pour pouvoir utiliser cette méthode, assurez vous que la Référence Microsoft Scripting Runtime est activée.

Microsoft Scripting Runtime - Référence VBA

Astuce: Pour activer une Référence, allez dans l'éditeur VBA, dans le menu, choisissez "Outils" et ensuite "Références".
Là, vous verrez la liste des Références disponibles. Trouvez celle qui vous faut et cochez sa case.
Pour information, les Références sont triées par ordre alphabétique sauf les Références utilisées (cochées) qui sont en haut de la liste.

Voici donc la manière de créer et remplir votre Dictionnaire en VBA

Les explications se trouvent en tant que commentaires dans le code VBA même…

 

Il est évident que l'utilisation de Dictionnaire n'a de sens que quand elle est utilisée en combinaison avec une boucle qui vous permettra de remplir le Dictionnaire à partir des données (fichier texte, contenu d'un fichier Excel etc.).

Et voici quelques autres opérations pour vous aider à gérer votre Dictionnaire (dans les exemples suivants, Cle est le nom de la variable contenant la clé):

  • MonDico.Count – affiche le nombre de paires clé/valeur dans le Dictionnaire
  • MonDico.Exists(Cle) – vérifie si la clé existe dans le Dictionnaire (retourne True ou False)
  • MonDico.Remove(Cle) – supprime la paire clé/valeur spécifié du Dictionnaire

Pour lister les valeurs dans le Dictionnaire, vous pouvez utiliser le code suivant:

 

Méthode 2: utilisation de l'Objet de type Collection

Si, pour une raison quelconque, vous n'avez pas la possibilité d'utiliser la référence "Microsoft Scripting Runtime", vous pouvez créer votre Dictionnaire en créant un Object de type Collection.

Il y a deux bémols dans cette solution:

  1. les valeurs et les clés doivent être formatées comme chaînes de caractères (String)
  2. la nécessité de passer par une fonction supplémentaire si vous avez besoin de vérifier la présence d'une clé dans votre Dictionnaire. Pour cela, vous pouvez utiliser la fonction suivante:
 

Dans la pratique, cela donne le code suivant:

 

Dictionnaire en VBA: Conclusion

Vous voici donc familiarisés à l'utilisation de Dictionnaires en VBA. Vous savez maintenant créer un Dictionnaire, le remplir et en extraire une Valeur souhaitée. Il s'agit d'une construction très pratique et relativement facile à mettre en oeuvre. A utiliser sans modération!

Si vous trouvez un cas intéressant d'utilisation de cette structure, n'hésitez pas à le mentionner dans les commentaires

Pour en savoir (encore) plus: voici le lien vers la page web Microsoft consacrée à l'objet Dictionary. Comme vous le constaterez, l'information disponible sur la page de Microsoft est assez sommaire (d'où la raison de ce tutoriel) mais elle peut vous être utile comme point de départ pour l'exploration d'autres possibilités

>>> La suite n°1 de ce tutoriel: Trier le Dictionnaire dans VBA (par clé et par valeur) <<<

>>> La suite n°2 de ce tutoriel: Dictionnaire VBA – les techniques avancées <<<

 

Pour aller plus loin en VBA

Sur ce site, vous trouverez d'autres articles et tutoriels qui vous aideront à développer vos connaissances de VBA. En voici quelques uns…

 

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

8 commentaires sur “La structure “Dictionnaire” dans VBA (tutoriel)”