Re,
Pour la compréhension du fil ... à l'usage d'éventuels futurs visiteurs ...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range
Dim s As Integer
If Target.Count > 1 Then Exit Sub
Set plage = Range("B2:Z34")
If Intersect(Target, plage) Is Nothing Then Exit Sub
s = Application.WorksheetFunction.Sum(Range(Cells(Target.Row, 1), Cells(Target.Row, Target.Column - 1)))
Range(Cells(Target.Row, 28 + s), Cells(Target.Row, 28 + s).Offset(0, Target.Value - 1)).Interior.Color = Cells(1, Target.Column).Interior.Color
End Sub