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: tri par clé ou 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: 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é

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, tri 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 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.

 

Voici 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 que vous pouvez non seulement ré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.


 

Vous avez trouvé un cas pratique intéressant d'utilisation de la structure "Dictionnaire" (Dictionary)? N'hésitez pas à nous en faire part dans les commentaires. Cela pourra inspirer d'autres visiteurs/utilisateurs d'Excel…

icon-alert-greenBesoin d'un développement sur mesure en Excel ou/et en VBA? Contactez-nous par email ou via le formulaire de contact. Nous allons analyser vos besoin et vous proposer une solution.
Nous proposons également de la consultance dans les domaines de VBA, Excel, analyse de projets ou gestion de données… Nos services sont disponibles aux entreprises tout comme aux particuliers.

 

9 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.