Re, bonjour BsLav ,,
Ma petite version...
Le code dans module1:
Sub CopierCollerUnique()
Dim F, P, i&
Const Feuilles = "Feuil1/Feuil2/Feuil4" ' les feuilles contenant les plages à copier
Const Plages = "c2:c9/c2:c10/a1:a17" ' les plages à copier au sein de chaque feuille
Dim destination As Range, xrgDest As Range
' initialisation
Application.ScreenUpdating = False
Set destination = Sheets("Feuil3").Range("d5") ' la feuille et cellule de destination
F = Split(Feuilles, "/"): P = Split(Plages, "/") ' les tableaux des feuilles et des plages
' effacer ou non la zone résultat (suivant ce que désire le demandeur")
rep = MsgBox("voulez-vous d'abord effacer la plage de destination ?", vbQuestion + vbYesNo + vbDefaultButton2)
If rep = vbYes Then Range(destination, destination.EntireColumn.Cells(Rows.Count, 1)).Clear
' copies
For i = 0 To UBound(F)
' xrgDest est la cellule de destination
Set xrgDest = destination.EntireColumn.Cells(Rows.Count, 1).End(xlUp)
If xrgDest.Row < destination.Row Then Set xrgDest = destination Else Set xrgDest = xrgDest.Offset(1)
Sheets(F(i)).Range(P(i)).Copy xrgDest ' copie
Next i
' supprimer les doublons sur la feuille résultat
Set xrgDest = destination.EntireColumn.Cells(Rows.Count, 1).End(xlUp) ' plage résultat
' suppression des doublons
If xrgDest.Row > destination.Row Then Range(destination, xrgDest).RemoveDuplicates Columns:=1, Header:=xlNo
Application.Goto destination.Parent.Range("a1"), True
End Sub