Modifier la couleur de fonds d'un objet selon la valeur d'une cellule

troopers87

XLDnaute Occasionnel
Bonjour à tous,

je souhaiterais modifier la couleur de fonds d'un objet (une forme libre que j'ai nommé Secteur_1) selon la valeur d'une cellule qui est associée (que j'ai nommée Valeur_secteur_1).

Mon objectif est que, si la valeur de la cellule Valeur_secteur_1 change (par exemple, >20%) alors le fond bleu de la forme Secteur_1 passe du bleu au rouge, et inversement, évidemment.

J'ai bidouillé un petit bout de code mais... je suis loin de le gérer correctement.

Je joins un fichier exemple qui pourra peut-être guider une éventuelle aide, l'évènement est dans l'évènement Change, merci d'avance !
 

Pièces jointes

  • troopers_V1.xlsm
    12.4 KB · Affichages: 199

homepyrof53

XLDnaute Occasionnel
Re : Modifier la couleur de fonds d'un objet selon la valeur d'une cellule

Bonjour,

Voila lamacro

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = True
If Target.Row = 6 And Target.Column = 3 Then
    tmp = Cells(Target.Row, Target.Column) * 100
    Select Case tmp
        Case Is < 20
            Shapes.Range(Array("Secteur_1")).Fill.ForeColor.RGB = RGB(255, 255, 0)
        Case Else
            Shapes.Range(Array("Secteur_1")).Fill.ForeColor.RGB = RGB(255, 0, 0)
    End Select
End If
End Sub
 

Paf

XLDnaute Barbatruc
Re : Modifier la couleur de fonds d'un objet selon la valeur d'une cellule

Bonjour,

une autre possibilité (sur le même principe):

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target = Range("C6") Then
    With Shapes.Range(Array("Secteur_1")).Fill
    If Range("C6") > 0.2 Then
        .ForeColor.RGB = RGB(255, 0, 0)
    Else
        .ForeColor.RGB = RGB(255, 255, 0)
    End If
    End With
End If

End Sub

Bonne suite
 

JCGL

XLDnaute Barbatruc
Re : Modifier la couleur de fonds d'un objet selon la valeur d'une cellule

Bonjour à tous,

Un peu plus court

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$6" Then _
Shapes.Range("Secteur_1").Fill.ForeColor.RGB = _
IIf(Target > 0.2, RGB(255, 0, 0), RGB(255, 255, 0))
End Sub

A+ à tous
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Modifier la couleur de fonds d'un objet selon la valeur d'une cellule

Bonsoir,

Avec une fonction perso.
-Permet de piloter plusieurs objets sans connaître le code vba
-Le % peut être le résultat d'une formule et non pas frappé dans une cellule.

Code:
Function ColorieImage(s, couleur)
  Application.Volatile
  Set f = Sheets(Application.Caller.Parent.Name)
  f.Shapes(s).Fill.ForeColor.RGB = couleur
End Function

=colorieimage("secteur_1";SI(Valeur_secteur_1>60%;255;SI(Valeur_secteur_1>20%;120000;65000)))

Les images et shapes

jb
 

Pièces jointes

  • Copie de troopers_V1.xls
    32 KB · Affichages: 184
  • Copie de troopers_V1.xls
    32 KB · Affichages: 161
  • Copie de troopers_V1.xls
    32 KB · Affichages: 210
Dernière édition:

troopers87

XLDnaute Occasionnel
Re : Modifier la couleur de fonds d'un objet selon la valeur d'une cellule

Bonjour à tous ! Merci beaucoup pour vos réponses !

Dans mon cas, je pense piocher un peu dans chacune de vos idées :
- l'usage du Case de HomePyrof me permettra davantage de possibilités en ce qui concerne la condition,
- la sélection de la cellule avec Range("C6") proposée par Paf me permettra de nommer mes cellules cibles pour que le code ne tombe pas par terre si une nouvelle colonne est insérée, par exemple,
- en ce qui concerne la fonction perso de BoisGontier, je suis très intéressé, notamment pour la "beauté du code" (mais que dis-je !), mais j'ai du mal à comprendre les détails malgré le lien que tu as donné : qu'est-ce qu'une application volatile ? Que veut dire Application Caller Parent Name ? Enfin, comment est fait le lien pour s = Secteur_1 ?

Merci encore pour votre aide !
 

Staple1600

XLDnaute Barbatruc
Re : Modifier la couleur de fonds d'un objet selon la valeur d'une cellule

Bonjour à tous

troopers87
qu'est-ce qu'une application volatile ? Que veut dire Application Caller Parent Name ?
Tu as été voir dans l'aide VBA les explications pour cela?
(touche F1)
sans oublier ce qu'en dit le net ;)

EDITION: Salut JCGL, toi aussi tu viens de rejoindre le club des invisibles ;)
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Modifier la couleur de fonds d'un objet selon la valeur d'une cellule

Bonjour,

>-Qu'est-ce que Application.Volatile ?

La fonction est exécutée à chaque recalcul de la feuille.

>-Que veut dire Application.Caller Parent.Name ?

Donne le nom de la feuille où la fonction a été appelée.

> -Enfin, comment est fait le lien pour s = Secteur_1 ?


C'est la formule en C7 qui spécifie le nom de l'objet:

=colorieimage("secteur_1";SI(Valeur_secteur_1>60%;255;SI(Valeur_secteur_1>20%;120000;65000)))

Rappel: On peut gérer plusieurs objets avec des formules sans mettre les mains dans le cambouis (VBA).

JB
 
Dernière édition:

Paf

XLDnaute Barbatruc
Re : Modifier la couleur de fonds d'un objet selon la valeur d'une cellule

Bonjour à tous,

la proposition de BOISGONTIER m'a donné envie d'essayer ces fonctions perso.

Juste pour le fun:

Code:
Function FormColor(MaForm, Cellule, CoulInf, Limite, CoulSup)

Application.Volatile

If Cellule > Limite / 100 Then
    ActiveSheet.Shapes(MaForm).Fill.ForeColor.SchemeColor = CoulSup
Else
    ActiveSheet.Shapes(MaForm).Fill.ForeColor.SchemeColor = CoulInf
End If

End Function

j'ai remplacé .RGB par .SchemeColor qui accepte des valeurs plus simples pour les couleurs(rouge:2, vert : 3, bleu : 4, ....)

bonne journée

PS: y a-t-il un moyen de documenter l'aide de ces fonctions personnelles ?
 
Dernière édition:

Paf

XLDnaute Barbatruc
Re : Modifier la couleur de fonds d'un objet selon la valeur d'une cellule

Merci MJ13,

ma demande concernait l'aide que peut fournir Excel quand on utilise Insertion puis Fonction. Pour une fonction native, on y trouve un descriptif de ce que fait la fonction, et un descriptif pour chaque "champs".

A+
 

MJ13

XLDnaute Barbatruc
Re : Modifier la couleur de fonds d'un objet selon la valeur d'une cellule

Re

ma demande concernait l'aide que peut fournir Excel quand on utilise Insertion puis Fonction. Pour une fonction native, on y trouve un descriptif de ce que fait la fonction, et un descriptif pour chaque "champs".
Ah, je comprend mieux, ça je ne sais pas. Mais cela peut-être intéressant.
 

Discussions similaires

Statistiques des forums

Discussions
312 069
Messages
2 085 039
Membres
102 763
dernier inscrit
NICO26