Bonjour
J'ai un liste de donnée qui s'affiche dans une listbox
Mon code fonction, avec la liste non triée, mais lorsque je veux la trier
à partir d'un bouton, le tri ne fonction pas.
ou est le problème ?
merci d'avance
Le mode standard
J'ai un liste de donnée qui s'affiche dans une listbox
Mon code fonction, avec la liste non triée, mais lorsque je veux la trier
à partir d'un bouton, le tri ne fonction pas.
ou est le problème ?
merci d'avance
Code:
Private Sub UserForm_Activate()
Dim Tb, Ii, Ij
Dim CCle As Integer
Dim TabListBox As Variant
Dim i, j, k, l As Byte
Dim temp As String
'CCle = Val(UsfLignes.CboCle1)
CCle = UsfLignes.Lign
If CCle < 20 Then
Tb = TableClient.Range("A2:C" & TableClient.Range("A" & TableClient.Rows.Count).End(xlUp).Row)
Else
If CCle > 20 And CCle < 40 Then
Tb = TableFournisseur.Range("A2:C" & TableFournisseur.Range("A" & TableFournisseur.Rows.Count).End(xlUp).Row)
Else
Tb = Tablegene.Range("A2:C" & Tablegene.Range("A" & Tablegene.Rows.Count).End(xlUp).Row)
End If
End If
With Me.ListBox1
.ColumnCount = 2
.ColumnWidths = "45;100"
For i = LBound(Tb, 1) To UBound(Tb, 1)
' MAJ 18/01/2014
If Tb(i, 1) = Range("Paramètre!B13") Then
.AddItem Tb(i, 2)
.List(.ListCount - 1, 1) = Tb(i, 3)
j = j + 1
End If
Next i
End With
'MAJ 18/01/2014
'
' Tri le plan des comptes clients
'
'If UsfLignes.CboCle1 <= 39 Then
'TabListBox = ListBox1.List
'For i = 0 To UBound(TabListBox)
' For j = 0 To UBound(TabListBox)
' If TabListBox(i, 1) < TabListBox(j, 1) Then
' For k = 0 To 1
' temp = TabListBox(j, k)
' TabListBox(j, k) = TabListBox(i, k)
' TabListBox(i, k) = temp
' Next k
' End If
' Next j
'Next i
'ListBox1.List() = TabListBox
'Else
'End If
'
' je rajoute l'appel à quicktrisort
'
Call QUICKSORT(t(), loBound(t), upBound(t)) 'Proc récursive
End SubCode:
Public Sub QUICKSORT(t() As Long, _
ByVal loBound As Long, _
ByVal upBound As Long)
Dim med_value As Long
Dim hi As Long
Dim lo As Long
Dim i As Long
If loBound >= upBound Then Exit Sub
i = Int((upBound - loBound + 1) * Rnd + loBound)
med_value = t(i)
t(i) = t(loBound)
lo = loBound
hi = upBound
Do
Do While t(hi) >= med_value
hi = hi - 1
If hi <= lo Then Exit Do
Loop
If hi <= lo Then
t(lo) = med_value
Exit Do
End If
t(lo) = t(hi)
lo = lo + 1
Do While t(lo) < med_value
lo = lo + 1
If lo >= hi Then Exit Do
Loop
If lo >= hi Then
lo = hi
t(hi) = med_value
Exit Do
End If
t(hi) = t(lo)
Loop
' Recursive calls
QUICKSORT t(), loBound, lo - 1
QUICKSORT t(), lo + 1, upBound
End Sub
Aucun commentaire:
Enregistrer un commentaire