VBA : code pour colorer les cellules

Résolu/Fermé
la_fouine_du_13 Messages postés 14 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 6 juin 2012 - 5 juin 2012 à 13:49
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 - 6 juin 2012 à 15:14
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
5 juin 2012 à 15:25
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
5 juin 2012 à 14:04
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 mercredi 9 mai 2012 Statut Membre Dernière intervention 6 juin 2012
5 juin 2012 à 14:31
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
5 juin 2012 à 14:32
toutes les lignes de la colonne E?
2
la_fouine_du_13 Messages postés 14 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 6 juin 2012
5 juin 2012 à 14:37
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 5/06/2012 à 14:42
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 mercredi 9 mai 2012 Statut Membre Dernière intervention 6 juin 2012
5 juin 2012 à 15:02
ç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 mercredi 9 mai 2012 Statut Membre Dernière intervention 6 juin 2012
5 juin 2012 à 15:14
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 6/06/2012 à 15:20
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
5 juin 2012 à 15:11
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 mercredi 9 mai 2012 Statut Membre Dernière intervention 6 juin 2012
6 juin 2012 à 13:55
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 mercredi 9 mai 2012 Statut Membre Dernière intervention 6 juin 2012
6 juin 2012 à 14:26
ç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