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 :
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 !)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Balises Code et /Code ajoutées par ouskel'n'or
Partager