C'est normal, ta cellule "Date" détermine le début de ton planning en cellule H7,
Si le début de ton planning change, chaque ligne doit retrouver ses dates par rapport au nouveau planning.
Ou j'ai mal compris ?
Par contre si tu souhaites que la macro se lance a chaque changement de date de début et fin de dispo (colonne 4 et 5) au lieu de la cellule "Date"
Le code doit ressembler à :
Private Sub Worksheet_Change(ByVal Target As Range)
'Lien couleurs => https://www.excel-pratique.com/fr/vba/liste-couleurs-rgb
If Target.Column = 4 Or Target.Column = 5 Or Target = Range("Date") Then
Application.ScreenUpdating = False
Dim DateDepart, DateDebut, DateFin As Date
Dim LigMachine, FinLigMachine, Coul_OK As Integer
Bleu = RGB(0, 0, 255)
Vert = RGB(0, 255, 0)
DateDepart = Format(Range("H7"), "dd/mm/yy") '+27 col
FinLigMachine = Cells(Rows.Count, 1).End(xlUp).Row
For LigMachine = 9 To FinLigMachine
DateDebut = Cells(LigMachine, 4)
DateFin = Cells(LigMachine, 5)
Range("H" & LigMachine & ": AI" & LigMachine).Interior.Pattern = xlNone
For Coul_OK = 0 To 27
With Cells(LigMachine, 8 + Coul_OK)
If DateDebut <= DateAdd("d", Coul_OK, DateDepart) Then
If Cells(LigMachine, 7) = "" Then .Interior.Color = Bleu Else .Interior.Color = Vert
End If
If DateFin < DateAdd("d", Coul_OK, DateDepart) Then
.Interior.Pattern = xlNone
End If
End With
Next Coul_OK
Next LigMachine
Application.ScreenUpdating = True
End If
End Sub