Trier alphabetiquement les objets d'une collection

ggcourtois Messages postés 6 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 28 novembre 2008 - 18 juin 2006 à 18:54
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 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

7 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
18 juin 2006 à 19:23
Salut, un p'tit coup de pub,

Prend ma source : http://www.vbfrance.com/codes/TRIEUR-DOUBLONS_38162.aspx

C'est un trieur de doublons (et alphabétique. ne fonctionne pas en tri numérique.)

Je viens juste de régler le problème (dans ma source, c'est la collection 'NoDupes' qui trie => bien commenté, tu ne devrais pas avoir de problème).

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
ggcourtois Messages postés 6 Date d'inscription jeudi 2 février 2006 Statut Membre Dernière intervention 28 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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
18 juin 2006 à 23:29
salut,
rien de bizarre, les zip sont détruits lors de l'upload.
tu as posté dans VB6, c'est que tu as VB6.... il faut ouvrir le projet.vbp
++
0
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juin 2006 à 14:39
742

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)


















@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>


  Mortalino 





Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le 
règlement
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
19 juin 2006 à 16:14
"les zip sont détruits"
beh on est pas rendu...
il fallait évidemment lire "les exe sont supprimés des zip"
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
19 juin 2006 à 17:23
T'inquiète, si on m'avait détruit tout le zip, tu serais certainement un des premiers que j'avertirai.
Faut bien embêter les Admins un peu...

En espérant que ggcourtois ne galère pas.
De tout façon je ne mets pas d'exe.

@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype>  Mortalino 

Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
0
Rejoignez-nous