Rebonjour...
Pour répondre à mon "idée" sur ta question, réalisation dans la même feuille (sans copie de feuille), sans copier, sans coller, sans sélectionner...
Sub Test()
Dim cc(), c As Range, n%, i%
With ActiveSheet
If .AutoFilterMode Then
If Not .FilterMode Then GoTo nonfiltre
Else
GoTo nonfiltre
End If
n = .Cells(.Rows.Count, 1).End(xlUp).Row
With .Range("A2:A" & n)
ReDim cc(1 To .SpecialCells(xlCellTypeVisible).Count, 1 To 2)
For Each c In .SpecialCells(xlCellTypeVisible)
i = i + 1
cc(i, 1) = c.Value
cc(i, 2) = c.Offset(, 1).Value
Next c
End With
Application.ScreenUpdating = False
.ShowAllData
.Range("H1:I" & n).ClearContents
.Range("H1").Resize(UBound(cc, 1), 2).Value = cc
Application.ScreenUpdating = True
End With
Exit Sub
nonfiltre:
MsgBox "Données non filtrées : procédure sans objet !", vbExclamation, "Flitrage absent"
End Sub
On vérifie en plus que tu as bien filtré (sinon pas de raison de fatiguer VBA ! ) et on efface l'action précédente (utile au moins pour tester), et tu bénéficies d'une procédure indentée, lisible sans effort !
Cordialement.