Bonjour
@fronck ,
(en attendant votre propre discussion... ), voici quelques notions pour une présentation du dictionary. La pratique, ce sera pour après.
Un dictionary est une structure qui comporte des clefs et à chaque clef on peut associer quelque chose (Item).
La particularité de la structure dictionary, c'est qu'elle n'autorise pas deux clefs identiques.
Un dictionary peut être vu comme une structure qui comporte une collection de paires. Chaque paire comporte une clef (différente des clefs de toutes les autres paires) et une valeur associée.
Donc si on considère une clef particulière au sein du dictionary alors on sait que cette clef est unique. On peut lire l'Item associé à cette clef ou bien redéfinir l'item pour cette clef.
Cette structure dictionary (qu'on nommera dic par la suite) est livrée avec des méthodes pouvant gérer les paires (clef, item) qui la composent.
Quelques méthodes ou fonctions :
Ajouter une paire (clef , Item) : dic.Add maclef, monItem
Supprimer la paire correspondant à une clef particulière : dic.Remove maClef
Supprimer toutes les paires du dictionary : dic.RemoveAll
Vérifier si une clef est dans le dictionary : if dic.Exists(cetteClef)
Pour accéder à l'item de la paire d'une clef particulière, on utilise dic(maclef) ou dic.items(maclef)
On peut accéder à un tableau contenant toutes les clefs par dic.keys
On peut accéder à un tableau contenant toutes les items par dic.items
Attention! Dans ce cas, les items du tableau des items correspondent (à l'emplacement du tableau des clefs).
Le premier Item du tableau correspond à la première clef du tableau des clefs, le deuxième Item du tableau des items correspond à la deuxième clef du tableau des clefs, etc.
Les tableaux des clefs ou Items sont des tableaux à une seule dimension et dont l'index commence à 0 et non à 1.
On utilise souvent ces tableaux pour transférer la liste des clefs et la liste de leur élément associé (à chaque clef) sur la feuille de calcul.
Il n'y a pas de tri dans un dictionary. On empile les paires (clef, item) au fur et à mesure qu'on les crée dans le dictionary.
Toutes les clef sont différentes. De base, les minuscules sont différentes de leur équivalent en majuscule.
"abc" et "aBc" sont deux clefs différentes. On peut donc ajouter une paire pour chaque clef : dic.add "abc", 123 et ensuite dic.add "aBc", 135.
Pour que le dictionary ne fasse pas la distinction entre les majuscules et les minuscules, on peut avant de commencer à remplir le dictionary définir la propriété : dic.CompareMode=TextCompare.
Après quoi, si on fait dic.add "abc", 123 et ensuite dic.add "aBc", 135, alors VBA va détecter une erreur sur dic.add "aBc", 135 en informant que la clef existe déjà!
Une autre propriété importante est de connaitre le nombre de paires présentes dans le dictionary (ou bien le nombre de clefs => c'est équivalent). Ce nombre est donné par dic.count.
Il existe deux ou trois autres méthodes mais qui sont très peu utilisées donc inutile de les voir ici.
Il est inutile de connaitre les mécanismes internes du dictionary. Savoir comment il se comporte (unicité de la clef, association d'une clef avec un item) et les outils pour le manipuler ou manipuler ses éléments sont suffisants pour l'utiliser.
Une autre caractéristique du dictionary est que son utilisation est très rapide.
Attention! Cette structure fait partie d'une bibliothèque Windows. Elle n'existe pas sous OS d'Apple.