Remplissage forme avec clique

BENAM69

XLDnaute Occasionnel
Bonjour,

Je me remets à vous le forum, j'ai cherché sur les forums pour essayer de trouver la réponse mais en vain.
Je sais colorier une forme avec ce code :

VB:
Sheets("Feuil1").Shapes("Rectangle 1").Fill.ForeColor.RGB = RGB(255, 217, 102)

Mais je recherche juste à faire cette fonctionnalité : mettre une forme en couleur en cliquant sur la forme, et si je clique à nouveau sur la forme, la couleur disparaît ou se réinitalise.
En 1 sens :
J'ai une forme quelconque que je crée (carré, rectangle, triangle ... peu importe)
Quand je clique sur la forme, elle devient rouge, je clique à nouveau dessus, la couleur se réinitialise et autant de clique le fond de la forme change de couleur et se réinitialise.
Existe-il une fonctionnalité VBA permettant de faire cela ?
Cela à l'air banal mais je peine dessus -_-

Merci par avance de votre aide.

Benam
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

BENAM69

Ma proposition (avec une variante riche en couleurs)
VB:
Public vCol As Integer
Sub CouleurForme()
Dim shp As Shape
Set shp = ActiveSheet.Shapes(Application.Caller)
If vCol = 0 Then
shp.Fill.ForeColor.RGB = vbRed: vCol = 1
ElseIf vCol = 1 Then
vCol = 0: shp.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End Sub
Sub CouleurForme_Fun()
Dim shp As Shape: Randomize 600
Set shp = ActiveSheet.Shapes(Application.Caller)
If vCol = 0 Then
With Application
.ScreenUpdating = False
shp.Fill.ForeColor.RGB = RGB(.RandBetween(1, 255), .RandBetween(1, 255), .RandBetween(1, 255))
End With
vCol = 1
ElseIf vCol = 1 Then
vCol = 0: shp.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End Sub
Affecter une macro à une forme présente sur une feuille
Faire un click puis un second
Ensuite appliquer la seconde macro puis cliquez le nombre de fois que vous voulez ;)
(Histoire de voir la différence entre les deux macros ;))

NB: Je n'ai pas ouvert la proposition de haonv, j'espère que mon bout de code n'est point similaire au sien ;)
 

BENAM69

XLDnaute Occasionnel
Bonsoir le fil,

BENAM69

Ma proposition (avec une variante riche en couleurs)
VB:
Public vCol As Integer
Sub CouleurForme()
Dim shp As Shape
Set shp = ActiveSheet.Shapes(Application.Caller)
If vCol = 0 Then
shp.Fill.ForeColor.RGB = vbRed: vCol = 1
ElseIf vCol = 1 Then
vCol = 0: shp.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End Sub
Sub CouleurForme_Fun()
Dim shp As Shape: Randomize 600
Set shp = ActiveSheet.Shapes(Application.Caller)
If vCol = 0 Then
With Application
.ScreenUpdating = False
shp.Fill.ForeColor.RGB = RGB(.RandBetween(1, 255), .RandBetween(1, 255), .RandBetween(1, 255))
End With
vCol = 1
ElseIf vCol = 1 Then
vCol = 0: shp.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End Sub
Affecter une macro à une forme présente sur une feuille
Faire un click puis un second
Ensuite appliquer la seconde macro puis cliquez le nombre de fois que vous voulez ;)
(Histoire de voir la différence entre les deux macros ;))

NB: Je n'ai pas ouvert la proposition de haonv, j'espère que mon bout de code n'est point similaire au sien ;)

Salut Staple1600,

Je te remercie amplement pour ton aide.
Ton code est similaire sur la réponse au besoin proposé. Vous avez tous les deux répondu à mon besoin PARFAITEMENT.

L'avantage avec ton code c'est que je n'ai pas besoin de mettre un code avec le nom de la forme à chaque fois ^^ comme par exemple Shapes("Rectangle X") à chaque fois. Il est vraiment top top top ton code.

Malheureusement, J'ai résolu mon problème avec celui de haonv étant donné que j'ai eu le sien en premier.
Sans vouloir te decevoir staple1600, j'utiliserai le tien pour les prochaines fois à coup sûr ^^. En tout cas, je te remercie beaucoup d'avoir pris le temps de me proposer quelque chose de vraiment parfait malgré le fait que haonv m'ait donné la solution avant toi.

Merci à vous deux et à ce forum ^^

Benam
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, BENAM69, haonv

BENAM69
Nous avons été spécialement formés (nous, les répondeurs) dans un centre dédié pour supporter la déception de voir une autre solution que la notre choisie par le demandeur.
Nous sommes donc en mesure de tenir le choc.
Donc ne t'inquiète pas, je comprends ton choix et j'ai trouvé en moi les ressources pour ne pas vaciller.
(Grâce aux 14 années d'entrainement derrière moi, passées sur ce forum)
;)

Juste une dernière question, est-ce que tu as pris le temps de tester la macro nommée Sub CouleurForme_Fun ?
Et ce en cliquant au moins 13 fois de suite sur la forme à laquelle tu auras affectée cette macro?
 

BENAM69

XLDnaute Occasionnel
Bonsoir le fil, BENAM69, haonv

BENAM69
Nous avons été spécialement formés (nous, les répondeurs) dans un centre dédié pour supporter la déception de voir une autre solution que la notre choisie par le demandeur.
Nous sommes donc en mesure de tenir le choc.
Donc ne t'inquiète pas, je comprends ton choix et j'ai trouvé en moi les ressources pour ne pas vaciller.
(Grâce aux 14 années d'entrainement derrière moi, passées sur ce forum)
;)

Juste une dernière question, est-ce que tu as pris le temps de tester la macro nommée Sub CouleurForme_Fun ?
Et ce en cliquant au moins 13 fois de suite sur la forme à laquelle tu auras affectée cette macro?

Salut Staple1600

Oui, j'ai testé les 2 codes. Le premier pour répondre à mon besoin et le deuxième pour répondre aussi à mon besoin mais de manière plus fun ahhahahaah. Ça en fait de la couleur !!!! En tout cas merci encore pour ton aide

A+

Benam
 

haonv

XLDnaute Occasionnel
Nous sommes donc en mesure de tenir le choc.
Donc ne t'inquiète pas, je comprends ton choix et j'ai trouvé en moi les ressources pour ne pas vaciller.
(Grâce aux 14 années d'entrainement derrière moi, passées sur ce forum)
Très heureux de voir que tu n'as pas vaciller :)
Quant a moi, je vais étudier ton code, pour en comprendre le cheminement(enfin peut-être le comprendre...)

Cordialement
 

Discussions similaires

Réponses
2
Affichages
156

Statistiques des forums

Discussions
312 185
Messages
2 086 011
Membres
103 093
dernier inscrit
Molinari