Trier le Dictionnaire dans VBA (par clé et par valeur)

Ce tutoriel explique comment trier la structure "Dictionnaire" (Dictionary) dans VBA par clé et par valeur. Il s'agit de l'extension du tutoriel La structure "Dictionnaire" dans VBA qui explique la création et l'utilisation d'un Dictionnaire.

Le Dictionnaire en VBA sert à associer les paires de valeurs (clé/valeur) et de les garder facilement accessible dans la mémoire. Il est également possible d'importer ou exporter le Dictionnaire en tant que texte ou en tant que fichier Excel.

Pour cela, il est souhaitable (voir indispensable) de pouvoir trier les valeurs dans le Dictionnaire. Ici, vous trouverez les codes VBA qui vous offrent les deux possibilités de tri: tri par clé ou tri par valeur.

Pour les débutants: imaginez le Dictionnaire VBA comme un vrai dictionnaire (par exemple) français/allemand. On peut dire que la Clé correspond aux mots en français et la Valeur correspond aux traduction en allemand des clés. Pour le tri, il est donc possible de trier le Dictionnaire par les mots en français (tri par Clé) tout comme par les traductions en allemand (tri par Valeur).

Le tri d'un Dictionnaire VBA: la théorie

L'Objet Dictionnaire (Dictionary) ne peut pas être trié directement. Nous devons donc le trier par un détour vers un Objet qui peut être trié. Dans ce cas-ci, on va utiliser l'Objet Array. Voici la procédure à suivre pour trier un Dictionnaire.

Procédure de tri d'un Dictionnaire: Pas à pas

  1. Création d'un Objet Dictionary (si on ne l'a pas encore) & son remplissage par des paires clé/valeur
  2. Création d'une Array intermédiaire
  3. On copie le contenu non-trié du Dictionary dans l'Array
  4. On trie l'Array (par clé ou par valeur, selon besoin)
  5. On copie le contenu trié de l'Array dans le Dictionary d'origine nettoyé ou dans un nouveau Dictionary
  6. On attribue au nouveau Dictionary son nom d'origine
  7. Terminé: un Dictionnaire trié identique (nom, contenu) au Dictionnaire d'origine est à votre disposition et prêt à être utilisé

Utilisation du Microsoft Scripting Runtime

Pour rappel, les codes sources qui suivent utilisent l'Objet (Object) de type Dictionnaire (Dictionary) qui est disponible après l'activation de la Référence "Microsoft Scripting Runtime". Cette référence est disponible dans chaque installation Excel mais il faut l'activer:

  • dans VBE en anglais: Alt + F11 –> Tools –> References –> cocher "Microsoft Scripting Runtime"
  • dans VBE en français: Alt + F11 –> Outils –> Références –> cocher "Microsoft Scripting Runtime"

Microsoft Scripting Runtime

Après la théorie, voici donc la pratique…

Le tri par Valeur d'un Dictionnaire VBA

Voici le code VBA de la fonction TrierDictionnaireParValeur qui, comme son nom l'indique, trie le Dictionnaire par les valeurs. Cette fonction est tout à fait autonome. Elle peut être utilisée telle quelle dans n'importe quel projet. Elle utilise comme argument un objet de type Dictionary ( = votre dictionnaire) et retourne un autre objet Dictionary (= le même dictionnaire mais trié).

Avantage principal: pour pouvoir l'utiliser, vous n'aurez pas besoin de modifier votre code VBA existant. Il suffit d'en faire "copier & coller" vers votre projet.

Le code est largement commenté pour une utilisation/apprentissage plus facile.

 

Le tri par Clé d'un Dictionnaire VBA

Tout comme pour la fonction précédente, TrierDictionnaireParCle est une fonction autonome qui utilise comme input un objet Dictionary et retourne un Dictionary trié.  Elle est également utilisable directement.

 

Exemple d'utilisation pratique de Tri de Dictionnaire en VBA

Maintenant que nous avons les deux fonctions de tri, nous pouvons les appliquer dans un exemple. Dans la procédure suivante, nous allons créer un Dictionnaire (exemple: dictionnaire français/allemand) et le remplir avec les données non-triées. Ensuite, nous allons le trier avec une des fonctions de tri (par Clé ou Valeur) et afficher le résultat dans un MessageBox.

Pour le choix de méthode de tri, il suffit de mettre en commentaire une des deux lignes qui appellent les fonctions: dans le code, il s'agit des lignes 34 et 35. Enlevez de commentaire celle que vous voulez appliquer et mettez en commentaire celle que vous ne voulez pas utiliser. Ensuite, vous pourrez faire le contraire pour tester l'autre méthode.

Rappel: n'oubliez pas de "copier & coller" dans votre projet également le code des deux fonction (en plus de code de l'exemple qui suit) et activer la Référence "Microsoft Scripting Runtime" si ce n'est pas déjà fait.

 

C'était donc un exemple de tri avec des fonctions que je vous propose. Comme vous pouvez constater, leur utilisation en soi n'est pas difficile. Vous pourrez donc les intégrer facilement à votre code/projet.

Conclusion

Maintenant vous pouvez non seulement créer un Dictionnaire mais également le trier – et cela dans les deux sens. Il s'agit d'une fonctionnalité fort pratique qui a de nombreuses applications possibles.

Si vous avez trouvé ce tutoriel utile, n'hésitez pas à le partager et à revenir sur Excel-Malin.com pour en apprendre encore plus sur Excel et VBA.

Pour aller plus loin en VBA…

Et pour terminer, voici une liste des articles qui pourraient vous être utiles dans votre travail en VBA…

Et n'oubliez pas de consulter la section Téléchargements de Excel-Malin.com pour voir ce qui est possible de créer avec Excel et VBA!

Laissez un commentaire

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

2 commentaires sur “Trier le Dictionnaire dans VBA (par clé et par valeur)”