Hello,
Super ton tuto cousinhub
Je me sens un peu isolé pour avoir suivi les consignes patrick1957 ne sois pas affolé par mon code. Au delà de ta demande, j'ai étoffé avec un microsystème clé en main, mais le coeur de la machine c'est le point suivant qui crée 3 dictionnaires (nomUniques, tachesUniques et avec dict : la somme associée au couple nom/tache)
' === 4. Lecture et agrégation ===
Travailler avec un tableau structuré en source est une méthode très recommandable permettant d'éviter les externalités négatives que pourraient rencontrer certains des autres codes proposés précédemment. Notamment si l'utilisateur change la structure de sa source. L'utilisateur est d'ailleurs la source principale d'un éventuel bazar dans l'évolution et la maintenance d'un tableur
Eviter de coder "en dur" est aussi, autant que faire se peut, à privilégier. A défaut, toute évolution en sera freinée ou empêchée.
Si vous vous intéressez aux dictionnaires, voici un petit tuto :
1 - Principe de base
Un dictionnaire est une structure qui stocke des paires clé/valeur :
Key = identifiant unique
Item = donnée associée à la clé
2 - Déclaration et créatio
Dim d As Object
Set d = CreateObject("Scripting.Dictionary")
3 - Méthodes et propriétés principales
.Add key, item → ajoute une paire clé/valeur
.Item(key) → accède ou modifie une valeur
.Exists(key) → vérifie si la clé existe
.Remove(key) → supprime une clé
.RemoveAll → vide le dictionnaire
.Count → nombre d’éléments
.Keys → renvoie un tableau de toutes les clés
.Items → renvoie un tableau de toutes les valeurs
4 - Exemple simple
Sub ExempleDico()
Dim d As Object
Set d = CreateObject("Scripting.Dictionary")
d.Add "Nom", "Dupont"
d.Add "Age", 35
d.Add "Ville", "Paris"
MsgBox d.Item("Ville") ' affiche Paris
Dim k As Variant
For Each k In d.Keys
Debug.Print k, d.Item(k)
Next k
End Sub
5 - Avantages
Accès rapide aux éléments via la clé
Pas besoin d’index numérique
Idéal pour les recherches, correspondances, regroupements
Structure dynamique (pas besoin de redimensionner)
6 - Inconvénients
Les éléments ne sont pas triés
Utilise un peu plus de mémoire qu’un tableau
Clés uniques obligatoires
Nécessite la référence "Microsoft Scripting Runtime" pour un typage fort
7 - Items complexes
a) Array en item
On peut stocker un tableau dans un item :
Dim arr(1 To 3)
arr(1) = "A": arr(2) = "B": arr(3) = "C"
d.Add "Lettres", arr
Debug.Print d("Lettres")(2) ' affiche B
b) Dictionnaire de dictionnaires
On peut aussi imbriquer des dictionnaires :
Dim dMain As Object, dSub As Object
Set dMain = CreateObject("Scripting.Dictionary")
Set dSub = CreateObject("Scripting.Dictionary")
dSub.Add "Nom", "Durand"
dSub.Add "Age", 40
dMain.Add "Client1", dSub
Debug.Print dMain("Client1")("Nom") ' affiche Durand
8 - Quand l’utilise
Recherche rapide de valeurs par clé
Correspondances (code → libellé)
Comptage, regroupement, suppression de doublons
Petites structures hiérarchiques (dico de dico)
Bye