Colorer les diagonales d'une plage carrée

Bonjour,

on me demande d'écrire une procédure vba qui quelle que soit la plage carrée de départ, permet de colorer en bleu les diagonales de la plage et en rouge les autres cellules.

voici le code que j'ai créé :

Sub exercice_3()
Plage = InputBox("Précisez une Plage carrée")
j = Range(Plage).Rows.Count
Range(Plage).Select
For i = 1 To j
Selection.Cells(i, j).Interior.Color = vbBlue
Next i
For k = 0 To j - 1
Selection.Cells(j, 1).Offset(-k, k).Interior.Color = vbBlue
Next k
'For i=0 to j -1
'Selection.Cells(1, 1).Offset(i, i).Interior.Color = vbBlue
'Selection.cells(j,1).offset(-i,i).interior.color=VbBlue
'Next i
For Each cellule In Selection.Cells
If cellule.Interior.Color <> vbBlue Then
cellule.Interior.Color = vbRed
End If
Next cellule
End Sub

voici ce qui est affiché lorsque j’exécute le code pour la plage carrée B2:J10 :

fnietz7

le problème c'est que la colonne J2:J10 est entièrement colorée en blue et moi j'ai besoin que seulement la cellule J2 soit colorée en blue et le reste J3:J10 en rouge.

je vous remercie d'avance

Bonjour,

fais en pas à pas avec F8 pour visualiser ce que fait ton programme.

Tu devrais trouver la partie fautive facilement.

Pour éviter ta dernière boucle tu pourrais colorer tout en rouge au départ, plus que le bleu à mettre

eric

Bon, je suppose que tu as résolu tes pb.

Maintenant prend le temps de réfléchir et d'analyser ton problème :

2019 04 16 00 20 30

Ca ne t'inspire rien pour améliorer ?

En 1 boucle par exemple

eric

merci,

j'essaye encore de trouver une solution.

je n'ai pas vraiment pu trouvé la solution.

re,

en faite j'ai trouvé la solution, j'ai remplacé :

For i = 1 To j
Selection.Cells(i, j).Interior.Color = vbBlue
Next i

par :

i = 1
Selection.Cells(i, j).Interior.Color = vbBlue

et ça a marché.

le code devient ainsi :

Sub exercice_3()
Plage = InputBox("Précisez une Plage carrée")
j = Range(Plage).Rows.Count
Range(Plage).Select
i = 1
Selection.Cells(i, j).Interior.Color = vbBlue
For k = 0 To j - 1
Selection.Cells(j, 1).Offset(-k, k).Interior.Color = vbBlue
Next k
For Each cellule In Selection.Cells
If cellule.Interior.Color <> vbBlue Then
cellule.Interior.Color = vbRed
End If
Next cellule
End Sub

merci infiniment pour votre indication

Il manque une diagonale...

oui je me suis rendu compte, mais du coup je sais pas comment l'ajouter, une indication ?

en fait voilà mon code final :

Plage = InputBox("Précisez une Plage carrée")
j = Range(Plage).Rows.Count
Range(Plage).Select
i = 1
Selection.Cells(i, j).Interior.Color = vbBlue
For n = 0 To j - 1
Selection.Cells(j, 1).Offset(-n, n).Interior.Color = vbBlue
Next n
For Each cellule In Selection.Cells
If cellule.Interior.Color <> vbBlue Then
cellule.Interior.Color = vbRed
End If
Next cellule
For i = 1 To j
Cells(i, i).Interior.Color = vbBlue
Next i
End Sub

le code a finalement marché et les deux diagonales sont colorées en bleu.

merci

bonjour à tous

= SI(n°decolonne + n°deligne = 2 * nombredecolonnes ; 1 ; "")

ajouter ou bien si (n°decolonne = n°deligne)

hghtiyub

puis mettre une MFC sur la valeur 1

amitiés

Rechercher des sujets similaires à "colorer diagonales plage carree"