Colorier un forme de la feuille 2 en fonction d'une cellule de 1

Fermé
lea9344 - Modifié par lea9344 le 12/08/2015 à 16:06
 Lea9344 - 4 nov. 2015 à 15:08
Bonjour à tous,
.

Je suis une débutante VBA, j'apprends en cherchant sur les forums comme celui-ci.
Je voudrais colorier une forme de la feuille 2 en fonction de la valeur d'une cellule de la feuille 1.
Pour l'instant j'ai trouvé le code pour changer la couleur de la forme en fonction d'une cellule seulement si cette cellule est dans la même feuille que la forme.
Mais ce n'est pas exactement ce que je veux :
.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Shp

Set Shp = ThisWorkbook.Worksheets("Feuil2").Shapes("Ellipse 67")
' je voudrais ici qu'il s'agisse de la cellule A1 de la "Feuil1"
If Range("A1") < 100 Then
Shp.Fill.ForeColor.RGB = RGB(239, 51, 35) 'rouge
Else
Shp.Fill.ForeColor.RGB = RGB(0, 103, 56) 'vert
End If

End Sub


.
Comment faire pour colorier une forme d'une feuil2 en fonction d'une cellule d'une feuil1?
.
Merci de votre aide
A voir également:

7 réponses

via55 Messages postés 14408 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 5 mai 2024 2 704
12 août 2015 à 17:02
Bonjour

Indique le nom de la feuille avant le Range :

If Sheets("Feuil1").Range("A1") < 100 Then

Cdlmnt
Via
0
Bonjour, désolé pour ma réponse tardive.
J'ai essyé en rajoutant "If Sheets("Feuil1").Range("A1") < 100 Then ", mais cela ne fonctionne pas. La forme se réfère toutjours à la cellule re la feuille 2 :S
0
f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 1 705 > lea9344
14 oct. 2015 à 14:21
Bonjour,

le code est dans le VBA de quelle feuille ????
0
La feuille 2.
Je viens de vérifier, la formule fonctionne. Par contre, elle ne se met pas à jour automatiquement. Pour se mettre à jour il faut rentrer du texte dans une cellule de la feuille 2 et faire "entrer".
Comment faire ?

Merci d'avance! :)
0
f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 1 705 > Lea9344
14 oct. 2015 à 16:18
Re,

un peu plus bas, j'ai ecrit ceci:

Ce qu'il faudrait savoir, c'est comment change la valeur de la cellule feuil1!A1 et si la feuil2 est en permanence active ou pas !!! Donc pouvez-vous nous en ecrire plus sur le sujet
0
Boisgontierjacques Messages postés 175 Date d'inscription jeudi 19 septembre 2013 Statut Membre Dernière intervention 26 décembre 2018 64
13 août 2015 à 06:44
0
Bonjour,
L'exemple que vous m'avez proposé est très intéressant, cependant, je n'arrive pas à le réutiliser lorsque je veux changer la couleure d'une forme qui est dans une autre feuille que celle où se trouvent les cellules colorées et formules.
Comment peut-on modifier la formule afin que cela fonctionne ?

Autrement, cela m'intéresserai beaucoup de pouvoir modifier cette fois, non pas la couleur de fond de la forme, mais la couleur du couleur ou encore, la couleur du texte contenu dans la forme.
Est-il possible d'adapter la formule pour atteindre cet objectif ?

Merci d'avance pour votre aide! :)
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 398
14 oct. 2015 à 14:39
Bonjour
peu expérimenté en VBA je peux dire des bêtises (oh oui) mais je n'ai jamais réussi à faire fonctionner un code feuille en faisant référence à des cellules hors feuille.
La solution que j'emploie pour contourner le problème:
écrire le code dans un module
lancer la macro dans le code feuille avec CALL nom_macro
Ça pourrait peut être alors fonctionner avec Range("Feuil1A1")

en attendant les experts en la matière!!


crdlmnt
0
f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 1 705
Modifié par f894009 le 14/10/2015 à 14:57
Bonjour Vaucluse,

Ce qu'il faudrait savoir, c'est comment change la valeur de la cellule feuil1!A1 et si la feuil2 est en permanence active ou pas !!!
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 398
Modifié par Vaucluse le 14/10/2015 à 15:04
Salut f894.....
alors je suis la discussion, la solution autre que ma "combine" m'intéresse!
Je pense aussi qu'il faudrait savoir ce que deviennent les cellules formatées si la valeur de A1 feuil2 change de condition
A+
0
f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 1 705 > Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022
14 oct. 2015 à 15:08
Re,
un exemple sur activation feuille:

a mettre dans VBA de ThisWotkbook

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim Shp
    
    If Sh.Name = "Feuil2" Then
        Set Shp = ThisWorkbook.Worksheets("Feuil2").Shapes("Ellipse 67")
        ' je voudrais ici qu'il s'agisse de la cellule A1 de la "Feuil1"
        If Worksheets("Feuil1").Range("A1") < 100 Then
            Shp.Fill.ForeColor.RGB = RGB(239, 51, 35) 'rouge
            ActiveSheet.Shapes.Range(Array("Ellipse 67")).Select
            With Selection.ShapeRange.TextFrame2.TextRange.Font.Fill
                .Visible = msoTrue
                .ForeColor.RGB = RGB(0, 103, 56) 'vert
                .Transparency = 0
                .Solid
            End With
        Else
            Shp.Fill.ForeColor.RGB = RGB(0, 103, 56) 'vert
            ActiveSheet.Shapes.Range(Array("Ellipse 67")).Select
            With Selection.ShapeRange.TextFrame2.TextRange.Font.Fill
                .Visible = msoTrue
                .ForeColor.RGB = RGB(239, 51, 35) 'rouge
                .Transparency = 0
                .Solid
            End With
        End If
    End If
End Sub
0
Bonjour à tous,
La cellule Feuil1!A1 peut être changé manuellement.
La Feuil2!A2 est toujours active
0
f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 1 705 > Lea9344
14 oct. 2015 à 16:44
Re,

Reponse pas top,

La cellule Feuil1!A1 peut être changé manuellement. et autrement ??

La Feuil2!A2 est toujours active Que vient faire la cellule A2 ??
0
f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 1 705
16 oct. 2015 à 09:12
Bonjour,

Vos fichiers sont des exemples impeccables pour Lea9344, mais ce qui pose probleme pour cette personne, ce n'est le moyen mais le travail a faire pour ces onglets(+de 50 formes dans certains) car tout VBA ou formules et VBA faut tapoter avec ses petits doigts!!! Y a pas de miracle, je vais regarder si possible de reduire au maximum avec tout VBA, mais restera quand-meme un minimum.
0
Bonjour Boisgontier,

En effet vos exemples sont vraiment top!

J'ai cependant quelques questions pour pouvoir les adapter à mes fichiers:
1) Est-il possible de changer la couleur du contour de la forme par une formule équivalente ?
2) Est-il possible de changer la couleur de la police contenu dans une forme par une formule équivalente ?
3) Dans mes fichiers, le rouge et le vert sont les suivant :
RGB(218, 41, 28) 'rouge
RGB(54, 101, 56) 'vert
Comment puis-je l'adapter à votre formule ?
=ColorieImage(B9;SI(TG!D3>=TG!D4;65025;SI(TG!D3>TG!D4*95%;4626167;255)))

Merci d'avance pour votre aide,
Léa
0
f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 1 705 > Lea9344
Modifié par f894009 le 16/10/2015 à 10:45
Bonjour,

couleur

RGB(218, 41, 28) 'rouge-->1845722
RGB(54, 101, 56) 'vert--->3695926
0
Merci beaucoup f894009!
Comment avez-vous pu déterminer les couleurs ?
Bonne journée,
Léa
0
f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 1 705 > Lea9344
16 oct. 2015 à 10:46
Re

avec du code VBA

Sub test()
        Set Shp = ThisWorkbook.Worksheets("2014").Shapes("Ellipse 1")
            Range("b2") = Shp.Fill.ForeColor
        Set Shp = ThisWorkbook.Worksheets("2014").Shapes("Ellipse 3")
            Range("b3") = Shp.Fill.ForeColor
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 1 705
Modifié par f894009 le 16/10/2015 à 17:00
Re,

'Tableau de donnees et formules sur une feuille et Shapes sur une autre
'exemple de formule
'=colorieimage("2014";Ellipse 1";"ZoneTexte 1";SI(B3>=100;1845722;3695926))
'code dans un module
Function ColorieImage(feuille, s1, s2, couleur)
    Application.Volatile
    Set f = Sheets(feuille)
    f.Shapes(s1).Fill.ForeColor.RGB = couleur       'Elipse
    f.Shapes(s2).Line.ForeColor.RGB = couleur       ' Contour Zone de texte
    f.Shapes(s2).TextFrame2.TextRange.Font.Fill.ForeColor.RGB = couleur     'Texte Zne de texte
End Function
0
Bonjour f894009 et merci pour votre aide!

Malheureusement, je n'arrive pas à faire fonctionner votre macro, j'ai pourtant suivi à la lettre vos consignes mais cela ne fonctionne pas.
J'ai repris le document de Boisgontierjacques et ai fait quelques modifications en suivant vos indications, mais je n'arrive pas à différencier les formes rondes, des formes rectangulaires. Comment faire ?

Ci-dessous, le lien vers mon document en cours :
http://www.cjoint.com/c/EKcqxLP6Umh

Merci d'avance,
Léa
0
f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 1 705 > Lea9344
2 nov. 2015 à 18:56
Bonjour,

fichier modifie avec "ma macro": https://www.cjoint.com/c/EKcr3mBgvqf

Une seule formule pour les deux formes

A+
0
Boisgontierjacques Messages postés 175 Date d'inscription jeudi 19 septembre 2013 Statut Membre Dernière intervention 26 décembre 2018 64
Modifié par Boisgontierjacques le 16/10/2015 à 17:42
Bonjour,

https://www.cjoint.com/c/EJqpGO1nH3W
http://boisgontierjacques.free.fr/fichiers/Images/Indic.xls

=colorieimage(B2;SI(Feuil1!B2<100;couleurcellule(rouge);couleurcellule(vert)))

Boisgontier
0
Bonjour Boisgontierjacques,

Merci pour votre retour, cela m'a permis d'avancer. Cependant, je reste toujours bloquer sur un point : comment puis-je différencier les deux types de formes :
- rondes : colorier seulement le fond de la forme
- rectangle : colorier le contour + colorier le texte de la forme

Ci-dessous, le lien vers mon document en cours :
http://www.cjoint.com/c/EKcqxLP6Umh

Bonne journée,
Léa
0
Boisgontierjacques Messages postés 175 Date d'inscription jeudi 19 septembre 2013 Statut Membre Dernière intervention 26 décembre 2018 64
Modifié par Boisgontierjacques le 2/11/2015 à 21:04
Bonsoir,


http://boisgontierjacques.free.fr/fichiers/Images/Indic1.xls

Il faut créer 2 fonctions

=colorieRond(B4;SI(Data!B2<100;couleurcellule(rouge);couleurcellule(vert)))
=colorieRectangle(B4&"2";SI(Data!B3<0;couleurcellule(rouge);couleurcellule(vert)))

Les formules sont copiables

Function ColorieRond(s, couleur)
Application.Volatile
Set f = Sheets(Application.Caller.Parent.Name)
f.Shapes(s).Fill.ForeColor.RGB = couleur
f.Shapes(s).TextFrame2.TextRange.Font.Fill.ForeColor.RGB = vbBlack
ColorieRond = ""
End Function

Function ColorieRectangle(s, couleur)
Application.Volatile
Set f = Sheets(Application.Caller.Parent.Name)
f.Shapes(s).Fill.ForeColor.RGB = vbWhite
f.Shapes(s).TextFrame2.TextRange.Font.Fill.ForeColor.RGB = couleur
f.Shapes(s).Line.ForeColor.RGB = couleur
ColorieRectangle = ""
End Function

Function CouleurCellule(c As Range)
Application.Volatile
CouleurCellule = c.Interior.Color
End Function


Boisgontier
0
C'est parfait!!! Je vous remercie énormément! :)
Bonne journée,
Léa
0