normal que ça ne fonctionne que sur la première ligne, et même sur la première colonne, puisque ta macro événementielle ne réagit qu'au changement de la cellule F6. Comme je ne savais pas si tu voulais que ça réagisse à la première ligne de toutes les colonnes ou à toutes les lignes de toutes les colonnes, je t'ai mis 2 versions dans Worksheet_Change. Ainsi :
If Union(Target, Range("F6:GF6")).Address <> "$F$6:$GF$6" Then Exit Sub
ne réagira qu'au changement de la première ligne
'If Union(Target, Range("F6:GF46")).Address <> "$F$6:$GF$46" Then Exit
réagira au changement de toutes les lignes.
Si tu modifies la taille de ton tableau, n'oublie pas d'adapter les plages correspondantes dans cette macro.
Sub Couleur2(Target As Range)
With Target
.Offset(1, 0).Interior.ColorIndex = 0
.Offset(2, 0).Interior.ColorIndex = 0
If .Value = "0,5" Then
If MsgBox("Voulez-vous sélectionner le matin?", vbYesNo) = vbYes Then
.Offset(1, 0).Interior.ColorIndex = 3
Else
.Offset(2, 0).Interior.ColorIndex = 3
End If
Else 'valeur = 1
.Offset(1, 0).Interior.ColorIndex = 3
.Offset(2, 0).Interior.ColorIndex = 3
End If
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Union(Target, Range("F6:GF6")).Address <> "$F$6:$GF$6" Then Exit Sub
'pour que ça fonctionne sur toutes les lignes
'If Union(Target, Range("F6:GF46")).Address <> "$F$6:$GF$46" Then Exit Sub
If Target.Value = "0,5" Then
Couleur2 Target
ElseIf Target.Value = "1" Then
Couleur2 Target
End If
End Sub