Coloriser une forme libre a partir de données

Bonjour a tous,

Voila je débute dans le VBA car je ne trouve pas de solution a mon problème. Après avoir écumé presque tous les forums je n'obtiens pas de réponse concluante.

Je vous présente mon problème.

J'ai crée sur Excel 2007 une forme libre ("Block1" représentant une partie de carte géographique). J'ai également crée une formule "si" afin d'obtenir un résultat conditionnel a partir de donnés en pourcentage (% plante malade) en P25

(la formule ci dessous est juste un résumé pour comprendre de ce que je veux faire)

SI(P25<0,1;"forme avec couleur vert (RGB 72, 146, 42)";SI(P25<=0,2;"forme avec couleur bleu (RGB 33, 79, 155)";SI(P25<=0,5;"forme avec couleur Orange (RGB 243, 151,29)";forme avec couleur Rouge (RGB 250, 60, 22)"))).

Ce que je souhaite faire concrètement est : a partir du résultat de la formule Si (Rouge, Bleu, Orange ou Rouge) appliqué le résultat de cette cellule sur la forme. En gros appliquer une couleur a la forme en fonction du pourcentage Obtenu lorsque je click sur un bouton.

J'ai donc créé le bouton, J'ai bien tenté de créé une macro (jeter y un œil vous allé surement rigoler) mais mes compétences en macrotage étant limité je n'arrive pas a mes fins. Une gentil âme pourrait-elle m'aider a résoudre mon casse tête ?

Merci 1000 fois d'avance

Pierre

Bonjour le forum,

Titre de la discussion : "Coloriser une forme ..."

C'est surtout un vieux film que l'on peut coloriser.

Colorer ou colorier ?

Colorer : c'est teinter (colorer un vêtement).

Colorier : c'est appliquer des couleurs dans les espaces délimités par des contours.

Donc : dans un tableur, on colorie des cellules.

Bonjour,

Merci pour cette précision

Bonjour,

Voici une proposition qui utilise une procédure évènementielle Worksheet.Change.

Cette procédure permet de détecter la modification de valeur de la cellule P25 et d'appliquer la couleur de remplissage spécifiée.

A+

Un grand merci pour cette réponse.

je vais essayer de le faire pour le B2.

Pierre

Bonjour à tous,

Une autre proposition ...

107test-pierre.xlsm (23.98 Ko)

Pour B2, il suffit d'adapter le code

Private Sub Worksheet_Change(ByVal Target As Range)
Dim oSHp
    If Target.Count > 1 Then Exit Sub
    If Target.Address = "$P$25" Then
        Set oSHp = ThisWorkbook.Worksheets("Feuil1").Shapes("Forme libre 1")
    ElseIf Target.Address = "$P$26" Then
        Set oSHp = ThisWorkbook.Worksheets("Feuil1").Shapes("Forme libre 2")
    Else
        Exit Sub
    End If
    If Target.Value < 0.1 Then
        oSHp.Fill.BackColor.RGB = RGB(72, 146, 42)
    ElseIf Target.Value < 0.2 Then
        oSHp.Fill.BackColor.RGB = RGB(33, 79, 155)
    ElseIf Target.Value < 0.5 Then
        oSHp.Fill.BackColor.RGB = RGB(243, 151, 29)
    Else
        oSHp.Fill.BackColor.RGB = RGB(250, 60, 22)
    End If
End Sub

A+

Bonjour à tous

Une variante...

Bye !

Bonjour à tous,

Il ne reste plus qu'à savoir si Pierre-Yves a pu trouvé son bonheur ... avec toutes les variantes proposées ...

Un grand merci a tous pour votre précieuse aide.

Ça marche a la perfection, encore quelques petits reglages et le tour est joué.

Pimpin a écrit :

Un grand merci a tous pour votre précieuse aide.

Ça marche a la perfection, encore quelques petits reglages et le tour est joué.

Même avec un petit peu de retard ... nous sommes tous sensibles ... à tes remerciements ...!!!

Salut a tous,

J'ai bien appris avec vous pour résoudre mon problème mais (parce qu’il y a toujours un mais) voila j'ai bien codé mon programme, je l'ai "debogé" (le terme n'est peu être pas correct) et tout indique qu'il n'y a pas d'erreur. Or je dois surement manquer une étape afin de mettre en action le code que j'ai fait car lorsque je reviens sur mon Excel rien de se passe.

Ceci sera ma dernière question promis.

Je vous remercie d'avance

Pierre-Yves

Fichier joint :

19map-th.xlsm (65.48 Ko)

Bonjour Pierre-Yves,

Ton fichier joint ... corrigé ...

25map-th.xlsm (63.84 Ko)

Whoaou,

Impressionnant, merci. J'ai pas vraiment compris ou etait mon erreur mais c'est pas grave. Je vais retenter de le refaire moi même ( pour la 50eme fois...

A bientot

Re,

Merci pour tes remerciements ...

Il te suffit de comprendre l'instruction Shapes ... et le tour est joué ...!!!

Rechercher des sujets similaires à "coloriser forme libre partir donnees"