Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = 0
If Not Intersect(Target, Range("AQ3:BB65000")) Is Nothing Then
Range(Range("BC3"), Range("BC3").End(xlDown)) = ""
Dim Dico, i As Long, j As Byte
Set Dico = CreateObject("Scripting.Dictionary")
With Worksheets("Feuil1")
For j = 43 To 55 ' pour chaque colonne de AQ à BB
For i = 3 To .Cells(Cells.Rows.Count, j).End(xlUp).Row
Dico(CStr(.Cells(i, j))) = ""
Next
Next
.Cells(3, 55).Resize(Dico.Count, 1) = Application.Transpose(Dico.keys)
End With
Range("BC2:BC65000").Sort Range("BC2"), xlAscending, Header:=xlYes ' trier
End If
Application.ScreenUpdating = -1
End Sub