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+