Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim deb As Range, pas&, ncol, nom$, tablo(), i&, j%, t
Set deb = [A3] 'adaptable
pas = 13 'adaptable
ncol = 3 'colonnes A:C, adaptable
If Intersect(Target, deb) Is Nothing Then Exit Sub
Cancel = True
If deb = "" Then MsgBox deb.Address(0, 0) & " doit être renseignée...": Exit Sub
If MsgBox("Les lignes " & deb.Row + 1 & ":" & deb.Row + pas - 1 & _
" vont être collées en A" & deb.Row + pas + 1 & " A" & deb.Row + 2 * pas + 1 & " etc...", 52, "Copier") = 7 Then Exit Sub
Application.DisplayAlerts = False 'si les liens ne mènent nulle part
'---adaptation éventuelle des liens au nom en deb---
nom = Application.Proper(deb)
Application.EnableEvents = False 'désactive les évènements
deb(2).Resize(pas - 1, ncol).Replace "[*.xls", "[" & nom & ".xls", xlPart
Application.EnableEvents = True 'réactive les évènements
'---remplissage du tableau source---
ReDim tablo(1 To pas - 1, 1 To ncol)
For i = 1 To pas - 1
For j = 1 To ncol
If j = 1 Or deb(i + 1, j).HasFormula Then _
tablo(i, j) = IIf(deb(i + 1, j).Formula Like "*]01*", deb(i + 1, j).Formula, deb(i + 1, j).FormulaR1C1)
Next j, i
'---copie vers le bas---
While deb <> "" 'la boucle s'arrête s'il n'y a pas de nom
t = tablo
For i = 1 To pas - 1
t(i, ncol) = Replace(tablo(i, ncol), "[" & nom, "[" & Application.Proper(deb))
Next i
deb(2).Resize(pas - 1, ncol) = t 'lance la Worksheet_Change
Application.ScreenUpdating = True 'pour voir tout de suite le résultat
DoEvents
Set deb = deb.Offset(pas) 'incrémentation
Wend
End Sub