Bonjour vincent115, Charles Exceller,
Juste au cas où, on peut raccourcir le code de quelques lignes (et son exécution, sans doute, de quelques fractions de secondes). C'est juste parce que je l'avais évoqué hier, que j'y ai jeté un œil neuf (à défaut d'être frais ):
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [D4:D35]) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Set cible = IIf(Target.Row Mod 2, Target.Offset(-1, 0), Target)
Set plg = Union([I4:I35], [N4:N35], [S4:S35])
If cible.Interior.ColorIndex = xlNone Then
equ1 = cible.Value
equ2 = cible.Offset(1, 0).Value
[D4:D35].Interior.ColorIndex = xlNone
plg.Interior.ColorIndex = xlNone
cible.Interior.ColorIndex = 37
cible.Offset(1, 0).Interior.ColorIndex = 44
For Each c In plg
If c = equ1 Then c.Interior.ColorIndex = 37
If c = equ2 Then c.Interior.ColorIndex = 44
Next c
Else
cible.Resize(2, 1).Interior.ColorIndex = xlNone
plg.Interior.ColorIndex = xlNone
End If
Target.Offset(0, 1).Activate
End If
End Sub