Trier une listbox

Bonjour à tous,

j'essaye d'appliquer un triage par ordre alphabétique d'une de mes listbox;

List_PInvest

qui à cependant deux colonnes. (Prénom et Nom)

Ne sachant pas comment procéder j'ai chercher sur internet et ai trouvé un code pour. (voir ci-dessous)

Cependant, celui ci trie la première colonne à savoir les prénoms et pas les noms.

Hors dans mon cas, je souhaiterais que: ce soit trier sur la 2ème colonne soit les noms et que les prénoms s'adaptent également

 Tri le contenu du ComboBox par ordre alphabétique
    With Sheets("DashBoard").List_PInvest
        For i = 0 To .ListCount - 1
            For j = 0 To .ListCount - 1
                If .List(i) < .List(j) Then

                    strTemp = .List(i)
                    .List(i) = .List(j)
                    .List(j) = strTemp

                End If

            Next j
        Next i
    End With

une idée de comment adapter le code svp?

j'ai essayé avec column(2) list (2) mais rien n'y fait...

merci par avance pour vos conseils

bonne journée

@+

Bonjour,

ci-dessous code proposé

Sub tri_listbox()
    Dim tb_tri()
    Dim clé1_tri As Variant, clé2_tri As Variant
    Dim i1 As Integer, i2 As Integer, j As Integer, c As Integer

    With Sheets("DashBoard").List_PInvest
        'Création d'un tableau dynamique trié par Nom/Prénom
        ReDim tb_tri(.ListCount, .ColumnCount)
        For i1 = 0 To .ListCount - 1
            clé1_tri = .List(i1, 1) & .List(i1, 0)
            j = 0
            For i2 = 0 To .ListCount - 1
                clé2_tri = .List(i2, 1) & .List(i2, 0)
                If clé1_tri >= clé2_tri Then j = j + 1
            Next i2
            For c = 0 To .ColumnCount - 1
                tb_tri(j, c) = .List(i1, c)
            Next c
        Next i1

        'Rechargement Listbox triée
        .ListFillRange = Empty
        .List = tb_tri

    End With

End Sub

Bonjour et merci à vous Thev.

Le code semble correspondre parfaitement à la demande!

cependant le premier résultat est une ligne vide...

et c'est possible dans la la base de donnée du coup comment eviter cette remontée dans la listbox?

Bonjour,

Sans fichier test, difficile de vous répondre.

en fait j'ai mal exposé mon soucis

comment faire pour éviter de faire remonter des cellules vides dans la listbox?

merci par avance

Bonjour,

Une petite correction à apporter au code (If clé1_tri > clé2_tri) :

Sub tri_listbox()
    Dim tb_tri()
    Dim clé1_tri As Variant, clé2_tri As Variant
    Dim i1 As Integer, i2 As Integer, j As Integer, c As Integer

    With Sheets("DashBoard").List_PInvest
        'Création d'un tableau dynamique trié par Nom/Prénom
        ReDim tb_tri(.ListCount, .ColumnCount)
        For i1 = 0 To .ListCount - 1
            clé1_tri = .List(i1, 1) & .List(i1, 0)
            j = 0
            For i2 = 0 To .ListCount - 1
                clé2_tri = .List(i2, 1) & .List(i2, 0)
                If clé1_tri > clé2_tri Then j = j + 1
            Next i2
            For c = 0 To .ColumnCount - 1
                tb_tri(j, c) = .List(i1, c)
            Next c
        Next i1

        'Rechargement Listbox triée
        .ListFillRange = Empty
        .List = tb_tri

    End With

End Sub

ah bah merci car j’avais tenté plusieurs choses entre temps sans résultats.

Merci à vous et bonne soirée

Rechercher des sujets similaires à "trier listbox"