Surligner les lignes d'un tableau suivant des valeurs de cellules

Bonjour à tous,

Je cherche à créer une petite macro qui surlignerait en jaune des lignes selon les valeurs de plusieurs cellules et en rouge selon d'autre valeurs de ces mêmes cellules.

Voici ce que j'ai déjà écrit :

Sub Surligner()

Dim i As Integer

For i = 2 To xlDown

  If Cells(i, 14) = 1 And Cells(i, 21) > 0 Or Cells(i, 22) > 0 Then

    Rows("i").Interior.ColorIndex = vbYellow

  Else
   If Cells(i, 14) = 1 And Cells(i, 21) = 0 And Cells(i, 22) = 0 Then

    Rows("i").Interior.ColorIndex = vbRed

End If
End If

Next i

End Sub

J'ai un message d'erreur disant erreur definit par l'application ou l'objet.

Je viens de débuter en autodidacte sur vba. Je galère pas mal mais c'est intéressant :)

Merci pour votre aide

Je pense que le index est en trop

Rows("i").Interior.Color = vbYellow

Quand aux conditions vous pouviez grouper la deuxième partie .

Sub Surligner()
Dim i As Integer
For i = 2 To xlDown

  If Cells(i, 14) = 1 And Cells(i, 21).value + Cells(i, 22).value > 0 Then

    Rows("i").Interior.Color= vbYellow

  Else
   If Cells(i, 14) = 1 And Cells(i, 21).value + Cells(i, 22).value = 0 Then

    Rows("i").Interior.Color= vbRed

End If
End If

Next i

End Sub

Merci pour votre réponse rapide.

Ok j'ai bien compris pour grouper.

Par contre, le index en trop je ne comprends pas.

Bonjour,

xldown est une constante; or il doit être égal à l'indice de fin de tableau

il faut dès lors rajouter une déclaration pour avoir une variable interne à la procédure.

Le début du code devrait ressembler un peu à ça (en partant du principe qu'il y ait plus au moins une ligne de données et que la colonne A soit toujours renseignée.

Sub Surligner() 
Dim i As Long 
Dim j As Long 
j = cells(1,1).end(XlDown).Row
For i = 2 To j
....

Merci pour votre réponse rapide.

Ok j'ai bien compris pour grouper.

Par contre, le index en trop je ne comprends pas.

'Votre code :
Rows("i").Interior.ColorIndex = vbYellow

'Mon code :
Rows("i").Interior.Color= vbYellow

'vous le voyez maintenant le Index ? 

Par ailleurs, tout a fait d'accord avec le début de code de WonderAleph que je salue au passage

Et partant du même principe il serait préférable en connaissant la longeur du tableau de colorer uniquement une plage de cellule

plutôt que la ligne complète.

Bonjour,

Merci à tous ça marche :)

je mets ci-dessous le code final utilisé :

Sub Surligner()
Dim i As Long
Dim j As Long
j = Cells(1, 1).End(xlDown).Row
For i = 2 To j
  If Cells(i, 14) = 1 And Cells(i, 21) > 0 Or Cells(i, 22) > 0 Then
    Rows(i).Interior.Color = vbYellow
  Else
   If Cells(i, 14) = 1 And Cells(i, 21) = 0 And Cells(i, 22) = 0 Then
    Rows(i).Interior.Color = vbRed
End If
End If
Next i
MsgBox "Lignes surlignées"
End Sub

Je n'ai pas groupé le "Or" comme recommandé car cela ne fonctionnait pas.

L'important c'est d'arriver à ses fins

Rechercher des sujets similaires à "surligner lignes tableau suivant valeurs"