bonjour Wassim,
Private Sub Worksheet_Change(ByVal Target As Range)
If [H1] = "" Then Exit Sub
If Target.Count > 1 Then Exit Sub 'plusieurs cellules modifiées = FIN
For Each c In [F1:M20]
If c.DisplayFormat.Interior.ColorIndex = 3 Then temp = temp & "," & c.Address 'toutes les cellules rouges
Next c
If temp = "" Then Exit Sub 'aucune cellule rouge
a = Split(Mid(temp, 2).Address, ",") 'split sur le virgule
p = Application.Match(Target.Address, a, 0) 'position dans le tableau (split= Base 0 !)
If IsNumeric(p) Then Application.Goto Range(a(p Mod (UBound(a) + 1))) 'si c'est une cellule rouge, la cellule suivante ou la première
End Sub