[VBA] Problème de FormatConditions

Le
HD
Bonjour,

J'ai une première condition qui s'applique sur toutes les cellules d'une
feuille qui m'affiche les cellules non protégées en intérieur jaune.

Je voudrais une deuxième condition qui m'affiche les caractères des
cellules d'une plage données en orange lorsque la valeur dans celles ci
est négative mon souci est que lorsque j'applique la condition j'ai
alors toutes les cellules non protégées de la feuille qui sont en
caractères oranges.

Cells.Select
Selection.FormatConditions.Delete

Selection.FormatConditions.Add Type:=xlExpression,
Formula1:="ÎLLULE(""protege"";A1)=0"
Selection.FormatConditions(1).Interior.ColorIndex = 36

Range("J14:J20").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess,
Formula1:="=0"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).Font.ColorIndex = 46

Je voudrais que les valeurs de la plage J14:J20 soit bien en caractères
de couleur orange si inférieure à 0 ET avoir en couleur de fond
d'intérieur des cellules du jaune pour les cellules non protégées.

Je dois louper quelque chose

Merci d'avance pour votre aide.

Cordialement,

@+
HD
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
DanielCo
Le #26376767
Bonjour,
Quelle est ta version d'Excel ?
Cordialement.
Daniel
Le 09/11/2015, HD a supposé :
Bonjour,

J'ai une première condition qui s'applique sur toutes les cellules d'une
feuille qui m'affiche les cellules non protégées en intérieur jaune.

Je voudrais une deuxième condition qui m'affiche les caractères des cellules
d'une plage données en orange lorsque la valeur dans celles ci est
négative... mon souci est que lorsque j'applique la condition j'ai alors
toutes les cellules non protégées de la feuille qui sont en caractères
oranges.

Cells.Select
Selection.FormatConditions.Delete

Selection.FormatConditions.Add Type:=xlExpression,
Formula1:="ÎLLULE(""protege"";A1)=0"
Selection.FormatConditions(1).Interior.ColorIndex = 36

Range("J14:J20").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess,
Formula1:="=0"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).Font.ColorIndex = 46

Je voudrais que les valeurs de la plage J14:J20 soit bien en caractères de
couleur orange si inférieure à 0 ET avoir en couleur de fond d'intérieur des
cellules du jaune pour les cellules non protégées.

Je dois louper quelque chose...

Merci d'avance pour votre aide.

Cordialement,

@+
HD
MichD
Le #26376855
Bonjour,

A ) Tu vas ralentir l'exécution de ton classeur si tu appliques
une mise en forme conditionnelle sur toutes les cellules d'une feuille de calcul.
Pourquoi ne pas te limiter de A1 à la dernière cellule de la feuille.

Exemple comment procéder pour définir cette plage :
'-----------------------------------------------------------
Sub test1()
Dim DerLig As Long, DerCol As Integer, Rg As Long

With Worksheets("feuil1")
'donne la dernière ligne occupée
'soit par une valeur ou une formule
DerLig = .Cells.Find("*", LookIn:=xlFormulas, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

'donne la dernière colonne occupée
'soit par une valeur ou une formule
DerCol = .Cells.Find("*", LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

'Variable Range représentant la plage de cellules occupées
Set Rg = .Range("A1", .Cells(DerLig, DerCol))
End With
MsgBox Rg.Address
End Sub
'-----------------------------------------------------------

B ) Au lieu d'utiliser la propriété "ColorIndex", utilise plutôt la propriété "Color"
Tu t'assures que les couleurs seront les mêmes, peu importe l'ordinateur
et les paramètres d'Excel sur cet ordinateur.
Range("a1").Interior.Color = RGB(245, 125, 56)


C ) Quand tu es en VBA, tout est en ANGLAIS.
Ceci doit être traduit en anglais :
Formula1:="ÎLLULE(""protege"";A1)=0"
PAR :
Formula1:="ÎLL(""protect"",A1)=0"

Voici un exemple de code... Nom de l'onglet de la feuille à adapter
'je n'ai pas testé les conditions...
'--------------------------------------------------------------------
Sub test()

With Worksheets("Feuil1")
With Cells
.FormatConditions.Delete
.FormatConditions.Add Type:=xlFormula, _
Formula1:="ÎLL(""protect"",A1)=0"
.FormatConditions(1).Interior.ColorIndex = 36
End With

With .Range("J14:J20")
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlLess, Formula1:="=0"
.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
.FormatConditions(1).Font.ColorIndex = 46
End With
End With

End Sub
'--------------------------------------------------------------------






"HD" a écrit dans le message de groupe de discussion : n1q8mo$unq$

Bonjour,

J'ai une première condition qui s'applique sur toutes les cellules d'une
feuille qui m'affiche les cellules non protégées en intérieur jaune.

Je voudrais une deuxième condition qui m'affiche les caractères des
cellules d'une plage données en orange lorsque la valeur dans celles ci
est négative... mon souci est que lorsque j'applique la condition j'ai
alors toutes les cellules non protégées de la feuille qui sont en
caractères oranges.

Cells.Select
Selection.FormatConditions.Delete

Selection.FormatConditions.Add Type:=xlExpression,
Formula1:="ÎLLULE(""protege"";A1)=0"
Selection.FormatConditions(1).Interior.ColorIndex = 36

Range("J14:J20").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess,
Formula1:="=0"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).Font.ColorIndex = 46

Je voudrais que les valeurs de la plage J14:J20 soit bien en caractères
de couleur orange si inférieure à 0 ET avoir en couleur de fond
d'intérieur des cellules du jaune pour les cellules non protégées.

Je dois louper quelque chose...

Merci d'avance pour votre aide.

Cordialement,

@+
HD
HD
Le #26378347
Quelle est ta version d'Excel ?



Je suis sous Excel 2007.

@+
HD
HD
Le #26378346
A ) Tu vas ralentir l'exécution de ton classeur si tu appliques
une mise en forme conditionnelle sur toutes les cellules d'une
feuille de calcul.



Merci de ces précieux conseils. Effectivement, en VBA j'avai un peu trop
tendance à appliquer les mises en forme conditionnelle à toutes les
cellules d'une ou de plusieurs feuilles de calcul (avec l'extension xlsb
et donc avec de très grandes quantités de cellules).

B ) Au lieu d'utiliser la propriété "ColorIndex", utilise plutôt la
propriété "Color"
Tu t'assures que les couleurs seront les mêmes, peu importe
l'ordinateur
et les paramètres d'Excel sur cet ordinateur.



Intéressant à savoir car effectivement il m'est souvent arrivé d'avoir
des couleurs changeantes suivant les postes et les versions d'Excel.

@+
HD
Publicité
Poster une réponse
Anonyme