XL 2019 Choisir la couleur avec une formule (pas de mise en forme conditionnelle)

Martini

XLDnaute Junior
D23 est calculé avec des valeurs réelles
D24 et suivantes sont la dernière valeur connue (puisque B24 est vide)
La formule en D24 :
Code:
=SI(B24="";D23;(B24-B23)/B23)


Est-ce que je peux choisir la couleur (de la cellule ou du texte) à partir de valeur_si_vrai ou valeur_si_faux ?
 

Pièces jointes

  • Coronavirus.xlsx
    44.7 KB · Affichages: 6

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Martini

Les gestes barrières sont : pas de bisou et pas de poignées de mains.
(Mais un petit bonsoir sur forum: aucun risque de contagion ;))
•> Cf le point 3 de la charte du forum.

Sinon pour ta question: qu'est-ce que tu as contre les MFC?
 
Dernière édition:

Martini

XLDnaute Junior
Bonsoir le fil, Martini

Les gestes barrières sont : pas de bisou et pas de poignées de mains.
(Mais un petit bonsoir sur forum: aucun risque de contagion ;))
•> Cf le point 3 de la charte du forum.
Pardon, j'ai perdu mes bonnes habitudes.
Bonsoir à tous, donc.

Sinon pour ta question: qu'est-ce que tu as contre les MFC?
Je les trouve lourdes à mettre en place et pas transférables facilement d'un classeur à un autre.
En plus, je n'étais pas sûr qu'elles puissent répondre à ma question (colorier une cellule en fonction de la valeur d'une autre) ?


J'espérer pouvoir utiliser [Rouge] comme pour un format de cellule personnalisé
 

Staple1600

XLDnaute Barbatruc
Re, Bonsoir Chris

Qui dit addin, dit VBA, non ?
En parlant de VBA, juste histoire de... ;)
(encore un truc sorti de mes archives anglophones)
A mettre dans un module standard
VB:
Option Explicit
#If VBA7 Then
    Declare PtrSafe Function SetTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr
    Declare PtrSafe Function KillTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr) As Long
    Declare PtrSafe Function GlobalAddAtom Lib "kernel32" Alias "GlobalAddAtomA" (ByVal lpString As String) As Integer
    Declare PtrSafe Function GlobalGetAtomName Lib "kernel32" Alias "GlobalGetAtomNameA" (ByVal nAtom As Integer, ByVal lpBuffer As String, ByVal nSize As Long) As Long
#Else
    Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
    Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
    Declare Function GlobalAddAtom Lib "kernel32" Alias "GlobalAddAtomA" (ByVal lpString As String) As Integer
    Declare Function GlobalGetAtomName Lib "kernel32" Alias "GlobalGetAtomNameA" (ByVal nAtom As Integer, ByVal lpBuffer As String, ByVal nSize As Long) As Long
#End If

Public Function SetColor(ByVal Value As Variant, ByVal BackGroundColor As String) As Variant
     SetTimer Application.hwnd, GlobalAddAtom(Application.Caller.Address(External:=True) & "*" & BackGroundColor), 0, AddressOf ChangeColor
    SetColor = Value
End Function

Sub ChangeColor(ByVal hwnd As Long, ByVal uMsg As Long, ByVal nIDEvent As Long, ByVal dwTimer As Long)
    Dim sBuffer As String, lRet As Long, lColorIndex As Long
 
    On Error Resume Next
    KillTimer hwnd, nIDEvent
    sBuffer = Space(256)
    lRet = GlobalGetAtomName(nIDEvent, sBuffer, Len(sBuffer))
    sBuffer = Left(sBuffer, lRet)
    Select Case UCase(Split(sBuffer, "*")(1))
        Case "YELLOW"
            lColorIndex = 6
        Case "GREEN"
            lColorIndex = 14
        Case "BLUE"
            lColorIndex = 23
        Case "RED"
            lColorIndex = 3
        Case "CYAN"
            lColorIndex = 33
        Case "MAGENTA"
            lColorIndex = 47
        Case "NONE"
            lColorIndex = xlColorIndexNone
    End Select
    Range(Split(sBuffer, "*")(0)).Interior.ColorIndex = lColorIndex
End Sub
Pour tester:
En A1: toto
En B1: test
En C1 la fomule ci-dessous
=(SI(A1="toto";SetColor(B1;"Cyan");SI(A1="titi";SetColor(B1;"Yellow");SetColor("";"None"))))
 

Discussions similaires

Réponses
12
Affichages
209

Statistiques des forums

Discussions
312 202
Messages
2 086 180
Membres
103 152
dernier inscrit
Karibu