OVH Cloud OVH Cloud

Trier un tableau...

2 réponses
Avatar
Yvan
Bonjour,

J'utilise la macro suivante pour insérer une liste d'éléments dans un Listbox.

Dim C As Range
Dim Tbl2 As New Collection
Dim i As Integer

On Error Resume Next
For Each C In Plage
If Not IsError(C) Then
If C <> "" Then Tbl2.Add C.Value, CStr(C.Value)
End If
Next C
On Error GoTo 0

With QuelList2
.Clear
For i = 1 To Tbl2.Count
.AddItem Tbl2(i)
Next i
.ListIndex = 0
End With

Je souhaite que la liste d'éléments ainsi créée apparaisse triée par ordre
alphabétique. Comment faire ???

--
Merci pour vos réponses.

2 réponses

Avatar
michdenis
Bonjour Yvan,

si cela t'intéresse, voici un exemple sur la manière d'utiliser ADO (activex data objets 2.x lilbrairy) pour remplir des combobox,
empêcher les doublons et trier la liste par ordre croissant.

Pour utiliser cet exemple, vous devez avoir la référence "Microsoft Activex Data Objects 2.x" disponible et accessible par le
classeur

http://cjoint.com/?iBsTCrw53o


Salutations!






"Yvan" a écrit dans le message de news:
Bonjour,

J'utilise la macro suivante pour insérer une liste d'éléments dans un Listbox.

Dim C As Range
Dim Tbl2 As New Collection
Dim i As Integer

On Error Resume Next
For Each C In Plage
If Not IsError(C) Then
If C <> "" Then Tbl2.Add C.Value, CStr(C.Value)
End If
Next C
On Error GoTo 0

With QuelList2
.Clear
For i = 1 To Tbl2.Count
.AddItem Tbl2(i)
Next i
.ListIndex = 0
End With

Je souhaite que la liste d'éléments ainsi créée apparaisse triée par ordre
alphabétique. Comment faire ???

--
Merci pour vos réponses.
Avatar
michdenis
Bonjour Yvan,

Une façon de terminer ta procédure :
Nom de la feuille à adapter...

'-------------------------------
Sub InitialerUneListBox()

Dim MyArray()
Dim C As Range
Dim Tbl2 As New Collection
Dim i As Integer

On Error Resume Next
With Worksheets("Feuil1")
For Each C In Range("Plage")
If Not IsError(C) Then
If C <> "" Then Tbl2.Add C.Value, CStr(C.Value)
End If
On Error GoTo 0
Next
ReDim MyArray(0 To Tbl2.Count)
For A = 1 To Tbl2.Count
MyArray(A - 1) = Tbl2(A)
Next
BubbleSort MyArray
.ComboBox1.List = MyArray
End With

End Sub
'-------------------------------
Sub BubbleSort(List())
Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer
Dim Temp

First = LBound(List)
Last = UBound(List)
For i = First To Last - 1
For j = i + 1 To Last
If List(i) > List(j) Then
Temp = List(j)
List(j) = List(i)
List(i) = Temp
End If
Next j
Next i
End Sub
'-------------------------------


Salutations!



"Yvan" a écrit dans le message de news:
Bonjour,

J'utilise la macro suivante pour insérer une liste d'éléments dans un Listbox.

Dim C As Range
Dim Tbl2 As New Collection
Dim i As Integer

On Error Resume Next
For Each C In Plage
If Not IsError(C) Then
If C <> "" Then Tbl2.Add C.Value, CStr(C.Value)
End If
Next C
On Error GoTo 0

With QuelList2
.Clear
For i = 1 To Tbl2.Count
.AddItem Tbl2(i)
Next i
.ListIndex = 0
End With

Je souhaite que la liste d'éléments ainsi créée apparaisse triée par ordre
alphabétique. Comment faire ???

--
Merci pour vos réponses.