VBA : code pour colorer les cellules

Résolu
Bonjour,

J'essaye d'élaborer un code selon la valeur insérée dans la cellule.
Je connais la colonne (E) mais le nombre de ligne est variable
Mon code ne fonctionne pas et je ne trouve aucune solution
Si la valeur est A on a telle couleur et si c'est B c'est une autre couleur

Sub colorer()


Dim fin As Long


fin = Range("E" & Rows.Count).End(xlUp).Row


 Select Case Cells(fin, 5).Value
    Case Is = "A"
    Cells(fin, 5).Interior.ColorIndex = 28
    Case Is = "B"
    Cells(fin, 5).Interior.ColorIndex = 45
    
    

 End Select

End Sub


merci d'avance

--
La chute n'est pas un échec, l'échec est de rester où l'on est tombé

6 réponses

  1. comme çà?

    Const col = "D"
    
    Sub colorer()
    Dim fin As Long, li As Long
    Dim v
    fin = Range(col & Rows.Count).End(xlUp).Row
    v = Range(col & fin).Value
    For li = 1 To fin
      If Range(col & li) <> "" Then
        Select Case v
          Case "A": Range(col & li).Interior.ColorIndex = 28
          Case "B": Range(col & li).Interior.ColorIndex = 45
        End Select
      End If
    Next li
    End Sub
    1. bonjour

      ton code fonctionne très bien
      de la façon suivante (voir ta demande)
      à l'appel de la macro
      si la dernière cellule non vide de la colonne E est "A" couleur bleue
      si la dernière cellule non vide de la colonne E est "B" couleur orange

      bonne suite
      1. je me suis mal exprimée en faite je veux que mon code balaye et colore toutes les lignes et ne colore pas que la dernière alors j'ai élaboré ce code en pensant qu'il s'arrêterait à la dernière ligne mais ça n'exécute pas ce que je souhaite réaliser
    2. toutes les lignes de la colonne E?
      1. oui

        j'avais qu'un objectif en tête c'était de trouver ma dernière ligne mais je veux aussi que selon les valeurs la précédente soit colorée
    3. 1. pour colorer toutes les lignes de la colonne E
      Sub colorer()  
      Dim fin As Long  
      Dim plage As String  
      fin = Range("E" & Rows.Count).End(xlUp).Row  
      plage = "E1:E" & fin  
      Select Case Cells(fin, 5).Value  
        Case "A": Range(plage).Interior.ColorIndex = 28  
        Case "B": Range(plage).Interior.ColorIndex = 45  
      End Select  
      End Sub

      2. pour colorer les deux dernières lignes de la colonne E
      remplcer la définition de la plage par
      plage = "E" & fin - 1 & ":E" & fin

      3. autre ?

      bonne suite
      1. ça me colore toute la colonne sans distinction de case vide pleine avec telle ou telle valeur

        Sub colorer()
        
        Dim fin As Long
        Dim plage As String
        fin = Range("D" & Rows.Count).End(xlUp).Row
        plage = "D1:D" & fin
        
        Select Case Cells(fin, 4).Value
          Case "A": Range(plage).Interior.ColorIndex = 28
        
          
        
          Case "B": Range(plage).Interior.ColorIndex = 45
          
        End Select
        
        End Sub
      2. si la valeur = A couleur 28
        si la valeur = B couleur 45
        si case vide pas de coloration
    4. exactement, et est ce que ça te convient?
      sinon, il te faut expliquer plus précisément ce que tu veux
      1. je l'ai mis dans un bouton VBA mais ça ne marche pas

        Sub colorer()
        
        Dim fin As Long
        Dim li As Long
        Dim v
        
        
        Const col = "D"
        
        
        fin = Range(col & Rows.Count).End(xlUp).Row
        v = Range(col & fin).Value
        For li = 1 To fin
          If Range(col & li) <> "" Then
            Select Case v
              Case "A": Range(col & li).Interior.ColorIndex = 28
              Case "B": Range(col & li).Interior.ColorIndex = 45
            End Select
          End If
        Next li
        
        
        
        End Sub
      2. ça se colore selon la valeur de la dernière cellule moi je veux que ça se colore selon la valeur de chaque cellule si c'est A ça prend telle couleur si c'est B ça prend telle autre couleur
    5. on va finir par y arriver

      Const col = "D"  
      
      Sub colorer()  
      Dim fin As Long, li As Long  
      Dim v  
      fin = Range(col & Rows.Count).End(xlUp).Row  
      For li = 1 To fin  
          v = Range(col & li).Value  
          Select Case v  
            Case "A": Range(col & li).Interior.ColorIndex = 28  
            Case "B": Range(col & li).Interior.ColorIndex = 45  
            Case Else: Range(col & li).Interior.ColorIndex = xlNone  
          End Select  
      Next li  
      End Sub


      RQ. si c'est ce que tu voulais, pas besoin de VBA pour faire ça, une mise en forme conditionnelle suffisait

      bonne suite