VBA : code pour colorer les cellules

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



6 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
la_fouine_du_13 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
toutes les lignes de la colonne E?
2
la_fouine_du_13 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
la_fouine_du_13 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
ç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
la_fouine_du_13 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
si la valeur = A couleur 28
si la valeur = B couleur 45
si case vide pas de coloration
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
exactement, et est ce que ça te convient?
sinon, il te faut expliquer plus précisément ce que tu veux
0
la_fouine_du_13 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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
la_fouine_du_13 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
ç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