[COLOR=blue]Sub[/COLOR] Recuperer()
[COLOR=blue]Dim[/COLOR] d [COLOR=blue]As Object[/COLOR], i [COLOR=blue]As Long[/COLOR], txt [COLOR=blue]As String[/COLOR]
[COLOR=blue]Set[/COLOR] d = CreateObject("Scripting.Dictionary")
[COLOR=blue]With[/COLOR] Sheets("Feuil1")
[COLOR=blue]For[/COLOR] i = 3 [COLOR=blue]To[/COLOR] .[H65536].End(xlUp).Row
txt = .Cells(i, "H") & Chr(1) & .Cells(i, "Q")
[COLOR=blue]If Not[/COLOR] d.Exists(txt) [COLOR=blue]Then[/COLOR] d.Add txt, txt
[COLOR=blue]Next[/COLOR]
[COLOR=blue]End With[/COLOR]
[COLOR=blue]With[/COLOR] Sheets("Feuil2")
[COLOR=blue]For[/COLOR] i = 2 [COLOR=blue]To[/COLOR] .[F65536].End(xlUp).Row
txt = .Cells(i, "F") & Chr(1) & .Cells(i, "M")
[COLOR=blue]If Not[/COLOR] d.Exists(txt) [COLOR=blue]Then[/COLOR] d.Add txt, txt
[COLOR=blue]Next[/COLOR]
[COLOR=blue]End With[/COLOR]
temp = d.items
[COLOR=blue]Call[/COLOR] tri(temp, [COLOR=blue]LBound[/COLOR](temp), [COLOR=blue]UBound[/COLOR](temp))
[COLOR=blue]With[/COLOR] Sheets("Feuil3")
Application.DisplayAlerts = [COLOR=blue]False[/COLOR]
i = .[A65536].End(xlUp).Row + 1
.Cells(i, "A").Resize(d.Count) = Application.Transpose(temp)
.Cells(i, "A").Resize(d.Count).TextToColumns Destination:=.Cells(i, "A"), DataType:=xlDelimited, _
Other:=True, OtherChar:=Chr(1)
[COLOR=blue]End With[/COLOR]
[COLOR=blue]End Sub[/COLOR]
[COLOR=blue]Sub[/COLOR] tri(a, gauc, droi)[COLOR=green] ' Quick sort[/COLOR]
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
[COLOR=blue]Do[/COLOR]
[COLOR=blue]Do While[/COLOR] a(g) < ref: g = g + 1: [COLOR=blue]Loop[/COLOR]
[COLOR=blue]Do While[/COLOR] ref < a(d): d = d - 1: [COLOR=blue]Loop[/COLOR]
[COLOR=blue]If[/COLOR] g <= d [COLOR=blue]Then[/COLOR]
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
[COLOR=blue]End If[/COLOR]
[COLOR=blue]Loop While[/COLOR] g <= d
[COLOR=blue]If[/COLOR] g < droi [COLOR=blue]Then Call[/COLOR] tri(a, g, droi)
[COLOR=blue]If[/COLOR] gauc < d [COLOR=blue]Then Call[/COLOR] tri(a, gauc, d)
[COLOR=blue]End Sub[/COLOR]