Structure objet dictionnaire

Bonsoir ,

J'essaie de comprendre comment fonctionne la structure dictionnaire dans VBA mais je bute dans la compréhension du code.

Dans la procédure SumIt() en pièce jointe, je comprends qu'on somme les items (colonne 6 - prix en $) pour chaque key (colonne 1 - nom du fruit), ce qui donne le récapitulatif souhaité.

Dans la ligne

.Item(ar(i, 1)) = .Item(ar(i, 1)) + ar(i, 6)

j'ai l'impression que l'on additionne des string .Item(ar(i, 1)) avec des nombres ar(i, 6)

Pouvez-vous m'expliquer la logique du remplissage du dico ? Avez-vous d'autres exemples ?

Merci par avance,

4sumwithdict.xlsm (31.00 Ko)

Bonjour,

Plein d'exemple ici (à la rubrique Dictionnary

A+

Bonjour,

Ton impression est bonne.
Il faut aussi tenir compte de la conversion automatique qui se met en route.
.Item(ar(i, 1)) et ar(i, 6) sont des Variant/String qu'il arrive à convertir en numérique, il te fait donc la somme sans générer d'erreur.

Dans l'absolu, il faut supprimer un objet à la fin. Il te manque Set dict = Nothing
eric

Edit: attend, j'ai peut-être répondu un peu vite. ar(i, 1) est la clé
Ce qui trouble, c'est le .Item du With Dict.
Sans s en plus, la collection c'est Items
Bizarre...

Moi je l'écris ainsi, sans With :

        For i = 1 To UBound(ar, 1)
            dict(ar(i, 1)) = dict(ar(i, 1)) + ar(i, 6)
            Debug.Print dict(ar(i, 1))
        Next

peut-être plus clair

Merci Eriic, je trouve ton écriture plus claire, dans cette formulation on voit bien qu'on fait la somme de nombres (colonne 6)

Du coup, j'ai un peu retouché le code, j'ai enlevé la transposition de l'array, mais il me retourne des #N/A et je ne comprends pas pourquoi.

@ galopin01, merci pour ton lien, je vais regarder tout ça.

4sumwithdict.xlsm (31.72 Ko)
Rechercher des sujets similaires à "structure objet dictionnaire"