Mise en forme conditionnelle d'une forme

Résolu
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

  1. 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
    1. Contributeur
      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
      1. Contributeur
        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
      2. @cs_Le PivertMerci 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
      3. Contributeur
        Impossible d'ouvrir tes 2 liens!

        Voici un exemple:

        http://www.cjoint.com/c/FAwoG38o7tQ
        0
      4. 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
      5. Contributeur
        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
    2. Pas vraiment mais je peux toujours essayer.
      0
      1. Contributeur
        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
    3. Contributeur
      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