[VB6]Tri multi-colonnes sur tableau de structure
Alors là moi j'vous dit ... truc de fou !
En faite voila mon problème, j'ai crée une class en VB6 (avec un module de class) qui gère une liste structuré (ajout, suppression, insertion) et aussi qui gère les tries !!!
J'ai une structure du genre :
Private Type FileStructure
A as String
B as String
C as String
D as String
E as String
F as String
End Type
J'ai crée un tableau de cette structure, qui devient la liste de ma classe auquel j'ai rajouter ensuite des methodes pour la gérer !
Par contre la seule methode que je n'arrive pas a faire c'est du tri sur plusieurs colonne simultanement : c'est a dire que par exemple je veux trié B dans l'ordre alphabetique puis D dans un ordre proprietaire (des mots passent avant d'autres) sans touché a lordre de B etc...
Enfin je sais pas si je me suis fait comprendre mais voila c'est super chaud, j'ai bien avancer, j'arrive a faire des tries mais j'arrive pas a faire un systeme qui me permette en dehors de ma class de dire je veux que tu tri ma liste sur tel et tel colonne, avec tel type de tri, et dans tel ordre !
Sinon voila ma fonction de tri :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| Public Sub TriShellTableau()
Dim Ecart As Long ' Ecart calculé
Dim I As Long ' Compteur de boucle
Dim J As Long ' Variable (temporaire) de travail du compteur
Dim Taille As Long ' Taille du tableau
Dim Permut As Boolean ' Flag de permutation
Dim Iter As Integer ' Nombre de passage en fonction du nombre de colonnes
Dim Tampon As FileStructure ' Tampon pour la permutation d'éléments
For Iter = 1 To 5 ' = nombre de colonne a trier
Taille = UBound(TABLOEXCEL)
Ecart = Taille \ 2
Do While Ecart <> 0
For I = 1 To (Taille - Ecart)
J = I
Permut = True
Do While ((J > 0) And (Permut = True))
Permut = False
If Sort(J, (J + Ecart)) Then
Tampon = TABLOEXCEL(J)
TABLOEXCEL(J) = TABLOEXCEL(J + Ecart) ' interverti les lignes
TABLOEXCEL(J + Ecart) = Tampon
J = J - Ecart
Permut = True
End If
Loop
Next I
Ecart = Ecart \ 2
Loop
Next
End Sub |
TABLOEXCEL représente mon talbeau de structure, et Sort() est une fonction exterieure qui prendra le relai pour les comparaison (c'est elle que je n'arrive pas a faire !)
Balises Code et /Code ajoutées par ouskel'n'or