La structure “Dictionnaire” dans VBA 5


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 tant que votre macro tourne.

La structure "Dictionnaire" en question 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:

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

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

Voici donc la manière de créer et remplir votre Dictionnaire (code commenté)

 

 

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:

  • les valeurs et les clés doivent être formatées comme chaînes de caractères (String)
  • 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:

 

Conclusion

Vous voici donc familiarisés à l'utilisation de Dictionnaires en VBA. 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 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 de ce tutoriel: Trier le Dictionnaire dans VBA (par clé et par valeur) <<<

  

44 0

Pourrait vous intéresser

Partagez cette page...
Share on FacebookShare on Google+Share on LinkedInTweet about this on TwitterShare on RedditShare on TumblrDigg thisEmail this to someone

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

5 commentaires sur “La structure “Dictionnaire” dans VBA

  • Geoffroy

    Bonjour,
    Je suis un éternel novice "débutant" et je n'ai pas compris comment utiliser ce dictionnaire.
    Pourriez nous donnez quelques exemples plus précis avec le code complet pour les débutants?
    Peut-on ajouter des phrases ou seulement des mots et jusqu'à combien de mots pouvons-nous mettre en mémoire dans ce dico?
    merci

    • excel-malin.com Auteur du billet

      Bonjour Geoffroy.
      En fait, il s'agit de la "structure dictionnaire" et non d'un dictionnairre au sens propre. Bien qu'il soit possible cette structure pour créer un vrai dictionnaire. Mais cela peut servir aussi bien pour de nombreuses autres applications…

      Pour ce qui est du nombre de mots pouvant être utilisés, on parle de dizaines de milliers…

      Et pour les phrases, c'est évidemment possible – il s'agit de faire le lien entre deux éléments. Peu importe s'il s'agit des mots, des phrases, des numéros de téléphone,… Une paire "Le chat est blanc." et "The cat is white." est tout à fait utilisable.

      Concernant votre idée d'un "vrai dictionnaire", pouvez vous être plus précis? S'il y a une demande pour un tel outil, je pourrais envisager d'en créer un (dans la mesure du temps disponible).

  • Alex

    Bonjour,
    Pour les cas ou la référence n'est pas activée sur un poste j'ai écris ce petit bout de code sans prétention qui active la bibliothèque en l'identifiant par son GUID c'est à dire son identifiant normalement unique et commun aux différentes versions d'office. J'ajoute son chargement au démarrage du classeur:

    Private Sub Workbook_Open()
    Ajoutreference
    End Sub
    '--------------------------
    Public Sub Ajoutreference()
    Dim resultat
    On Error Resume Next
    ' Microsoft Scripting Runtime library pour utiliser la fonction dictionaire "Scripting.dictionary"
    resultat = ThisWorkbook.VBProject.References.AddFromGuid("{420B2830-E718-11CF-893D-00A0C9054228}", 1, 0)
    On Error GoTo 0
    End Sub