Bonjour,
Je récupère d'une base une liste d'adresses IP qu'il me faut trier de façon croissante. Le problème est que dans la base elles sont sous forme de string.
Mon idée était de les mettre dans un tableau, le trier en effectuant un test ur le dernier octet de l'adresse converti en entier.
Ca parait simple ! et ben là a chaque fois que je tente une conversion il me sort type incompatible
Voici la fonction de tri tirée de chez Dypso puis adaptée à mon cas :
J'ai du oublier quelque chose mais là j'en suis au point de m'arracher les cheveux.D'avance merci de votre aide.
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 Sub QuickSort(byref vbArray,LB,UB) Dim i Dim j Dim X Dim Y i = LB j = UB X = vbArray((LB + UB) / 2) PosX=InstrRev(X,".") ValX=Right(X,Len(X)-PosX) ValXconv=CInt(ValX) Do While (i <= j) Posi=InstrRev(Tab_ip(i),".") Vali=Right(Tab_ip(i),Len(Tab_ip(i))-Posi) Valiconv=CInt(Vali) Do While (Valiconv < ValXconv And i < UB) i = i + 1 Loop Posj=InstrRev(Tab_ip(j),".") Valj=Right(Tab_ip(j),Len(Tab_ip(j))-Posj) Valjconv=CInt(Valj) Do While (ValXconv < Valjconv And j > LB) j = j - 1 Loop If (i <= j) Then Y = vbArray(i) vbArray(i) = vbArray(j) vbArray(j) = Y i = i + 1 j = j - 1 End If Loop If (LB < j) Then QuickSort vbArray, LB, j If (i < RB) Then QuickSort vbArray, i, RB End Sub
Partager