Changer couleur cellule en fonction du resultat

Bonjour,

Via VBA je souhaite modifier la couleur d'une cellule en fonction du résultat sous forme de text

Si la cellule affiche "Montant accepté" elle passe au vert

Si la cellule affiche "Montant refusé" elle passe au rouge

Voila ce que j'ai compilé :

Function Couleur_de_réponse()

If Range("D4") = "Montant accepté" Then
Range("D4").Interior.Color = RGB(260, 200, 300)
Else
If Range("D4") = "Montant refusé" Then
Range("D4").Interior.Color = RGB(230, 120, 120)
End If
End If

End Function

Cela fonctionne presque ; je m'explique. Lorsque je change le montant du prêt, en fonction de certains paramètres, la réponse de l'établissement change ; Montant refusé ou accepté. Mon code couleur ne change pas automatiquement, si dans cet exemple je change le montant du prêt pour qu'il passe à Montant accepté, la case restera rouge, mais si je vais dans le compilateur et que je clique sur Play, la case change alors de couleur. Il faut que j'actualise en quelques sortes pour que la couleur change.

Avez vous une idée ??

Merci !

image

Bonjour,

Quel est l'intérêt de faire ceci par VBA ?

Les mises en forme conditionnelles d'Excel servent à cela et s'adapteront beaucoup mieux qu'en VBA. Parce qu'effectivement pour que ta fonction se mette à jour, il faudra la déclencher à un certain événement qui se produit sur ta feuille.

Sauf peut-être si tu mets "application.volatile" avant ton 1er IF. Cela permettrait que ça se recalcule automatiquement au moindre changement dans tes cellules. Mais même comme ça, je ne pense pas que ça soit meilleur qu'une MFC.

Merci pour votre réponse,

L’intérêt n'est que purement scolaire, montrer ses connaissances. Je connais les MFC, mais je pensais qu'avec VBA c'était aussi possible.

Function Couleur_de_réponse()
Application.Volatile
If Range("D4") = "Montant accepté" Then
Range("D4").Interior.Color = RGB(260, 200, 300)
Else
If Range("D4") = "Montant refusé" Then
Range("D4").Interior.Color = RGB(230, 120, 120)
End If
End If

End Function

Malheureusement ce process ne fonctionne toujours pas, peut-être erreur de syntaxe de ma part ?

Bonjour Hugobr,

La case D4 contient du texte brut ou une formule qui renvoie un texte ?

Sinon mettre la case sous fond vert et par MFC (texte spécifique contenant Refusé) ne passer au rouge que si Refusé.

Bonjour,

D4 contient une formule qui renvoie du texte

Sinon par MFC avec une formule de type :

=SI(D4="Montant refusé";1;0)

et

=SI(D4="Montant accepté";1;0)

J'arrive à changer la couleur, cela fonctionne bien

Mais sous VBA impossible

Suite,

Passe par la MFC que je t'ai laissé, cela te facilitera la réponse.

On utilise VBA que si les formules ou besoins ne sont pas possibles autrement. Ou si cela ajoute une rapidité de traitement.

Là, il n' y a pas besoin.

Pas besoin de SI dans les MFC. Tu es déjà dans un module de mise en forme "conditionnelle", la condition est implicite.

=D4="Montant refusé"

Ou même pas besoin de formule, tu as une MFC prédéfinie avec égal.

Pour ce qui est de ta mise en couleur, je n'aurais pas fait une fonction, mais une Sub classique. Mais je ne suis pas spécialiste.

A nouveau,

Voici l'exemple:

a220205

En D4 il y a la formule =si(E4=1;"Montant Refusé";"Montant Accepté").

En E4 une valeur 0 ou 1.

Et la MFC avec sa règle ciblant D4

Bonjour à tous,

Lorsque je change le montant du prêt, en fonction de certains paramètres, la réponse de l'établissement change ; Montant refusé ou accepté.

Comme te l'a fait remarquer JoyeuxNoel (), il faudrait utiliser un évènement de ta feuille pour provoquer le changement de couleur.

L’intérêt n'est que purement scolaire, montrer ses connaissances. Je connais les MFC, mais je pensais qu'avec VBA c'était aussi possible.


Une façon de faire.....

Exemple, tu changes la valeur en A1....Si valeur<=1000, accepté, sinon refusé.

38classeur1.xlsm (16.25 Ko)

Cordialement,

Bonsoir,

Merci pour vos réponses

@xorsankukai finalement ma réponse à un message précédent est fausse, "Montant accepté" ou refusé ne vient pas d'une formule comme toi mais d'un programme VBA, du coup lorsque j'essaie d’intégrer ton code dans mon fichier, cela ne fonctionne pas

Aurais-tu la solution ?

A nouveau,

Alors dans la partie code de la feuille, utiliser l'évènement Worksheet_Change ciblant la cellule C4. Apparemment celle au dessus de la réponse accepté ou refusé.

C'est à dire que c'est au changement du montant du prêt qu'il faudra appliquer ton code VBA couleur.

Bonjour à tous,

@xorsankukai finalement ma réponse à un message précédent est fausse, "Montant accepté" ou refusé ne vient pas d'une formule comme toi mais d'un programme VBA, du coup lorsque j'essaie d’intégrer ton code dans mon fichier, cela ne fonctionne pas

D'où l'importance de joindre un fichier représentatif....et sans données confidentielles...

X Cellus t'as mis sur la voie...

Cordialement,

Effectivement oui, en l'occurence, rien de confidentiel dans ce document ;

Alors je pense avoir compris mais je suis incapable de coder ça ;

Dans Feuil1 qui contient donc mon visuel

Private Sub Woksheet_change(ByVal Target As Range)
If "C4 change" Then

Function Couleur_de_réponse()

If Range("D4") = "Montant accepté" Then
Range("D4").Interior.Color = RGB(260, 200, 300)
Else
If Range("D4") = "Montant refusé" Then
Range("D4").Interior.Color = RGB(230, 120, 120)
End If
End If

End Function

282.xlsm (35.63 Ko)

End Sub

"Cet évènement est déclenché lorsque le contenu d'une cellule est modifiée dans la feuille."

Donc lorsque C4 est modifiée (ici c'est donc Target), je peux mettre mon code VBA qui permet de changer la couleur ?

Seulement comment coder le fait que la cellule change ?

Bonjour à tous,

Un essai....avec l'évènement CALCULATE....

37hugobr.xlsm (35.36 Ko)

Cordialement,

Salut tout le monde,

Quand j'ai vu ça dans le classeur, j'ai été impressionné. Je me suis dit que je n'aurais jamais imaginé un truc comme ceci fonctionner ... Et puis bon en fait ce n'est pas cette fonction qui calcule tout, ouf :)

Function montantpret()
    Dim n As Double
        If 0 < n <= 70000 Then
            D4 = "Montant accepté"
        Else
            D4 = "Montant refusé"
        End If

End Function
Rechercher des sujets similaires à "changer couleur fonction resultat"