Vous êtes sur la page 1sur 3

Code Valeur Clé Items

1000003 1 1000003 1 2
1000003 2 1000004 3 4 5 6 7 8
1000004 3 1000005 9 10 11
1000004 4 1000006 12 13 14 15
1000004 5
1000004 6
1000004 7
1000004 8
1000005 9
1000005 10
1000005 11
1000006 12
1000006 13
1000006 14
1000006 15
Items pour un code dans un Array 2 D
Sub ItemsPourUnCode()
Set d1 = CreateObject("Scripting.Dictionary") ' clés et index des nos de ligne te TblS()
a = Range("A2:B" & [A65000].End(xlUp).Row)
Dim TblS(): ReDim TblS(1 To UBound(a), 1 To 200)
Set d2 = CreateObject("Scripting.Dictionary") ' position du dernier item de chaque clé
For i = LBound(a) To UBound(a)
If Not d1.exists(a(i, 1)) Then d1(a(i, 1)) = d1.Count + 1 ' index no ligne de la table TblS()
d2(a(i, 1)) = d2(a(i, 1)) + 1 ' on incrémente la position dernier item de chaque clé
TblS(d1(a(i, 1)), 1) = a(i, 1)
TblS(d1(a(i, 1)), d2(a(i, 1)) + 1) = a(i, 2) ' item en ligne/colonne
Next
[E2].Resize(d1.Count, Application.Max(d2.items) + 1) = TblS
End Sub

Items pour un code dans un Array 2 D


Sub ItemsPourUnCode()
Set d1 = CreateObject("Scripting.Dictionary") ' clé
Set d3 = CreateObject("Scripting.Dictionary") ' recherche max items de chaque clé
a = Range("A2:B" & [A65000].End(xlUp).Row)
For i = LBound(a) To UBound(a) ' Crée un index des position des clés
If Not d1.exists(a(i, 1)) Then d1(a(i, 1)) = d1.Count + 1 ' no ligne clé
d3(a(i, 1)) = d3(a(i, 1)) + 1
Next i
mx = Application.Max(d3.items) ' maxi items
Dim TblS(): ReDim TblS(1 To d1.Count, 1 To mx + 1)
Set d2 = CreateObject("Scripting.Dictionary") ' position du dernier item de chaque clé
For i = LBound(a) To UBound(a)
d2(a(i, 1)) = d2(a(i, 1)) + 1
TblS(d1(a(i, 1)), 1) = a(i, 1)
TblS(d1(a(i, 1)), d2(a(i, 1)) + 1) = a(i, 2) ' item en ligne/colonne
Next
[E2].Resize(d1.Count, mx + 1) = TblS
End Sub
TblS()

que clé

e TblS()
chaque clé

clé

ue clé

Vous aimerez peut-être aussi