Re re,
D'abord une simplification de mon code précédent :
Sub VerrouillageCouleur()
ActiveSheet.Unprotect
For Each c In Range("A1:R26")
c.Locked = Not (c.Interior.ColorIndex = 36)
Next c
ActiveSheet.Protect
End Sub
C'est une astuce que j'avais vue sur un poste de Ti il n'y a pas très longtemps. Merci à lui.
Pour ce qui est de l'utilisation en dynamique, il n'y a effectivement pas d'évènement déclenché par le fait de changer une couleur de cellule, ce qui est fort dommage mon cher Billou (Lol !). Il faudrait donc déclencher cette macro sur des évènements comme :
Worksheet_Change
Worksheet_SelectionChange
Worksheet_Calculate
La seule contrainte, c'est qu'on est obligé de parcourir toute la plage à chaque fois car on ne sait pas quelle(s) cellule(s) a ou ont changé de couleur. Dans ton exemple ce n'est pas gênant mais si tu as des grandes plages à parcourir, ça peut devenir embêtant en termes de temps de réponse. Si tu veux quand même l'utiliser tu places le code ci-dessus dans un module standard. Puis tu appelles VerrouillageCouleur dans un (ou plusieurs si tu veux) des Sub Worksheet_xxxxxx que je citais.
Voilà. Maintenant peut-être que quelqu'un d'autre a une solution plus élégante.
Bon dimanche.
José