Une zone de liste est transmise, les données sont placées dans un tableau, le tableau est trié puis les données sont replacées dans la zone de liste. La partie qui fonctionne est de remettre les données dans la liste. C'est comme la liste est passée par valeur au lieu de par ref.VBA-Tri des données dans une zone de liste, le tri fonctionne mais les données dans la zone de liste ne sont pas modifiées
Voici le sous-tri qui fait le tri et la ligne de code qui appelle le tri de sous.
Private Sub SortListBox(ByRef LB As MSForms.ListBox)
Dim First As Integer
Dim Last As Integer
Dim NumItems As Integer
Dim i As Integer
Dim j As Integer
Dim Temp As String
Dim TempArray() As Variant
ReDim TempArray(LB.ListCount)
First = LBound(TempArray) ' this works correctly
Last = UBound(TempArray) - 1 ' this works correctly
For i = First To Last
TempArray(i) = LB.List(i) ' this works correctly
Next i
For i = First To Last
For j = i + 1 To Last
If TempArray(i) > TempArray(j) Then
Temp = TempArray(j)
TempArray(j) = TempArray(i)
TempArray(i) = Temp
End If
Next j
Next i ! data is now sorted
LB.Clear ! this doesn't clear the items in the listbox
For i = First To Last
LB.AddItem TempArray(i) ! this doesn't work either
Next i
End Sub
Private Sub InitializeForm()
' There's code here to put data in the list box
Call SortListBox(FieldSelect.CompleteList)
End Sub
Merci pour votre aide.