Mise en forme conditionnelle d'une forme

Résolu/Fermé
QS - 22 janv. 2016 à 08:47
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 22 janv. 2016 à 18:20
Bonjour,

Je me permets de vous solliciter car j'aimerais savoir si ce que je souhaite faire est faisable sur excel.
Comme pour la mise en forme conditionnelle d'une cellule, j'aimerais créer des mises en forme conditionnelle de formes différentes (rond, triangle, ...).
Ainsi, je veux par exemple que mon triangle soit vert si ma cellule de référence = 1, orange si = 2 et rouge si = 3 et ainsi de suite pour les autres formes.

Je précise que malheureusement je ne peux pas utiliser le jeux d'icônes qui est proposé dans l'item mise en forme conditionnelle dans la section style.

Je vous remercie par avance.

QS

4 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
22 janv. 2016 à 09:45
Bonjour,

Malheureusement, la mise en forme conditionnelle n'est valable que sur les cellules. Si tu veux une coloration des objets graphiques, il faut passer par des macros : les pratiques-tu ?
0
Pas vraiment mais je peux toujours essayer.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
22 janv. 2016 à 10:49
Si tu pouvais nous mettre un exemple de structure des données, sans éléments personnels, avec les résultats souhaités expliqués clairement, se serait plus facile de t'aider.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ (mode d'emploi) et tu mets ici le lien obtenu.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
22 janv. 2016 à 11:20
Bonjour à tous les 2,

En VBA

Lire ceci pour activer les macros. Ensuite enregistrer ton classeur en cochant dans le menu déroulant enregistrement acceptant les macros.
Ensuite tu ouvres ton classeur et c'est opérationnel.

https://support.microsoft.com/en-us/office/enable-or-disable-macros-in-office-files-12b036fd-d140-4e74-b45e-16fed1a7e5c6?redirectsourcepath=%252ffr-fr%252farticle%252factiver-ou-d%2525c3%2525a9sactiver-les-macros-dans-les-documents-office-7b4fdd2e-174f-47e2-9611-9efe4f860b12&ui=en-us&rs=en-us&ad=us

Faire Alt F11 pour accéder à l'éditeur, double clic sur la feuille concernée en haut à gauche et mettre ceci:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then 'a adapter la cellule
Select Case Target.Value
Case Is = 1
' remplacer Triangle isocèle 1 par le nom de la forme en haut à gauche dans la barre de Formule en respectant les espaces quand elle est sélectionnée
ActiveSheet.Shapes("Triangle isocèle 1").DrawingObject.Interior.ColorIndex = 4 'vert
Case Is = 2
ActiveSheet.Shapes("Triangle isocèle 1").DrawingObject.Interior.ColorIndex = 6 'jaune
Case Is = 3
ActiveSheet.Shapes("Triangle isocèle 1").DrawingObject.Interior.ColorIndex = 3 'rouge
End Select
End If
End Sub

0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié par cs_Le Pivert le 22/01/2016 à 11:47
Si tu réussi, voilà un exemple avec 3 formes:

Option Explicit
Dim position
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1, B1, C1")) Is Nothing Then 'a adapter les cellules
position = Target.Address
position = Replace(position, "$", "")
Select Case Target.Value
Case Is = 1
If position = "A1" Then 'a adapter la cellule
' remplacer Triangle isocèle 1 par le nom de la forme en haut à gauche dans la barre de Formule en respectant les espaces
ActiveSheet.Shapes("Triangle isocèle 1").DrawingObject.Interior.ColorIndex = 4 'vert
ElseIf position = "B1" Then
ActiveSheet.Shapes("Triangle isocèle 2").DrawingObject.Interior.ColorIndex = 4 'vert
ElseIf position = "C1" Then
ActiveSheet.Shapes("Triangle isocèle 3").DrawingObject.Interior.ColorIndex = 4 'vert
End If
Case Is = 2
If position = "A1" Then
ActiveSheet.Shapes("Triangle isocèle 1").DrawingObject.Interior.ColorIndex = 6 'jaune
ElseIf position = "B1" Then
ActiveSheet.Shapes("Triangle isocèle 2").DrawingObject.Interior.ColorIndex = 6 'jaune
ElseIf position = "C1" Then
ActiveSheet.Shapes("Triangle isocèle 3").DrawingObject.Interior.ColorIndex = 6 'jaune
End If
Case Is = 3
If position = "A1" Then
ActiveSheet.Shapes("Triangle isocèle 1").DrawingObject.Interior.ColorIndex = 3 'rouge
ElseIf position = "B1" Then
ActiveSheet.Shapes("Triangle isocèle 2").DrawingObject.Interior.ColorIndex = 3 'rouge
ElseIf position = "C1" Then
ActiveSheet.Shapes("Triangle isocèle 3").DrawingObject.Interior.ColorIndex = 3 'rouge
End If
End Select
End If
End Sub



Bon courage
0
QS > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
22 janv. 2016 à 15:01
Merci pour ton aide mais je ne parviens pas à l'appliquer.
Serait-il possible, si tu as le temps, de mon montrer son application sur un fichier test que j'ai créé ? Le voici : http://www.cjoint.com/c/FAwn7StVhPm.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
22 janv. 2016 à 15:33
Impossible d'ouvrir tes 2 liens!

Voici un exemple:

http://www.cjoint.com/c/FAwoG38o7tQ
0
Merci c'est top.

Je ne suis pas sur que l'approche soit tout à fait la même pour ce que je souhaite faire, je tente une dernière fois de te fournir un exemple, j'espère que le lien va fonctionner cette fois ci, il fonctionne chez moi en tout cas : http://www.cjoint.com/c/FAwpxlVkCvm
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
22 janv. 2016 à 16:48
Si tu t'inscris comme membre ton lien sera en bleu, je n'aurais plus qu'à cliquer. Car en faisant un copier coller de ton lien cela ne fonctionne pas chez moi!
0
Merci beaucoup cs_Le Pivert, je vais tenter d'essayer ça.

Pour gbinforme, comme demandé, tu trouveras un exemple de fichier ici : http://www.cjoint.com/c/FAwkKMBqj6l.

Merci.
0