Re,
Une nouvelle proposition.
Cdlt.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lo As ListObject, Cell As Range, rng As Range, Dict As Object
If Target.Address = "$I$2" Then
Set lo = Me.ListObjects("T_Données")
Me.Cells(15).Value = ""
With lo
If .ShowAutoFilter Then .AutoFilter.ShowAllData
If IsEmpty(Target) Then Exit Sub
.Range.AutoFilter Field:=9, Criteria1:=Target.Value
.Range.AutoFilter Field:=7, Criteria1:="=*@*"
With .AutoFilter.Range
On Error Resume Next
Set rng = .Offset(1, 6).Resize(.Rows.Count - 1, 1) _
.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
End With
End With
If rng Is Nothing Then Exit Sub
Set Dict = CreateObject("Scripting.Dictionary")
For Each Cell In rng
Dict(Cell.Value) = Cell.Value
Next Cell
Me.Cells(15).Value = Join(Dict.Items, ";")
End If
End Sub