Shape avec un remplissage dégradé

Bonsoir tout le monde,

J'ai un souci sur les shapes, plus précisément pour faire un dégradé sur l'un d'entre eux.

Je souhaiterai que dans la cellule activité lorsque je rentre un chiffre par exemple 68.

Que dans le shape se dessine en remplissage de fond : un dégradé avec deux points de dégradés

le premier s'arrête à 68

le second commence à 69

Ce qui me permettrai d'avoir une représentation graphique de la valeur écrite dans le shape... (voir l'image)

Est-ce que quelqu'un sait faire çà ?

Le générateur d'Excel2010 ne laisse aucune trace de la manipulation manuelle.

Et côté vba je n'ai réussi qu'à créer un dégradé de deux points mais impossible de les positionner...

With ActiveSheet.Shapes("UF3")
            .Fill.TwoColorGradient msoGradientTwoColors, 1
            .Fill.ForeColor.RGB = RGB(154, 181, 228)
            .Fill.BackColor.RGB = RGB(255, 255, 255)
            .Fill.Visible = msoTrue
End With

Je vous remercie par avance )

Bien cordialement

sans titre
36classeur1.xlsm (12.95 Ko)

Bonjour,

Il faudrait que tu illustres ce que tu veux obtenir.

On verra si on peut le réaliser.

yy0l3fo

C'est exactement ce que j'ai mis sur l'image,... je pensais que j'avais été clair excuse moi,...

çà permet d'avoir une barre bleue remplie à hauteur de 69% l'affichage attendue est exactement celui de l'image, que j'ai dessiné manuellement et que tu peux retrouver sur mon fichier excel.

En fait je souhaite que mon shape s'affiche comme un histogramme plus ou moins bleu selon le chiffre donné entre 0 et 100... pour cela j'utilise le dégradé, exemple si le chiffre est 68 :

Le premier point de dégradé est bleu est va de 0 à 68

Le seconde point de dégradé est blanc et débute juste après à 69 et va jusqu'à 100%

Manuellement c'est très simple mais en VBA impossible de trouver les méthodes dans le dictionnaire...

Un essai :

Sub Dégradé()
    With ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 100, 100, 150, 20)
        With .Line
            .DashStyle = 1
            .Weight = 1
            .ForeColor.SchemeColor = 8
        End With
        With .TextFrame.Characters
            .Text = "ENDOCRINOLOGIE : 41"
            With .Font
                .Name = "Calibri"
                .Size = 8
                .ColorIndex = 1
            End With
        End With
        With .Fill
            .ForeColor.RGB = RGB(154, 181, 228)
            .BackColor.RGB = RGB(255, 255, 255)
            .TwoColorGradient msoGradientTwoColors, 1
            .GradientStops(1).Position = 0.68
            .GradientStops(2).Position = 0.69
        End With
    End With
End Sub

Cordialement

C'est parfait ! C'est exactement ce que je souhaitais !

Merci beaucoup MFerrand je vais pouvoir avancer dans mon projet aujourd’hui grâce à toi, mille mercis.

Bonne journée !

Bonjour,

Il est vrai que la situation était plus simple autrefois avec les collections de DrawingObjects. On manque d'un tuto exhaustif sur la manipulation des Shapes et OleObjects et c'est vrai que l'aide est plutôt maigne sur le sujet et le recours à l'enregistreur pour détecter la bonne syntaxe ne donne parfois rien.

Il reste (moins facile d'emploi et un peu plus long) l'explorateur d'objets pour retrouver une succession : objet---propriétés---énumération de valeurs de propriété. Mais quand on retrouve cela donne quelques indications.

Ce qu'il ne faut pas perdre de vue, c'est que Shapes constitue une sorte de collection générique (fourre-tout même) qui intègre également les objets Ole (lesquels ont des propriété spécifiques), dont les manipulations sont éclatées sur des objets secondaires : contenu, couleur, texte, propriétés de contrôle, et j'en passe... ce qui conduit à passer pas mal de temps à rechercher l'objet sur lequel il faut agir pour tel ou tel aspect.

Sachant qu'on cherche un objet auquel raccorder une propriété, on peut parfois avancer un peu plus vite.

Bonne journée

Rechercher des sujets similaires à "shape remplissage degrade"