Coloriser des lignes suivant un critère

Résolu
mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   -  
mijean94 Messages postés 413 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

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    1. mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   11
       
      Merci je vais mettre en place.

      bien cordialement
      0
    2. mijean94 Messages postés 413 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
    3. mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   11
       
      j'ai trouvé la solution en ajoutant : Dim maxligne As Variant
      0
  2. mijean94 Messages postés 413 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
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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
      1. mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   11 > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        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
  3. PapyLuc51 Messages postés 4569 Date d'inscription   Statut Membre Dernière intervention   1 512
     
    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
    1. mijean94 Messages postés 413 Date d'inscription   Statut Membre Dernière intervention   11
       
      Merci pour l'aide, je vais tester aussi cette solution.

      bien cordialement
      0