Voici le Code :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim iColor As Integer
'// Remarque : ne pas utiliser si vous avez des mises en forme
'// conditionnelles que vous souhaitez conserver
'// On Error reprend si l'utilisateur sélectionne une plage de cellules
On Error Resume Next
iColor = Target.Interior.ColorIndex
'// Laisse On Error ACTIVÉ pour les erreurs de décalage de lignes
If iColor < 0 Then
iColor = 36
Else
iColor = iColor + 1
End If
'// Test nécessaire si la couleur de la police est la même
If iColor = Target.Font.ColorIndex Then iColor = iColor + 1
Cells.FormatConditions.Delete
'// Bande de couleur horizontale
With Range("A" & Target.Row, Target.Address) 'Rows(Target.Row)
.FormatConditions.Add Type:=2, Formula1:="TRUE"
.FormatConditions(1).Interior.ColorIndex = iColor
End With
'// Bande de couleur verticale
With Range(Target.Offset(1 - Target.Row, 0).Address & ":" & _
Target.Offset(-1, 0).Address) 'Rows(Target.Row)
.FormatConditions.Add Type:=2, Formula1:="TRUE"
.FormatConditions(1).Interior.ColorIndex = iColor
End With
End Sub