Tri dans Listbox Plusieurs Plages

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
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
 
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))
..
....
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

C
Réponses
1
Affichages
1 K
Cattleya97
C
M
Réponses
2
Affichages
855
M
V
Réponses
3
Affichages
1 K
voldemort
V
Réponses
12
Affichages
4 K
application
A
Retour