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

  • Initiateur de la discussion Initiateur de la discussion laplayast
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
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

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 !
 
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.
 
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:
Dernière édition:
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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
34
Affichages
2 K
Retour