Sub TriCouleurs()
Dim nblgn As Byte, new_x As Byte, old_x As Byte, indic As Byte
Dim couleurlignes() As Range, coul() As Long
nblgn = HTABLO([TitreCouleursLignes], 1)
ReDim couleurlignes(nblgn), coul(nblgn)
indic = [C11] 'valeur test
For old_x = 1 To nblgn
'routine de choix
If indic = 4 Then
If old_x < 3 Then
new_x = old_x + 2
Else
new_x = old_x - 2
End If
Else
new_x = old_x
End If
'x = IIf([N11] = 4, IIf(x < 3, x + 2, x - 2), x)
Debug.Print old_x & " " & new_x 'pour débuggage (s'affiche dans fenêtre d'exécution CTRL+G)
'on inscrit ensuite dans couleurlignes en suivant l'ordre 1 2 3 4 ... les couleurs des cellules de rang 3 4 1 2 si indic vaut 4 ou de rang standard sinon, grâce à offset(new_x,0)
Set couleurlignes(old_x) = [TitreCouleursLignes].Offset(new_x, 0)
Cells(12 + old_x, 3).Interior.Color = couleurlignes(old_x).Interior.Color
Next
'Autre possibilité : inscrire les couleurs après la boucle For, réalisable dans une autre boucle pour automatisation
'[c13].Interior.Color = couleurlignes(1).Interior.color
'[c14].Interior.Color = couleurlignes(2).Interior.color
'[c15].Interior.Color = couleurlignes(3).Interior.color
'[c16].Interior.Color = couleurlignes(4).Interior.color
End Sub