VBA : mise en forme conditionnelle

Signaler
Messages postés
8
Date d'inscription
mercredi 6 juin 2012
Statut
Membre
Dernière intervention
28 février 2013
-
Messages postés
30
Date d'inscription
mercredi 23 mai 2012
Statut
Membre
Dernière intervention
13 août 2012
-
Bonjour !
je veux colorer les cellules de la colonne D selon la valeur dedans (vide pas de couleur, 1 couleur 28 ; 2 = couleur 45)

mais je n'y arrive pas je suis perdue, ce code colore selon la valeur de la dernière cellule et pas selon la valeur de chaque cellule

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 "1": Range(col & li).Interior.ColorIndex = 28
      Case "2": Range(col & li).Interior.ColorIndex = 45
    End Select
    
  End If
  
Next li



End Sub

3 réponses

Messages postés
1
Date d'inscription
vendredi 2 juillet 2004
Statut
Membre
Dernière intervention
6 juin 2012

Simplement la valeur v pointe sur la dernière cellule

Voici le script qui marche :
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
v = Range(col & li).Value
Select Case v
Case "1": Range(col & li).Interior.ColorIndex = 28
Case "2": Range(col & li).Interior.ColorIndex = 45
End Select

'End If

Next li

End Sub
Messages postés
172
Date d'inscription
jeudi 8 décembre 2011
Statut
Membre
Dernière intervention
21 juillet 2013
2
Bonjour ! Normal vu que ton v est calculé avan' la boucle !!

De plus pas besoin de ce v, faire directement le Select Case sur ton Range(col & li) ...

J'utiliserais plutôt un cells(li,4) que ton Range.
___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
Messages postés
30
Date d'inscription
mercredi 23 mai 2012
Statut
Membre
Dernière intervention
13 août 2012

Surtout que c'est Range("").Value dans ce cas il me semble

Dim fin As Long
Dim li As Long
Dim v

const col = "D"

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

For li = 1 To fin

If Cells(li,4).Value = "1" Then
Range(Cells(li,4).Address(RowAbsolute:=False, ColumnAbsolute:=False)).Interior.ColorIndex =28
End If
If Cells(li,4).Value = "2" Then
Range(Cells(li,4).Address(RowAbsolute:=False, ColumnAbsolute:=False)).Interior.ColorIndex =45
End If


Next li