Dim Zones As Range, Plage As Range, Tablo(), TCar() As String, N&, L&
Set Zones = ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible)
Set Zones = Intersect(Zones, ActiveCell.EntireColumn)
For Each Plage In Zones.Areas
If Plage.Rows.Count > 1 Then
Tablo = Plage.Value
ReDim Preserve TCar(1 To N + UBound(Tablo, 1))
For L = 1 To UBound(Tablo, 1): N = N + 1: TCar(N) = "=" & Tablo(L, 1): Next L
Else
N = N + 1: ReDim Preserve TCar(1 To N): TCar(N) = "=" & Plage.Value: End If: Next Plage
With New MSForms.DataObject: .SetText Join(TCar, ","): .PutInClipboard: End With