XL 2013 Vba colorie un rectangle après sélection

CGU2022.

XLDnaute Junior
Bonjour exceliens... ;)

Est ce quelqu'un possède une macro ou un debut de code que je pourrai utiliser.

Contexte:

J'ai 3 rectangles : Rectangle1;Rectangle2;Rectangle3
Je souhaite que dans ce choix (uniquement ces 3) qui lance des macros.
Que le dernier rectangle clic/sélectionné change de couleur
Et revienne à sa couleur lorsque je clic/sélectionne sur un autre.

Cordialement



 
Solution
Bonjour CGU, xUpsilon,
En PJ une solution simple parmi d'autres :
VB:
Sub Colore()
    ' Couleurs par défaut des rectangles ( ici la même couleur )
    CouleurRectangle1 = RGB(219, 238, 244)
    CouleurRectangle2 = RGB(219, 238, 244)
    CouleurRectangle3 = RGB(219, 238, 244)
    ' Couleur du rectangle selectionné
    CouleurRectSelect = RGB(255, 0, 0)
    ' Mettre les couleurs initiales
    ActiveSheet.Shapes("Rectangle 1").Fill.ForeColor.RGB = CouleurRectangle1
    ActiveSheet.Shapes("Rectangle 2").Fill.ForeColor.RGB = CouleurRectangle2
    ActiveSheet.Shapes("Rectangle 3").Fill.ForeColor.RGB = CouleurRectangle3
    ' Mettre la couleur sur le rectangle selectionné
    ActiveSheet.Shapes(Application.Caller).Fill.ForeColor.RGB =...

xUpsilon

XLDnaute Accro
Bonjour,

Pour l'exemple, voir ci dessous. A adapter au besoin et aux multiples Shapes (clic droit sur la Shape -> Affecter une macro)
VB:
Sub Rectangle1_Cliquer()
Feuil1.Shapes("Rectangle 1").Fill.ForeColor.RGB = RGB(255, 255, 255)
End Sub

Bonne journée,
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour CGU, xUpsilon,
En PJ une solution simple parmi d'autres :
VB:
Sub Colore()
    ' Couleurs par défaut des rectangles ( ici la même couleur )
    CouleurRectangle1 = RGB(219, 238, 244)
    CouleurRectangle2 = RGB(219, 238, 244)
    CouleurRectangle3 = RGB(219, 238, 244)
    ' Couleur du rectangle selectionné
    CouleurRectSelect = RGB(255, 0, 0)
    ' Mettre les couleurs initiales
    ActiveSheet.Shapes("Rectangle 1").Fill.ForeColor.RGB = CouleurRectangle1
    ActiveSheet.Shapes("Rectangle 2").Fill.ForeColor.RGB = CouleurRectangle2
    ActiveSheet.Shapes("Rectangle 3").Fill.ForeColor.RGB = CouleurRectangle3
    ' Mettre la couleur sur le rectangle selectionné
    ActiveSheet.Shapes(Application.Caller).Fill.ForeColor.RGB = CouleurRectSelect
End Sub
 

Pièces jointes

  • Classeur2.xlsm
    15.4 KB · Affichages: 8

CGU2022.

XLDnaute Junior
Bonjour CGU, xUpsilon,
En PJ une solution simple parmi d'autres :
VB:
Sub Colore()
    ' Couleurs par défaut des rectangles ( ici la même couleur )
    CouleurRectangle1 = RGB(219, 238, 244)
    CouleurRectangle2 = RGB(219, 238, 244)
    CouleurRectangle3 = RGB(219, 238, 244)
    ' Couleur du rectangle selectionné
    CouleurRectSelect = RGB(255, 0, 0)
    ' Mettre les couleurs initiales
    ActiveSheet.Shapes("Rectangle 1").Fill.ForeColor.RGB = CouleurRectangle1
    ActiveSheet.Shapes("Rectangle 2").Fill.ForeColor.RGB = CouleurRectangle2
    ActiveSheet.Shapes("Rectangle 3").Fill.ForeColor.RGB = CouleurRectangle3
    ' Mettre la couleur sur le rectangle selectionné
    ActiveSheet.Shapes(Application.Caller).Fill.ForeColor.RGB = CouleurRectSelect
End Sub

C'est super cela va me permettre (pour un utilisateur) de mettre en évidence la dernière macro lancée..
Pour mon cas c'est différents affichages....

Un grand merci .. ;)
 

CGU2022.

XLDnaute Junior
Bonjour,

Pour l'exemple, voir ci dessous. A adapter au besoin et aux multiples Shapes (clic droit sur la Shape -> Affecter une macro)
VB:
Sub Rectangle1_Cliquer()
Feuil1.Shapes("Rectangle 1").Fill.ForeColor.RGB = RGB(255, 255, 255)
End Sub

Bonne journée,
Bonjour mais la solution de sylvanu et son exemple correspond exactement à ce que je souhaitais.
Merci de m'avoir répondu cela me servira ultérieurement.
 

CGU2022.

XLDnaute Junior
impeccable...
.
1663787500177.png

1663787533715.png

j' ai changé la couleur... ;)

j'ai effectué un call/module/Colore dans chaque macro lancée par clic dans la forme (rectangle)...
 

xUpsilon

XLDnaute Accro
Bonjour,

Une possibilité est que la macro ait été placée dans un module d'un autre fichier que celui dans lequel tu veux l'utiliser.
Si "AC 210004 TVX ......." est le nom d'un fichier qui n'est pas celui dans lequel tu veux exploiter la macro, c'est que tu n'as pas enregistré la macro au bon endroit.

Bonne journée,
 

Discussions similaires

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh