Tri dans Listbox Plusieurs Plages

BERRACHED said

XLDnaute Accro
Salut le Forum

j'ai une listbox2 alimenter de quatre(4) plages de la feuille ("Articles") j'y suis arrivé a l'alimenter avec la methode select Case,pour trier les articles ce trouvant dans listbox2 par ordre alphabétique j'ai adapter un code avec groupe de lettre (commandButton) de 26 lettres.

normalement le tri devrait ce faire sur chaque plage selectionner dans listbox2. j'ai fait un essai avec une seul plage ca marche pas.
alors la je coince si quelqu'un a une idée je suis preneur.

Cordialement
 

Pièces jointes

  • Listbox_Cascade.zip
    19.5 KB · Affichages: 60
  • Listbox_Cascade.zip
    19.5 KB · Affichages: 59
  • Listbox_Cascade.zip
    19.5 KB · Affichages: 58

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Tri dans Listbox Plusieurs Plages

Bonjour,

Code:
Private Sub UserForm_Initialize()
 For b = 1 To 26: Set Btn(b).GrLettres = Me("B_" & b): Next b
   With Sheets("Articles")
     .Range("B3:B8").Sort Key1:=.Range("B3"), Order1:=xlAscending
   '-- Liste des noms
   i = 2
   Do While .Cells(i, 1) <> ""
     Me.ListBox2.AddItem .Cells(i, 1)
     i = i + 1
   Loop
   End With
   ListBox1.List = Array("Bureautique", "Informatique", "Papeterie", "Divers")
End Sub

JB
 

skoobi

XLDnaute Barbatruc
Re : Tri dans Listbox Plusieurs Plages

Salut Saïd,

2 choses:

1:

Code:
Private Sub UserForm_Initialize()

 For b = 1 To 26: Set Btn(b).GrLettres = Me("B_" & b): Next b
   Sheets("Articles").Range("B3:B8").Sort Key1:=[COLOR=Blue][B]Sheets("Articles").[/B][/COLOR]Range("B3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
   '-- Liste des noms
   i = 2
   Do While Cells(i, 1) <> ""
     Me.ListBox2.AddItem Cells(i, 1)
     i = i + 1
   Loop
   
ListBox1.List = Array("Bureautique", "Informatique", "Papeterie", "Divers")
End Sub
et dans le module de classe, comme tu alimente la listbox2 par RowSource, il faut le vider de la même manière. De plus, tu as oublié de faire référence à la feuille Articles pour recréer la liste:

Code:
Public WithEvents GrLettres As MSForms.CommandButton
Private Sub GrLettres_Click()
  [COLOR=Blue][B]UserForm2.ListBox2.RowSource = ""[/B][/COLOR]
[COLOR=Blue][B]With Sheets("Articles")[/B][/COLOR]
  For Each c In [COLOR=Blue][B].[/B][/COLOR]Range([B][COLOR=Blue].[/COLOR][/B][B3], [B][COLOR=Blue].[/COLOR][/B][A65000].End(xlUp))
    If Left(c.Value, 1) = GrLettres.Caption Then UserForm2.ListBox2.AddItem c
  Next c
[COLOR=Blue][B]End With[/B][/COLOR]
End Sub
Bonne journée l'ami :)

Edit: bonjour Jacques
 

BERRACHED said

XLDnaute Accro
Re : Tri dans Listbox Plusieurs Plages

Salut,Boisgontier,Skoobi

Merci pour vos réponse je commence a voir un peu clair:) mon souci maintenant c'est de pouvoir appliquer ce tri sur les 3 autres plages.

doit-je faire un select case avec éventuellement des conditions (If) ? comme pour les alimentation. de ce genre : if Listbox1.value = "Bureautique" then est je spécifie la plage
Else
pour la plage suivante

Cordialement
 

skoobi

XLDnaute Barbatruc
Re : Tri dans Listbox Plusieurs Plages

Re,

oui tu peux faire comme ça:

Code:
Select Case Listbox1.Value
Case "Bureautique"
For Each c In .Range(.[B3], .[A65000].End(xlUp))
....
......
..
Case "Informatique"
For Each c In .Range(.[D3], .[E65000].End(xlUp))
..
....
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 501
dernier inscrit
talebafia