Dictionnaires imbriqués et affichage de valeurs sous forme array

Bonjour à tous,

Je cherche à imbriquer 2 dictionnaires sous la forme <ticker;<date,datas>> .
Les valeurs datas sont sous la forme d'un tableau de 2 valeurs.
Mon objectif est de pouvoir accéder à la plage de donnée 'datas' à une date précise, pour un ticker donné.

Avec le code ci-dessous, je pense réussir à boucler sur la création du 1er dico (dicoticker ici) ou j'ai bien le listing des ticker ;date.
En revanche, lors de mon debug.print, les deux valeurs 'datas' ne se modifient pas.
Du moins les valeurs sorties ne s'adaptent pas au couple ticker-date. Les valeurs datas affichés correspondent toujours à celles du même ticker alors qu'elles s'adaptent à la date.

Auriez-vous une idée pour corriger cela?

Est-ce une erreur dans la construction de mes dictionnaires imbriqués ou dans la rédaction du débug.print?

Code:

Sub test_dico3b()

Application.ScreenUpdating = False

Dim wb As Workbook
Dim wsA, wsD, wsSP, ws As Worksheet
Dim i, j, LC, LRD, LRT As Long
Dim ceml As Range
Dim keyticker, keydate, datas As Variant

Dim dicoticker As New Dictionary
Dim dicodate As Dictionary

Set wb = ThisWorkbook
Set ws = wb.Sheets("Feuil1")

With ws

LC = ws.Cells(Rows.Count, 1).End(xlUp).Row

For j = 2 To LC

    keyticker = Cells(j, 1).Value
    keydate = Cells(j, 2).Value

        If dicoticker.Exists(keyticker) Then
                Set dicodate = dicoticker(keyticker)

                If dicodate.Exists(keydate) Then
                    datas = Array(Cells(j, 3), Cells(j, 4))
                    dicodate.Add keydate, datas
                Else
                    Set datas = New Collection
                        datas = Array(Cells(j, 3), Cells(j, 4))
                     dicodate.Add keydate, datas
                End If
        Else
            Set dicodate = New Dictionary
            Set datas = New Collection

            datas = Array(Cells(j, 3), Cells(j, 4))

            Call dicodate.Add(keydate, datas)
            Call dicoticker.Add(keyticker, dicodate)

        End If

Next j

End With

For Each t In dicoticker.Keys
    For Each d In dicodate.Keys

        Debug.Print t, d, dicodate(d)(0), dicodate(d)(1)
    Next d
Next t

End Sub

Sortie du debug.print

capture

Je joint le fichier ci dessous:

J'avoue avoir tenté pas mal de possibilités, sans résultats..

Merci beaucoup par avance

Je suis désolé j'ai pas repris ton code, c'était plus rapide de recommencer de zéro pour moi. Donc voici ma solution avec le débug.print qui pour moi affiche le bon résultat.

Mon code se trouve dans Module1 avec le Nom "NewDico"

Pas de soucis,

En tout cas celui-ci fonctionne et affiche ce quez je souhaite.

Donc nickel

Merci beaucoup de ton aide !

Pour ce qui est de ton cm si date existe déjà pour un ticker donnée, pas d'action à faire car cela n'arrivera qu'une seul fois pour sur .

Rechercher des sujets similaires à "dictionnaires imbriques affichage valeurs forme array"