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 :

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
J'ai du oublier quelque chose mais là j'en suis au point de m'arracher les cheveux.D'avance merci de votre aide.