Sub Liste()
Dim source As Range, exclu As Range, dest As Range, t1, t2
Dim d1 As Object, d2 As Object, t, rest(), a, b, i&
'---initialisation---
Set source = [D6]: Set exclu = [J6]: Set dest = [G6] 'à adapter
t1 = Range(exclu, Cells(Rows.Count, exclu.Column).End(xlUp)(exclu.Row + 1))
t2 = Range(source, Cells(Rows.Count, source.Column).End(xlUp)(source.Row + 1))
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
'---liste des exclus sans doublons (comprend le texte vide)---
For Each t In t1
d1(t) = ""
Next
'---liste sans exclus et sans doublons---
For Each t In t2
If Not d1.exists(t) Then d2(t) = d2(t) + 1
Next
If d2.Count Then
'---transposition---
ReDim rest(d2.Count - 1, 1) 'base 0
a = d2.items: b = d2.keys
For i = 0 To UBound(a)
rest(i, 0) = a(i): rest(i, 1) = b(i)
Next
'---restitution et tri---
dest.Resize(i, 2) = rest
dest.Resize(i, 2).Sort dest(, 2), xlAscending, Header:=xlNo
End If
dest.Offset(i).Resize(Rows.Count - dest.Row - i + 1, 2).ClearContents
End Sub