Mise en forme conditionnelle d'une forme

Résolu
QS -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
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. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  2. QS
     
    Pas vraiment mais je peux toujours essayer.
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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. QS > cs_Le Pivert Messages postés 8437 Statut Contributeur
       
      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
    3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Impossible d'ouvrir tes 2 liens!

      Voici un exemple:

      http://www.cjoint.com/c/FAwoG38o7tQ
      0
    4. QS
       
      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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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
  4. QS
     
    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