Mise en forme conditionnelle sous VBA

baptbapt

XLDnaute Occasionnel
Bonjour

j'aimerais savoir s'il est existe un moyen de mettre sur une colonne, une mise en forme conditionnelle, mais a l'aide d'une fonction VBA

[0-6[ en vert
[6-10[ en orange
[10-..[ en rouge

Merci
 

ERIC S

XLDnaute Barbatruc
Re : Mise en forme conditionnelle sous VBA

Bonjour

pour ce genre de manip pense à l'enregistreur de macro

exemple code généré sur colonne A

Columns("A:A").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="6"
Selection.FormatConditions(1).Interior.ColorIndex = 4
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="10"
Selection.FormatConditions(2).Interior.ColorIndex = 44
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual _
, Formula1:="10"
Selection.FormatConditions(3).Interior.ColorIndex = 3


A adapter

A+
 

abc

XLDnaute Impliqué
Re : Mise en forme conditionnelle sous VBA

Bonjour,
code que j'ai trouvé sur le forum et à adapter suivant tes besoins.
Public Sub VALEURS()
Dim PLAGE As Range
Range("a2").CurrentRegion.Select
Range("E2").CurrentRegion.Select
Range("G2").CurrentRegion.Select
Set PLAGE = ActiveSheet.UsedRange
For Each PLAGE In Selection
Select Case PLAGE.Value
Case Is <= 500
PLAGE.Interior.ColorIndex = 33 'rouge
Selection.Font.Bold = True
Case 501 To 1000
PLAGE.Interior.ColorIndex = 6 'jaune
Case 1001 To 2500
PLAGE.Interior.ColorIndex = 5 'vert
Case 2501 To 5000
PLAGE.Interior.ColorIndex = 7 'magenta
Case Is > 5000
PLAGE.Interior.ColorIndex = 22 'cyan
End Select
Next
End Sub
A +
 

baptbapt

XLDnaute Occasionnel
Re : Mise en forme conditionnelle sous VBA

sa marche par contre il me met les colonnes a coté en vert

je l'ai mis dans ma macros
j'ai selectionné, une colonne L5 a L94
et il me colore aussi K M et N
ti bug?

'Public Sub VALEURS()
Dim PLAGE As Range
'Range("A2").CurrentRegion.Select
'Range("E2").CurrentRegion.Select
Range("L5:L94").CurrentRegion.Select
Set PLAGE = ActiveSheet.UsedRange
For Each PLAGE In Selection
Select Case PLAGE.Value
Case Is < 6
PLAGE.Interior.ColorIndex = 4 'vert
'Selection.Font.Bold = True
Case 6 To 10
PLAGE.Interior.ColorIndex = 44 'jaune
Case Is > 10
PLAGE.Interior.ColorIndex = 3 'rouge
End Select
Next
 

baptbapt

XLDnaute Occasionnel
Re : Mise en forme conditionnelle sous VBA

Encore si j'avais mis de K5:N94, la je comprendrais que sa me prennent une plage complete de valeur

de plus, j'ai remarqué que si je lance

Range("K5:K94").CurrentRegion.Select
Range("L5:L94").CurrentRegion.Select

la première sélection n'est pas prise en comptze, il faut que je reface une macro qui reprend uniquement cette plage de valeur.

C'est a ni plus rien comprendre!
 

baptbapt

XLDnaute Occasionnel
Re : Mise en forme conditionnelle sous VBA

Je pense avoir réglé le problème.

Pour empecher la mise en couleur des colonnes a coté de ma plage de valeurs
je suis obligé de rajouter la ligne

Range("Q5:Q95").Interior.ColorIndex = 0

et la sa marche.

Mais comment faire sans cette condition.
 

ERIC S

XLDnaute Barbatruc
Re : Mise en forme conditionnelle sous VBA

re

pourquoi ne regardes-tu pas du côré de la mise en forme conditionnelle ?

elle correspond plus à ce genre de manip car si tu changes les valeurs, la couleur change automatiquement

A+
 

baptbapt

XLDnaute Occasionnel
Re : Mise en forme conditionnelle sous VBA

Je sais, mais pourquoi le systeme me colori 4 colonnes alors que je ne lui en demande qu'une

je suis obliger de mettre la condition après éxécution, qu'il efface la couleur est i mettant la couleur 0

enfin maintenant sa ressemble quand meme a se que je veu, mais le code lui ne fait pas ce qu'on lui dit
 

ERIC S

XLDnaute Barbatruc
Re : Mise en forme conditionnelle sous VBA

re
essaie le code suivant
pour l'autre code je virerais le currentregion

Range("L5:L94")..Select
currentregion recherche les limites d'une zone (lignes colonnes vides) je crois

sub essai()
Range("L5:L94").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ET(NON(ESTVIDE(C5));C5<6)"
Selection.FormatConditions(1).Interior.ColorIndex = 4
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ET(NON(ESTVIDE(C5));C5<10)"
Selection.FormatConditions(2).Interior.ColorIndex = 44
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual _
, Formula1:="10"
Selection.FormatConditions(3).Interior.ColorIndex = 3
end sub

par contre si ta zone est fixe inutile de le faire par macro (format mise en forme conditionnelle)
 

Lifend

XLDnaute Nouveau
Re : Mise en forme conditionnelle sous VBA

Bonjour,

J'ai un problème à mettre en place une mise en forme conditionelle qui tourne sous VBA.

Voilà ce que je cherche à faire

1) Si une cellule de la colonne J est "Test1" alors peindre la ligne de la cellule en gris
2) Si une cellule de la colonne AO est "test2" alors peindre la ligne de la cellule en vert
Sachant que si sur une même ligne la colonne AO est "test2" et la colonne J est "test1" alors la ligne doit être peinte en gris.

Voilà le code que j'utilise :

Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
For i = 1 To 2000

If Cells(i, 41) = "ü" Then Range("A" & i & ":AO" & i).Interior.Color = 45059

If Cells(i, 10) = "En mémoire" Then Range("A" & i & ":AO" & i).Interior.Color = 5488
If Cells(i, 41) = "" Then Range("A" & i & "AO" & i).Interior.Color = xlNone
Next
End Sub


Ce code marche partiellement. Les couleurs des lignes changent bien quand une cellule prend la valeur de "test1" ou "test2". En revanche, si je supprime "test1" ou "test2", la ligne reste colorée.

Quelqu'un sait comment faire pour annuler la mise en forme conditionelle si je supprime le contenu de la cellule ?

Merci de votre aide !
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 508
Messages
2 089 143
Membres
104 048
dernier inscrit
Noni