Créer et utiliser un dictionnaire en VBA

Glen Alfaro 30 janvier 2023
  1. Conditions préalables
  2. Créer l’objet Dictionary à l’aide de VBA
  3. Ajout d’éléments dans l’objet Dictionary à l’aide de VBA
  4. Retourner une valeur sur le Dictionnaire à l’aide de VBA
  5. Modifier une valeur dans le Dictionnaire à l’aide de VBA
  6. Compter l’élément dans le Dictionnaire à l’aide de VBA
  7. Imprimer toutes les clés et valeurs du dictionnaire
Créer et utiliser un dictionnaire en VBA

L’objet Dictionary dans VBA n’est pas lié au dictionnaire de la langue, que nous utilisons pour connaître le sens des mots.

Dans VBA, l’objet Dictionary est en quelque sorte similaire à l’objet Collection dans le stockage des données. La principale différence est qu’une Collection ne peut pas :

  1. Vérifier si un article est dans la collection
  2. Modifier la valeur d’un élément existant

Bien sûr, nous pouvons toujours utiliser Collection et créer des solutions de contournement à ce problème, mais Dictionnaire propose ces solutions avec des méthodes prédéfinies. Ainsi, Dictionnaire peut être utile pour des tâches spécifiques, en particulier lors de la récupération d’un certain élément.

Cet article montre comment créer et utiliser l’objet Dictionary pour effectuer certaines fonctionnalités dans votre code VBA.

Conditions préalables

L’objet Dictionary n’est pas fourni avec la bibliothèque par défaut de VBA. Ainsi, avant d’utiliser pleinement l’objet Dictionary, il est nécessaire de référencer la bibliothèque Microsoft Scripting Runtime, y compris l’objet Dictionary.

  • Ouvrir le fichier Excel.
  • Depuis l’onglet Developer, ouvrez l’éditeur Visual Basic.
  • Dans la barre d’outils Tools, cliquez sur References.
  • Cochez la case Microsoft Scripting Runtime.

Vous êtes maintenant prêt.

Créer l’objet Dictionary à l’aide de VBA

Maintenant que le Microsoft Scripting Runtime est dans les References, le bloc de code ci-dessous vous montrera comment créer un objet Dictionary.

Créez un objet à partir de la bibliothèque Scripting.Dictionary, puis initialisez-le en tant que nouvel objet.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

End Sub

Ajout d’éléments dans l’objet Dictionary à l’aide de VBA

Syntaxe:

[DictionaryObject].Add([Key], [Item])

Paramètres:

[DictionaryObject] Obligatoire. Le nom de l’objet Dictionary
[Key] Obligatoire. Les données par lesquelles l’“élément” est référencé à l’intérieur du Dictionnaire.
[Item] Obligatoire. Définit ou renvoie la valeur d’un élément dans le Dictionary

Nous pouvons ajouter des éléments au Dictionary en utilisant le bloc de code plus tôt. Les noms (Glen, Myla, Katrina, Jose) ont été ajoutés comme clé et leur âge respectif comme valeurs sur le bloc de code ci-dessous.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add ("Glen", 25)
d.Add ("Myla", 49)
d.Add ("Jose", 58)
d.Add ("Katrina", 18)

End Sub

Retourner une valeur sur le Dictionnaire à l’aide de VBA

Avec le Dictionary, on peut retourner une valeur en connaissant la clé qui lui correspond.

Syntaxe de retour :

[Value] = [DictionaryObject](Key)

Modifier la syntaxe :

[DictionaryObject](Key) = [Value]

Paramètres:

[DictionaryObject] Obligatoire. Le nom du Dictionary
[Key] Obligatoire. Les données par lesquelles l’“élément” est référencé à l’intérieur du Dictionary.
[Value] Obligatoire. Définit ou renvoie la valeur d’un élément dans le Dictionary

En utilisant la syntaxe, la valeur de la clé Myla a renvoyé 49.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18

Debug.Print d("Myla")

End Sub

Production :

49

Modifier une valeur dans le Dictionnaire à l’aide de VBA

Avec le Dictionnaire, on peut changer une valeur en connaissant la clé qui lui correspond.

Modifier la syntaxe :

[DictionaryObject](Key) = [Value]

Paramètres:

[DictionaryObject] Obligatoire. Le nom du Dictionary
[Key] Obligatoire. Les données par lesquelles le Item est référencé à l’intérieur du Dictionary
[Value] Obligatoire. Définit ou renvoie la valeur d’un élément dans le Dictionary

Sur le bloc de code ci-dessous, la valeur de la clé Myla a été modifiée de 49 à 50 en utilisant la syntaxe ci-dessus.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18

d("Myla") = 50

Debug.Print d("Myla")

End Sub

Production :

50

Compter l’élément dans le Dictionnaire à l’aide de VBA

Nous pouvons renvoyer le nombre de tous les éléments à l’intérieur du Dictionnaire en utilisant la méthode Count.

Syntaxe Count :

[Value]= [DictionaryObject].Count

Paramètres:

[DictionaryObject] Obligatoire. Le nom du Dictionary
[Value] Renvoie le nombre d’éléments dans le Dictionary

Dans l’exemple ci-dessous, nous obtenons le contenu de l’objet d en utilisant la méthode Count.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18

Debug.Print "There are " & d.Count & " items in the Dictionary."

End Sub

Production :

There are 4 items in the Dictionary.

Imprimer toutes les clés et valeurs du dictionnaire

Le bloc de code ci-dessous imprimera toutes les clés et valeurs à l’intérieur du Dictionnaire à l’aide d’une boucle.

Sub DictionaryDemo()

Dim d As Scripting.Dictionary

Set d = New Scripting.Dictionary

d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18

Dim Key as Variant

For Each Key In d.Keys
    Debug.Print Key, d(Key)
Next

End Sub

Production :

Glen           25 
Myla           49 
Jose           58 
Katrina        18