Private Sub Worksheet_Change(ByVal Target As Range)
Dim n, depart As Range, clasfinal As Range, deb As Range, fin As Range
n = 4 'modifiable
Set depart = [D11:F30] 'à adapter
If Intersect(Target, depart) Is Nothing Then Exit Sub
Set clasfinal = [I11:K30] 'à adapter
Application.ScreenUpdating = False
clasfinal = "" 'RAZ
Set deb = depart(n + 1, 1)
Set fin = depart.Find("*", , xlValues, , xlByRows, xlPrevious)
If Not fin Is Nothing Then If n < fin.Row Then If fin(1 - n).Row >= deb.Row Then _
Range(deb, Intersect(fin(1 - n).EntireRow, depart)).Copy clasfinal(1)
End Sub