tri ds listbox - source des donnes ds + de 2 feuilles

gpasdechance

XLDnaute Nouveau
Bonjour le forum,


je remets un fil car mon precedent ne faisait pas reference a ce probleme de tri.
Je cherche a faire un tri ds la listbox reportee ds le file attache.
La listbox va chercher les infos ds 3 feuilles differents (col B).
Ca marche bien sauf le tri. Le tri avec des infos sur 3 feuilles, je sais pas faire

J`ai des exemples de tri si l`info est ds une feuille mais pas si l`info est sur 2 feuilles ou plus :p

Merci de votre aide car je plante

gpasdechance
 

Pièces jointes

  • tri.zip
    12.7 KB · Affichages: 21
  • tri.zip
    12.7 KB · Affichages: 21
  • tri.zip
    12.7 KB · Affichages: 25

skoobi

XLDnaute Barbatruc
Re : tri ds listbox - source des donnes ds + de 2 feuilles

Bonjour gpasdechance,

ajout en gras:
Code:
Private Sub UserForm_Initialize()
Dim data As New Collection
Dim sh, el
Dim c As Range
[B]Dim i As Variant, j As Variant, temp1 As Variant, temp2 As Variant[/B]

For Each sh In Array("S1", "S2", "S3")
    With Sheets(sh)
        On Error Resume Next
        For Each c In .Range("b2:b" & .Range("b65536").End(xlUp).Row)
            data.Add c, CStr(c)
        Next c
        On Error GoTo 0
    End With
Next sh
[B]For i = 1 To data.Count - 1
        For j = i + 1 To data.Count
            If data(i) > data(j) Then
                temp1 = data(i)
                temp2 = data(j)
                data.Add temp1, before:=j
                data.Add temp2, before:=i
                data.Remove i + 1
                data.Remove j + 1
            End If
        Next j
Next i[/B]
For Each el In data
    ListBox1.AddItem el
Next el


End Sub

Voilà:)
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : tri ds listbox - source des donnes ds + de 2 feuilles

Bonsoir,

Les collections deviennent lentes lorsque le nb d'items devient important.
L'objet Dictionary est beaucoup + rapide.

Objet dictionary

La méthode de tri Quick Sort est également beaucoup + rapide

Sub Dictionnaire()
t = Timer
Set MonDico = CreateObject("Scripting.Dictionary")
n = 2000
For i = 1 To n
aléa = Int(Rnd * 10000)
If Not MonDico.Exists(aléa) Then MonDico.Add aléa, aléa
Next i
temp = MonDico.items
MsgBox Timer - t
Call tri(temp, LBound(temp), UBound(temp))
Application.ScreenUpdating = False
For i = LBound(temp) To UBound(temp): Cells(20 + i, 2) = temp(i): Next
End Sub

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

JB
 

gpasdechance

XLDnaute Nouveau
Re : tri ds listbox - source des donnes ds + de 2 feuilles

Bonjour BOISGONTIER, skoobie, Pierre Jean et le forum

merci pour votre aide.
J`ai essaye les methodes de skoobie et pierre Jean.
Ca mache super.
je vais essayer ta methode BOISGONTIER.

Merci a vous. Ca m`aide vraiment.


bon WE a vous
gpasdechance
 

Discussions similaires

Statistiques des forums

Discussions
312 500
Messages
2 089 013
Membres
104 004
dernier inscrit
mista