Voici une autre façon de procéder :
Sub testTi()
Dim plageSource As Range, PlageDest As Range
With Worksheets("Feuil2")
Set plageSource = Union(.Range("A1"), .Range("B1"), .Range("D1"), .Range("F1"), .Range("I1"))
End With
With Worksheets("Feuil1")
Set PlageDest = Union(.Range("A12"), .Range("B12"), .Range("D12"), .Range("F12"), .Range("I12"))
End With
PlageDest.Value = plageSource.Value
End Sub
Avantage : si dans un programme tu dois effectuer plusieurs fois cette opération de copie, alors tu initialises au départ ta plage source et ta plage de destination. Tu peux faire ça au début du programme dans une procédure d'initialisation dédiée. Ensuite, chaque fois que, dans le reste du programme, tu veux copier tes valeurs, il te suffit d'appeler la ligne
PlageDest.Value = PlageSource.Value
ce qui est alors très rapide.
Evidemment, si c'est pour un copier/coller ponctuel, la façon de faire de Thierry est tout aussi valable, celle-ci ne représentant qu'une des nombreuses variantes qui peuvent exister.