Sub Copier_Choix()
Dim WshS As Worksheet, WshC As Worksheet, Cible As Range, Choix$, ListeChoix, ListeDonnées, idx As Long
Set WshS = Feuil1 'la feuille Source (ici Feuil1)
On Error Resume Next
Set WshC = Workbooks("Ma_Cible.xlsm").Worksheets(1) 'la feuille cible (ici la 1ère feuille du classeur "Ma_cible")
On Error GoTo 0
If WshC Is Nothing Then MsgBox "Impossible d'accéder à la feuille cible !": Exit Sub
With WshS
Choix = .[Choix] 'la cellule qui contient le choix (ici A1)
ListeChoix = .[ListeChoix] 'la liste des choix possibles (ici C3:C43)
ListeDonnées = .[Données] 'la plage de données (ici D3:BG43)
End With
Set Cible = WshC.[Cible] 'la plage cible
On Error Resume Next
idx = WorksheetFunction.Match(Choix, ListeChoix, 0)
On Error GoTo 0
If idx = 0 Then MsgBox "Sélectionnez d'abord une donnée !": Exit Sub
With WorksheetFunction
Cible.Value = .Transpose(.Index(ListeDonnées, idx, 0))
End With
WshS.[Choix].ClearContents
End Sub