Bonjour Le Forum,
Je me suis beaucoup inspiré d'un code de Boisgontier pour établir mon code ci-dessous. En faite j'ai juste modifié les plages sélectionné et le nom des label !
Pour résumer, un userform est lancé et je dois sélectionner une valeur s'affichant dans une list box.
La list box est composé de deux colonnes et ce code doit permettre de trier soit la colone "DPT" ou "LVILLE" sachant que quand je lance le tri, j'obtiens :
Erreur 9
L'indice n'appartient pas à la sélection
et cette ligne spécialement est mise en surbrilance
ref = a((gauc + droi) \ 2, colTri)
Je ne sais pas si avec seulement le code vous allez pouvoir faire quelque chose,
Peux t-on m'expliquer pk les variable Nbcol et coltri ne sont pas défini ?
Peux être cela viendrait de là ?
Je suis largué !
Je me suis beaucoup inspiré d'un code de Boisgontier pour établir mon code ci-dessous. En faite j'ai juste modifié les plages sélectionné et le nom des label !
Pour résumer, un userform est lancé et je dois sélectionner une valeur s'affichant dans une list box.
La list box est composé de deux colonnes et ce code doit permettre de trier soit la colone "DPT" ou "LVILLE" sachant que quand je lance le tri, j'obtiens :
Erreur 9
L'indice n'appartient pas à la sélection
et cette ligne spécialement est mise en surbrilance
ref = a((gauc + droi) \ 2, colTri)
Code:
Private Sub UserForm_Initialize()
With Sheets("matrice")
Me.ListBox1.List = .Range("B12:C" & .[c65000].End(xlUp).Row).Value
End With
End Sub
Private Sub lville_Click()
Dim a()
a = Me.ListBox1.List
NbCol = UBound(a, 1) - LBound(a, 1) + 1
Call tri(a(), LBound(a), UBound(a), NbCol, 1)
Me.ListBox1.List = a
Me.lville.ForeColor = vbRed
Me.dpt.ForeColor = vbBlack
End Sub
Private Sub dpt_Click()
Dim a()
a = Me.ListBox1.List
NbCol = UBound(a, 2) - LBound(a, 2) + 1
Call tri(a(), LBound(a), UBound(a), NbCol, 2)
Me.ListBox1.List = a
Me.lville.ForeColor = vbRed
Me.dpt.ForeColor = vbGreen
End Sub
Sub tri(a(), gauc, droi, NbCol, colTri) ' Quick sort
ref = a((gauc + droi) \ 2, colTri) ' ICI cette ligne
g = gauc: d = droi
Do
Do While a(g, colTri) < ref: g = g + 1: Loop
Do While ref < a(d, colTri): d = d - 1: Loop
If g <= d Then
For c = 0 To NbCol - 1
temp = a(g, c): a(g, c) = a(d, c): a(d, c) = temp
Next
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi, NbCol, colTri)
If gauc < d Then Call tri(a, gauc, d, NbCol, colTri)
End Sub
Je ne sais pas si avec seulement le code vous allez pouvoir faire quelque chose,
Peux t-on m'expliquer pk les variable Nbcol et coltri ne sont pas défini ?
Peux être cela viendrait de là ?
Je suis largué !