VBA : code pour colorer les cellules

Résolu
la_fouine_du_13 Messages postés 16 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
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. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    3
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    2
    1. la_fouine_du_13 Messages postés 16 Statut Membre
       
      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
      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    toutes les lignes de la colonne E?
    2
    1. la_fouine_du_13 Messages postés 16 Statut Membre
       
      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
      0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    2
    1. la_fouine_du_13 Messages postés 16 Statut Membre
       
      ç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
      0
    2. la_fouine_du_13 Messages postés 16 Statut Membre
       
      si la valeur = A couleur 28
      si la valeur = B couleur 45
      si case vide pas de coloration
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    2
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    exactement, et est ce que ça te convient?
    sinon, il te faut expliquer plus précisément ce que tu veux
    0
    1. la_fouine_du_13 Messages postés 16 Statut Membre
       
      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
      0
    2. la_fouine_du_13 Messages postés 16 Statut Membre
       
      ç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
      0