Trier alphabetiquement les objets d'une collection
ggcourtois
Messages postés6Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention28 novembre 2008
-
18 juin 2006 à 18:54
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
19 juin 2006 à 17:23
Bonjour,
J'aimerais savoir comment trier les objets d'une collection par ordre alphabétique.
Pour plus d'informations :
-Le nom de ma colletion : _collectnom
Je suis débutant donc j'aimerais bien qu'en + de la source vous m'expliquiez comment ca marche.
Merci beaucoup,
A+,
gg
ggcourtois
Messages postés6Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention28 novembre 2008 18 juin 2006 à 23:14
Bonjour et merci pour ta reponse.
Cela va vous paraître bête, mais je n'arrive pas à unzip les "zip".
Pourtant je mets extract mais il me crée pas de fichier .exe
Bizzare
Neo.balastik
Messages postés796Date d'inscriptionjeudi 17 mai 2001StatutMembreDernière intervention 5 mai 20097 19 juin 2006 à 09:16
Salut O;)
Colle ce code dans un module :
Utilisation (si ta collection s'appelle par exemple MyCollection) :
Set MyCollection = SortCollection(MyCollection)
Guy
'CODE
Public Function SortCollection(ByVal C As Collection) As Collection
Dim n As Long: n = C.Count
If n 0 Then Set SortCollection New Collection: Exit Function
ReDim Index(0 To n - 1) As Long ' allocate index array
Dim i As Long, m As Long
For i 0 To n - 1: Index(i) i + 1: Next ' fill index array
For i = n \ 2 - 1 To 0 Step -1 ' generate ordered heap
Heapify C, Index, i, n
Next
For m = n To 2 Step -1 ' sort the index array
Exchange Index, 0, m - 1 ' move highest element to top
Heapify C, Index, 0, m - 1
Next
Dim c2 As New Collection
For i = 0 To n - 1: c2.add C.Item(Index(i)): Next ' fill output collection
Set SortCollection = c2
End Function
Private Sub Heapify(ByVal C As Collection, Index() As Long, ByVal i1 As Long, ByVal n As Long)
' Heap order rule: a[i] >= a[2*i+1] and a[i] >= a[2*i+2]
Dim nDiv2 As Long: nDiv2 = n \ 2
Dim i As Long: i = i1
Do While i < nDiv2
Dim K As Long: K = 2 * i + 1
If K + 1 < n Then
If C.Item(Index(K)) < C.Item(Index(K + 1)) Then K = K + 1
End If
If C.Item(Index(i)) >= C.Item(Index(K)) Then Exit Do
Exchange Index, i, K
i = K
Loop
End Sub
Private Sub Exchange(Index() As Long, ByVal i As Long, ByVal j As Long)
Dim Temp As Long: Temp = Index(i)
Index(i) = Index(j)
Index(j) = Temp
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Neo.balastik : c'est toi qui a fait le code (et les commentaires en anglais) ??
Mis à part que mon code ne tri qu'alphabétiquement (et non numériquement), il prend 3 fois moins de lignes et il supprime les doublons.
ggcourtois : comme te l'a dit PCPT, il faut faire l'extraction des fichiers contenus dans le zip, ensuite ouvre Prjet Doublons.vbp et dans Fichier : 'Créer Projet Doublons.EXE' (t'inquiète pas, une DLL s'affichera à la 1ère exécution)