Private Sub Worksheet_Change(ByVal Target As Range)
Dim n&
If FilterMode Then ShowAllData 'si la feuille est filtrée
Application.EnableEvents = False
n = Int(Abs(Val(CStr([C3]))))
[C3] = IIf(n, n, "")
With [E8:J8] 'à adapter
If n Then
.Cells(1).Resize(n) = "=MAX(R1C:R[-1]C)+1"
.Cells(1, 2).Resize(n) = "=IF(RC[-1]=1," & [C2].Address(ReferenceStyle:=xlR1C1) & ",R[-1]C[4])"
.Cells(1, 3).Resize(n) = "=RC[-1]*" & [C4].Address(ReferenceStyle:=xlR1C1)
.Cells(1, 4).Resize(n) = "=RC[1]-RC[-1]"
.Cells(1, 5).Resize(n) = "=" & [C6].Address(ReferenceStyle:=xlR1C1)
.Cells(1, 6).Resize(n) = "=RC[-4]-RC[-2]"
.Resize(n).Borders.Weight = xlThin 'bordures
End If
.Offset(n).Resize(Rows.Count - n - .Row + 1).Delete xlUp 'RAZ en dessous
End With
Application.EnableEvents = True
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub