Sélection et remplissage forme en un clic
Bonsoir tout le monde,
Sur ma feuille Excel je dispose de 3 rectangles représentant des choix. Quand je clique sur l'un d'entres eux, un remplissage s'effectue pour signifier qu'il est sélectionné. Un seul choix est possible donc s'il y en a un sélectionné les autres doivent être non remplis. À côté figure un tableau qui renvoi 0 ou 1. Il s'agit de valeurs qui indiquent si le rectangle est sélectionné/remplit (=1) ou non (=0). Quand je clique sur le même rectangle il n'y a aucun problème avec la macro tout fonctionne parfaitement. Mon problème survient quand j'ai déjà sélectionné ou activé un rectangle et que je clique sur un autre. Par exemple quand j'ouvre le fichier et que je clique/choisi le rectangle "choix 3" il se remplit et la valeur du tableau passe à 1. Cependant si ensuite je clique sur le rectangle "choix 2" le remplissage de ce rectangle ne s'effectue pas et le rectangle choix 3 reste remplit et sa valeur passe à 0 ce qui est faux. Si je reclique sur le rectangle "choix 2" cela fonctionne.
Vous trouverez ci-joint le fichier en question.
Je souhaiterais donc qu'avec un simple clic que je puisse choisir un rectangle que celui-ci se remplisse et les autres si ils etaient selectionnés auparavant perdent leurs remplissages et que les valeurs affichées dans le tableau soient correctes
Merci beaucoup pour votre aide, je pense que le probleme vient de la selection de la forme qui ne change pas immédiatement quand je clique sur un autre rectangle mais je ne sais pas comment faire.
Bonne soirée.
Tryharder
Bonjour Tryharder
Je ne comprends pas pourquoi tu utilises cette variable vCol, c'est elle qui te pose problème
Voici un code tout simple
Option Explicit
Sub Colours1()
Dim Shp As Shape
Set Shp = ActiveSheet.Shapes(Application.Caller)
' Selon le nom du shape
Select Case Shp.Name
Case "Rect1"
Shp.Fill.ForeColor.RGB = RGB(0, 166, 81): vCol = 1
Shapes("Rect2").Fill.ForeColor.RGB = RGB(255, 255, 255)
Shapes("Rect3").Fill.ForeColor.RGB = RGB(255, 255, 255)
Range("RectG1") = 1: Range("RectO1") = 0: Range("RectR1") = 0
Case "Rect2"
Shp.Fill.ForeColor.RGB = RGB(250, 166, 26): vCol = 2
Shapes("Rect1").Fill.ForeColor.RGB = RGB(255, 255, 255)
Shapes("Rect3").Fill.ForeColor.RGB = RGB(255, 255, 255)
Range("RectG1") = 0: Range("RectO1") = 1: Range("RectR1") = 0
Case "Rect3"
Shp.Fill.ForeColor.RGB = RGB(237, 29, 36): vCol = 3
Shapes("Rect1").Fill.ForeColor.RGB = RGB(255, 255, 255)
Shapes("Rect2").Fill.ForeColor.RGB = RGB(255, 255, 255)
Range("RectG1") = 0: Range("RectO1") = 0: Range("RectR1") = 1
End Select
End Sub@+
Bonjour BrunoM45,
Je te remercie pour ton aide qui resoud mon problème c'est super.
Encore merci et bonne journée à toi.
TryHarder