Microsoft 365 Fonction si et couleur texte, vert ou rouge suivant résultat

laplayast

XLDnaute Occasionnel
Bonjour,
Je souhaiterai utiliser la fonction si, et pas la forme conditionnelle. Donc couleur du texte en vert ou rouge suivant résultat cellules.
Je joint un fichier.

Merci pour l'aide
 

Pièces jointes

  • texte vert ou rouge avec fonction si..xlsx
    10.2 KB · Affichages: 12
Solution
Bonjour,
Une formule ne changera pas la couleur d'une cellule (texte, fond . . .). Il faut passer pas la mise en forme conditionnelle.
1713884549328.png

job75

XLDnaute Barbatruc
Bonjour laplayast, piga25,
C'est une solution que je connais, mais je souhaite passer sans Forme conditionnelle
Dans ce cas il faut utiliser le VBA, voyez cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim borne1, borne2, plage As Range, mini, maxi, c As Range
borne1 = [C4]
borne2 = [D4]
Set plage = Range("F5:F" & Rows.Count)
Application.ScreenUpdating = False
plage.Interior.ColorIndex = xlNone 'RAZ
If Not IsNumeric(CStr(borne1)) Or Not IsNumeric(CStr(borne2)) Then Exit Sub
mini = Application.Min(borne1, borne2)
maxi = Application.Max(borne1, borne2)
On Error Resume Next 'si aucune SpecialCell
For Each c In plage.SpecialCells(xlCellTypeConstants, 1) 'constantes numériques
    c.Interior.Color = IIf(c >= mini And c <= maxi, vbGreen, vbRed)
Next
End Sub
Elle se déclenche quand on modifie ou valide une cellule quelconque.

A+
 

Pièces jointes

  • texte vert ou rouge avec fonction si..xlsm
    17.2 KB · Affichages: 13

Dudu2

XLDnaute Barbatruc
Bonjour,
En fonction personnalisée...
VB:
'---------------------------------------------------------------
'Couleur du texte en cellule dont la formule appelle la fonction
'Exemple: ="Bonjour" & CouleurTexte(255;0;0) -> texte en rouge
'---------------------------------------------------------------
Function CouleurTexte(ByVal R As Integer, ByVal G As Integer, ByVal B As Integer)
   Application.Caller.Font.Color = RGB(R, G, B)
End Function
Ça ne fonctionne que pour la Font.Color. Rien à faire pour l'Interior.Color !
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Ce que je fais habituellement pour qu'une fonction personnalisée puisse changer autre chose que la valeur de la cellule qui l'invoque, c'est de lui faire enregistrer une consigne sous forme d'Array dans une Collection Private de ThisWorkbook au moyen d'une Public Sub de ce module faite pour ça. Dans ce même module ThisWorkbook, une Private Sub SheetCalculate prend le 1er élément Array, le supprime de la collection et applique les changements, tant que son Count > 0.
 

Dudu2

XLDnaute Barbatruc
A noter qu'on peut changer à la fois la valeur et la Font.Color / Font.ColorIndex (voir Post #5) d'une cellule dans une fonction personnalisée sans avoir recours à un artifice quelconque.

Alors pour d'autres propriétés de la cellule, j'ai fait un peu la même chose avec une Collection mais en utilisant le Timer. Ça a l'air beaucoup plus stable (Copier/Coller).

1714150918905.png
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Une solution avec un format personnalisé : [Rouge][<5]0;[Vert][<=8]0;[Rouge]0

On peut aussi utiliser l'index des 56 couleurs prédéfinies dans Excel. Pour le classeur v1a, on utilise le vert d'indice 10 : [Rouge][<5]0;[Couleur10][<=8]0;[Rouge]0
 

Pièces jointes

  • laplayast- texte vert ou rouge- v1..xlsx
    9.1 KB · Affichages: 3
  • laplayast- texte vert ou rouge- v1a..xlsx
    9.1 KB · Affichages: 2
Dernière édition:

Discussions similaires

Réponses
34
Affichages
1 K

Statistiques des forums

Discussions
315 093
Messages
2 116 120
Membres
112 666
dernier inscrit
Coco0505