Private Sub Worksheet_Change(ByVal Target As Range)
Dim designation, plage As Range, ref, t, ncol%, i&, flag As Boolean, j%
designation = [B14:B28] 'matrice
Set plage = [C14:Y28] 'Range
ref = [C29:Y29] 'matrice
t = plage 'matrice
ncol = UBound(t, 2)
For i = 1 To UBound(designation)
If designation(i, 1) <> 0 Then
flag = False
For j = ncol To 1 Step -1
If t(i, j) <> "" Then flag = True Else If flag Then t(i, j) = ref(1, j)
Next
End If
Next
Application.EnableEvents = False: plage = t: Application.EnableEvents = True
End Sub