Coloriser des lignes suivant un critère

Résolu
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   -  
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Ce que j'aimerais réaliser en vba :

J’ai un tableau avec des données sur x lignes (dans l’exemple 1 à 4 ).
Je souhaite coloriser chaque ligne une fois en blanc l’autre fois en grisé en fonction du critère de la colonne E si celle-ci change de valeur, uniquement les colonnes A à E par exemple.


A B C D E
1 Rouge vert bleu noire violer
2 Violet rose gris violet rouge
3 vert marron jaune rouge rouge
4 gris jaune noir rose vert


Pour le tableau ci-dessous le résultat serait :

Ligne 1 : blanc
Ligne 2 : grisée
Ligne 3 : grisée
Ligne 4 : blanc
Et ainsi de suite …

Merci par avance de votre aide.

Bien cordialement

4 réponses

via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 746
 
Bonjour

A adapter :
Public col As Integer

Sub colorer()
col = 2
maxligne = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row 'dernière ligne remplie

For n = 2 To maxligne
    If Range("E" & n) <> Range("E" & n - 1) Then
    If col = 2 Then col = 15 Else col = 2 '2 est code couleur excel pour blanc et 15 pour gris
    End If
Range("A" & n & ":E" & n).Interior.ColorIndex = col
Next

End Sub

Cdlmnt
Via
1
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   11
 
Merci je vais mettre en place.

bien cordialement
0
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   11
 
j'ai un petit pb que je ne comprend pas.

lorsque je lance la procédure elle bloque sur maxligne : variable non définie ?

merci de l'aide

bien cordialement
0
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   11
 
j'ai trouvé la solution en ajoutant : Dim maxligne As Variant
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
0
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   11
 
Bonjour,

Merci pour cette réponse.

dans mon la colorisation n'est jamais la même fonction du critère de la colonne E

il faut par exemple 8 lignes blanches, 1 ligne gris, puis 4 lignes blanches, et 2 lignes grises cela change. de plus mon programme est protégé en VBA après un traitement de mise en forme lignes et colonnes, mais je ne trouve pas la solution pour ajouter la colorisation en vba, le pourquoi de ma question.

Bien cordialement
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Voir ceci:

https://www.excel-pratique.com/fr/vba/couleurs

https://www.excel-pratique.com/fr/vba/liste-couleurs-rgb

A adapter:

Sub couleur()
Dim j As Long
For j = 1 To Range("A65000").End(xlUp).Row 'boucle colonne A
If Cells(j, 5).Value = "rouge" Then 'colonne E
'Rows(j & ":" & j).Interior.Color = RGB(224, 224, 255) 'a adapter
Rows(j & ":" & j).Interior.Color = 14540253  'a adapter
End If
Next j
End Sub



Voilà
0
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   11 > cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention  
 
Merci pour cette réponse,

j'ai l'impression que je n'ai pas bien expliqué mon problème ou je ne comprend pas bien le code.

le changement de couleur dépend du changement de désignation dans la colonne E , ( il est limité à x colonnes) mais ça peut-être n'importe quoi dans la cellule E, une date un nom qui ce suit au minimum deux ou x fois donc les lignes restent de la même couleur, grisées ou blanc suivant celle d'avant.

et la procédure s'arrête lorsque la case en E est vide.

bien cordialement
0
PapyLuc51 Messages postés 4519 Date d'inscription   Statut Membre Dernière intervention   1 486
 
Salutations à tous,

Si j'ai bien compris, inutile pour le blanc si le fond est déjà blanc

Pour le gris 2 MFC ; une qui concerne uniquement la ligne 1 et une autre pour les autres lignes

ligne 1
=ET($E1<>"";$E1=$E2)


autres lignes
=ET($E2<>"";OU($E2=$E3;NB.SI($E1:$E2;$E2)=2))


https://www.cjoint.com/c/KHlkkhtpR7S

Cordialement
0
mijean94 Messages postés 415 Date d'inscription   Statut Membre Dernière intervention   11
 
Merci pour l'aide, je vais tester aussi cette solution.

bien cordialement
0