Option Explicit
Sub copier()
'Déclaration des variables
Dim x As String, myfichier As Variant
Dim i As Byte
'Bloque le rafraichissement écran
Application.ScreenUpdating = False
'With pour regrouper plusieurs actions sur le fichier de départ (celui-ci qui contient la macro)
With ThisWorkbook
'Ajoute les noms myplage1234 faisant référence aux cellules à copier
.Names.Add Name:="myplage1", RefersTo:="=" & ActiveSheet.Name & "!" & "$C$8:$C$10044"
.Names.Add Name:="myplage2", RefersTo:="=" & ActiveSheet.Name & "!" & "$F$8:$F$10044"
.Names.Add Name:="myplage3", RefersTo:="=" & ActiveSheet.Name & "!" & "$G$8:$G$10044"
.Names.Add Name:="myplage4", RefersTo:="=" & ActiveSheet.Name & "!" & "$I$8:$I$10044"
End With
'prend la valeur du fichier sélectionné
myfichier = Application.GetOpenFilename("Fichier Excel,*.xls")
'si fichier sélectionné l'ouvre
If myfichier <> False Then Workbooks.Open myfichier
'Note le nom du fichier ouvert
x = ActiveWorkbook.Name
'Boucle de 1 à 4
For i = 1 To 4
'Active le fichier de départ
ThisWorkbook.Activate
'Copie la première plage
Range("myplage" & i).Copy
'Active le second fichier
Windows(x).Activate
'Sélectionne la cellule d'accueil
Cells(2, i).Select
'Colle
ActiveSheet.Paste
'Vide le presse papier
Application.CutCopyMode = False
Next i
'Réactive le rafraichissement écran
Application.ScreenUpdating = True
End Sub