OVH Cloud OVH Cloud

Trier une collection

1 réponse
Avatar
Patrick
Bonjour,

J'ai créé une classe qui est une collection d'années.

La première fois, chaque année est ajoutée dans l'ordre (évidemment). Mais
si j'ajoute une année, j'aimerais qu'elle se place dans le bon ordre de façon
qu'apres si je parcoure la collection item par item chaque année se trouve à
la bonne place, comme cela :

Au début :
cAnnees(1).Annee = 2000
cAnnees(2).Annee = 2002
cAnnees(3).Annee = 2003

J'ajoute 2001 et ensuite :
cAnnees(1).Annee = 2000
cAnnees(2).Annee = 2001
cAnnees(3).Annee = 2002
cAnnees(4).Annee = 2003

Merci pour votre aide.

--
Patrick

1 réponse

Avatar
JB
Bonsoir,


http://cjoint.com/?iouughXvOW

Exemple de collection triée:

Sub CollectionSansDoublonsTrié()
Dim Maliste As New Collection
t = Timer
Maliste.Add Int(Rnd * 10000)
For i = 1 To 2000
n = Maliste.count
aléa = Int(Rnd * 10000)
If x > Maliste(n) Then
Maliste.Add after:=n, Item:=aléa, key:=CStr(aléa)
Else
j = 1
Do While j < n And aléa > Maliste(j)
j = j + 1
Loop
On Error Resume Next
Maliste.Add before:=j, Item:=aléa, key:=CStr(aléa)
End If
Next i

MsgBox Timer - t
MsgBox "Nb éléments:" & Maliste.count
For i = 1 To Maliste.count
MsgBox Maliste(i)
Next i
End Sub

Cordialement JB

Bonjour,

J'ai créé une classe qui est une collection d'années.

La première fois, chaque année est ajoutée dans l'ordre (évidemme nt). Mais
si j'ajoute une année, j'aimerais qu'elle se place dans le bon ordre de façon
qu'apres si je parcoure la collection item par item chaque année se tro uve à
la bonne place, comme cela :

Au début :
cAnnees(1).Annee = 2000
cAnnees(2).Annee = 2002
cAnnees(3).Annee = 2003

J'ajoute 2001 et ensuite :
cAnnees(1).Annee = 2000
cAnnees(2).Annee = 2001
cAnnees(3).Annee = 2002
cAnnees(4).Annee = 2003

Merci pour votre aide.

--
Patrick