Changer la couleur d'une forme en fonction du contenu d'une cellule

benjamin.prade

XLDnaute Nouveau
Bonjour à tous,

J'ai fait mes petites recherches à ce sujet mais je n'ai rien trouvé de probant donc je viens solliciter votre expertise.

J'aimerais savoir s'il est possible de paramétrer la couleur d'une forme (un cercle basique par exemple) en fonction du contenu d'une cellule.
Par exemple, si ma cellule est vide je voudrais que mon cercle soit blanc (donc qu'on ne le voie pas) et si elle contient du texte alors mon cercle serait rouge.

J'ai déjà essayé la mise en forme conditionnelle mais ça ne s'applique qu'aux cellules et pas aux formes insérées.

Merci d'avance.

Benjamin
 

benjamin.prade

XLDnaute Nouveau
Re : Changer la couleur d'une forme en fonction du contenu d'une cellule

Pour l'instant j'ai cette macro là mais elle passe par un bouton et elle ne fonctionne pas :
Sub forme()

Dim shp As Shape
Dim wks As Worksheet

Set wks = ActiveWorkbook.Worksheets("Brief")

If Range("A1") <> "" Then

' Bordures des cadres

Set shp = wks.Shapes("Ellipse 94")
shp.Line.ForeColor.RGB = RGB(100, 100, 100)

' Intérieur des formes

Set shp = wks.Shapes("Ellipse 94")
shp.OLEFormat.Object.Interior.Color = RGB(123, 5, 100)

End If

End Sub

C'est une piste qui pourra peut-être aider.
 

benjamin.prade

XLDnaute Nouveau
Re : Changer la couleur d'une forme en fonction du contenu d'une cellule

Merci pour ta réponse.
En effet cela fonctionne bien.
Cependant je n'ai pas trouvé comment on changeais la couleur de la forme. Est-ce que c'est possible ou bien est-ce une couleur par défaut?
 

benjamin.prade

XLDnaute Nouveau
Re : Changer la couleur d'une forme en fonction du contenu d'une cellule

Merci à tous vos solutions m'ont bien aidé.
Pour ceux que ça intéresse voilà mon résultat final :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" Then
With ActiveSheet.Shapes("Ellipse 94")

If Target.Value = "" Then
.Fill.Visible = msoFalse
.Line.Visible = msoFalse
Else
' Bordures des cadres
Shapes("Ellipse 94").Line.ForeColor.RGB = RGB(100, 100, 100)
' Intérieur des formes
Shapes("Ellipse 94").OLEFormat.Object.Interior.Color = RGB(123, 5, 100)

.Fill.Visible = msoTrue
.Line.Visible = msoTrue
End If
End With
End If
End Sub

Cela permet de choisir les couleurs que l'on veut.

Encore merci et à bientôt.
 

Discussions similaires

Statistiques des forums

Discussions
312 204
Messages
2 086 198
Membres
103 153
dernier inscrit
SamirN