Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TDon(), TPlan(), LMax As Long, L As Long, C As Integer, DateRéf As Date, CFin As Integer
If Target.Column <> 1 And Target.Column <> 5 And Intersect([Date], Target) Is Nothing Then Exit Sub
TDon = [A7:E7].Resize([A1000000].End(xlUp).Row - 6).Value
LMax = UBound(TDon, 1)
DateRéf = [Date].Value - 1
ReDim TPlan(1 To 200, 1 To 75)
For L = 1 To 200: For C = 1 To 75: TPlan(L, C) = Chr$(160): Next C, L
For L = 1 To LMax
C = TDon(L, 4) - DateRéf
If C >= 1 And C <= 75 Then TPlan(L, C) = TDon(L, 1)
If IsEmpty(TDon(L, 5)) Then CFin = 75 Else CFin = TDon(L, 5) - DateRéf: If CFin > 75 Then CFin = 75
Do While C < CFin: C = C + 1: TPlan(L, C) = Empty: Loop
Next L
Application.EnableEvents = False
[G7].Resize(200, 75).Value = TPlan
Application.EnableEvents = True
End Sub