Macro pour colorier l’intérieur d'une forme

Bonjour,

Je souhaite colorier une forme nommé ACTION 1.1 si son contenu contient le mot "FOLD" :

Remplissage : Bleu (0, 0, 255)

Contour / Ligne : Rouge (255,0,0)

Voici mon code mais cela ne fonctionne pas :

Option Explicit

Sub Worksheet_Change(ByVal Target As Range)
Dim Valeur As String, Plage As Range

    If Not Intersect(Target, Me.[ACTION 1.1].Text) = ("FOLD") Then
    ActiveSheet.Shapes.Range(Array("ACTION 1.1")).Fill.ForeColor.RGB = RGB(0, 0, 255) 
    ActiveSheet.Shapes.Range(Array("ACTION 1.1")).Line.ForeColor.RGB = RGB(255, 0, 0) 

    End If

End Sub

Pouvez-vous m'aider ?

Merci

Bonjour Bramavalos,

Je ne pense pas que tu puisse y arriver avec les événements worksheets sur un shape.

En passant avec selectionchange et boucler sur les shapes.

Voici une proposition qui te mettra peut être sur une piste.

Cdt

Bonjour Bramavalos, ddetp88,

D'abord pour shape, on n'utilise pas la propriété Text mais TextFrame.Characters.Text afin de modifier le texte qu'elle contient.

Ensuite il est possible de passer par une procédure événementielle tel que ton code le montre. Mais il est mieux que la forme reçoive son texte par une liaison avec une cellule. C'est à dire, sélectionne ta forme et dans la barre de formule, par exemple tape = A3.

Et c'est cette cellule A3 qui détient le texte FOLD (ou autre ou vide) qui s'affiche sur la forme. Il suffit donc de changer la case A3 pour que l'événement se produise et modifie la couleur et la bordure. Pas besoin d'intersect non-plus, du fait de la liaison. Ni de Me, ni d'ActiveSheet puisque c'est un code propre à la feuille.

Sub Worksheet_Change(ByVal Target As Range)
If Shapes("Action1.1").TextFrame.Characters.Text = "FOLD" then
Shapes("Action1.1").Fill.ForeColor.RGB= RGB(0,0,255)
suite du code

On peut aussi utiliser une cellule de liaison (police minuscule) sous la forme.

Bons tests, bonne continuation.

Hello

Je viens de tester et cela fonctionne.

Par contre, lorsque le texte de la shape ACTION 1.1 est different de FOLD, la shap ne retrouve pas sa couleur primaire

Une idée ?

A nouveau,

Si tu souhaites revenir à sa couleur précédente pour tout texte différent de "FOLD" alors il faut ajouter en fin de ton code

Else: Shapes("Action1.1").Fill.ForeColor.RGB= RGB(couleur d'avant): Shapes("Action1.1")... etc... idem pour la bordure

Où couleur d'avant est les 3 valeurs RGB de cette forme. Pareil pour la bordure.

Rechercher des sujets similaires à "macro colorier interieur forme"