Trier une listbox par ordre alphabétique

abraxar_27

XLDnaute Nouveau
Bonjour,
je vous expose mon problème
j'ai une listbox qui est remplie par le code suivant :
Dim LstFeuille As String
LstFeuille = Range("Liste!A2").End(xlDown).Address
' Plage de données pour afficher dans liste déroulante
SelectFeuille3.RowSource = "Liste!A2:" & LstFeuille
' Afficher tous les noms des profils enregistrés
SelectFeuille3.ListIndex = 0
Toutefois j'aimerai que dans la liste qui s'affiche à l'écran tous les noms soient triés dans l'ordre alphabétique car ils ne le sont pas nécessairement dans la feuille où lalistbox va chercher les données...
j'espère que vous pourrez m'éclairer..:rolleyes:
 

abraxar_27

XLDnaute Nouveau
Re : Trier une listbox par ordre alphabétique

Eh bien justement.. j'ai regardé ce qui avait déjà été demandé et je n'ai malheureusement pas trouvé de réponse me convenant. en effet, les codes ne marchent pas chez moi.. c'est pourquoi je demande de l'aide!
 

Spitnolan08

XLDnaute Barbatruc
Re : Trier une listbox par ordre alphabétique

Re,

Il n'est pas possible que tu n'aies pas trouvé la réponse à ta question car cette dernière a déjà été traitée à de multiples reprises...

Cependant, si tu rencontres un problème d'adaptation, cela signifie qu'il faut que tu joignes ton fichier pour que l'on puisse regarder ce qui ne va pas et que tu nous indiques ce qui ne marche pas!

Cordialement
 

abraxar_27

XLDnaute Nouveau
Re : Trier une listbox par ordre alphabétique

D'accord.. il n'y a pas lieu de s'énerver..
je joints un fichier dont l'action correspond à ce que je veux faire.
le code pour le tri par ordre alphabétique est un code que j'ai trouvé sur le forum.
il y a une erreur au moment où la macro doit effectuer le tri..
voilà mon problème..
merci
 

Pièces jointes

  • Classeur1.xls
    32 KB · Affichages: 333
  • Classeur1.xls
    32 KB · Affichages: 352
  • Classeur1.xls
    32 KB · Affichages: 365

Spitnolan08

XLDnaute Barbatruc
Re : Trier une listbox par ordre alphabétique

Re,

Ben voilà...
Code:
Private Sub UserForm_Activate()    
Dim Plage As Range
Dim i As Byte, j As Byte
    Set Plage = Range("A2:A" & Range("Liste!A2").End(xlDown).Row)
    ' Plage de données pour afficher dans liste déroulante
    ListBox1.List = Plage.Value

With ListBox1
    For i = 0 To .ListCount - 1
        For j = 0 To .ListCount - 1
            If UCase(.List(i)) < UCase(.List(j)) Then
                temp = .List(j)
                .List(j) = .List(i)
                .List(i) = temp
            End If
        Next j
    Next i
End With   
End Sub
J'ai inversé le sens du test mais tu peux le laisser comme tu l'avais indiqué car ce qui clochait c'était la comparaison pour une histoire de casse.
Par ailleurs, la propriété Rowsource est à bannir dans un UF.

Cordialement

Edit : pas vu ta réponse avant de poster. Normal c'est en même temps...
 

Discussions similaires

Statistiques des forums

Discussions
312 547
Messages
2 089 490
Membres
104 185
dernier inscrit
Daniel RONNA