Dictionnary à parser

Bonjour,

On a un Dictionnary de n Keys dont les items s'incrémentent de 1 à N

In fine on peut écrire :

Dim Arr

Arr = Application.Transpose(Dico.keys)

On obtient ainsi un Array 2D des clefs du Dico

En fait chaque clef peut être parsée (en 2) avec le séparateur pipe.

Quel est le moyen le plus élégant (et surtout le plus rapide…) de récupérer un Array de 2 colonnes et n lignes avec les données parsés ?

Je donne ici une solution rapide mais qui ne me satisfait que moyennement car après il faut faire le ménage : Je pense qu'on pourrait tout faire en mémoire.

Mais ce que je voudrais éviter ce sont des Redim en boucle.

Le code actuel :

Sub TestTraitementFact()
Dim i&, ArrF, ArrG, Arr, Dico
ArrF = Range("TDec[iDFour]").Value
ArrG = Range("TDec[GFD]").Value
    'Chargement du Dico
  Set Dico = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(ArrF)
     Dico(ArrF(i, 1) & "|" & ArrG(i, 1)) = i
  Next i
    'On restitue les clefs sur une feuille vide en Y1
WsP.[Y1].Resize(Dico.Count) = Application.Transpose(Dico.Keys)
    'Et on split
For i = 1 To Dico.Count
    WsP.Cells(i, 26) = Split(WsP.Cells(i, 25), "|")(1)
    WsP.Cells(i, 25) = Split(WsP.Cells(i, 25), "|")(0)
Next
    'On récupère les 2 colonne dans un Array
Arr = WsP.Cells(i, 25).CurrentRegion.Value
End Sub

A+

bonjour Galopin01,

vous faites encore d'autres choses avec ce dictionaire, autrement, vous pouvez utiliser les items aussi. (exemple un petit peu simple)

Sub teste()
     Set dict = CreateObject("scripting.dictionary")
     For i = 1 To 100
          arr = Array(Cells(i, "A").Value, Cells(i, "E").Value)     'un array avec les 2 données
          dict(Join(arr, "|")) = arr         'le clef = joindre les 2, l'item = array
     Next

     arr = Application.Index(dict.items, 0, 0)     'on récupère une matrice 2D de 100 lignes * 2 colonnes

End Sub

Bonjour,

Le problème c'est que les joins je fume pas ça... De mon temps on trouvait pas ça à la sortie des écoles...

Bon YFO que j'épluche ça !

Merci.
A+

C'est PARFAIT !!!!!!!!

re,

super, moi, j'utilise ce lien https://excelmacromastery.com/vba-dictionary/

Merci,

Pas le temps d'éplucher ça ces jours ci, mais je note dans mes références !

Pour les longues soirées d'hiver...

A+

Rechercher des sujets similaires à "dictionnary parser"