Coloriser des lignes suivant un critère

Résolu/Fermé
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 - 11 août 2021 à 10:34
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 - 11 août 2021 à 12:47
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 14408 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 5 mai 2024 2 704
11 août 2021 à 12:07
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 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10
11 août 2021 à 12:19
Merci je vais mettre en place.

bien cordialement
0
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10
11 août 2021 à 12:41
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 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10
11 août 2021 à 12:47
j'ai trouvé la solution en ajoutant : Dim maxligne As Variant
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
11 août 2021 à 10:43
0
mijean94 Messages postés 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10
11 août 2021 à 10:50
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 11 août 2021 à 11:45
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 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
Modifié le 11 août 2021 à 12:00
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 4312 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 11 mai 2024 1 407
11 août 2021 à 12:15
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 394 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 8 novembre 2021 10
11 août 2021 à 12:20
Merci pour l'aide, je vais tester aussi cette solution.

bien cordialement
0