Double clique simple clic rectangle
Bonjour,
Je dispose d'une feuille sur laquelle j'ai 6 rectangles cliquables. Lorsque je clique sur l'un d'entres eux il change de couleur et se "remplit". J'ai juste un petit soucis lorsque je clique sur un rectangle de la Partie 1 et que je clique directement sur un rectangle étant dans la partie 2 ou inversement, certaines fois je dois double cliquer au lieu de faire un simple clique. Est ce que quelqu'un pourrait il m'aider à changer la macro pour ne faire qu'un simple clique à chaque fois svp.
En vous remerciant.
Bonjour,
Voici une solution mais nécessitant de renommer les formes de manière à avoir une partie commune à chaque forme d'une même question (dans le code, j'ai prévu un préfixe de 2 caractères en l'occurrence) .
C'est donc ce que j'ai fait. Les formes sont nommées P1_R1, ..., P1_R3 et P2_R1, ...
Voici le code :
Sub Colorier()
Dim shclic As Shape, sh As Shape
Set shclic = ActiveSheet.Shapes(Application.Caller)
For Each sh In ActiveSheet.Shapes 'pour chaque forme
If Left(sh.Name, 2) = Left(shclic.Name, 2) Then 'necessite que les rectangles d'une même partie aient un prefixe commun "P1", "P2", .... grâce auquel on identifiera le groupe de réponses
sh.Fill.ForeColor.RGB = RGB(255, 255, 255) 'DONC, si image du même groupe, colorie blanc
End If
Next sh
shclic.Fill.ForeColor.RGB = shclic.Line.ForeColor.RGB 'image cliquée recoit couleur de sa bordure
End SubJe vous ai laissé un code pour renommer toutes les images au cas où (qu'il faudra peut-être adapter le cas échéant) et un autre pour réinitialiser le questionnaire
Cdlt,
Bonjour,
Merci beaucoup pour votre réponse, c'est parfait. J'ai juste une autre question. Il y a un tableau caché en X54. Je voulais simplement qu'un "1" s'affiche si le rectangle correspondant est sélectionné et un "0" si il ne l'ai pas. J'ai modifié le code pour avoir ce que je souhaite. Cependant, je voulais savoir si il y avait une meilleur méthode que celle que j'ai utilisé svp?
Merci beaucoup
Bonjour,
Pour rester sur le même principe que le code précédent, en agissant tant que possible sur les noms (ce que vous avez déjà fait
Sub Colorier()
Dim shclic As Shape, sh As Shape
Dim nomclic$
nomclic = Application.Caller 'nom image cliquée (qui appelle le code)
Set shclic = ActiveSheet.Shapes(nomclic) 'image cliquée
For Each sh In ActiveSheet.Shapes 'pour chaque forme
If Left(sh.Name, 2) = Left(nomclic, 2) Then 'si prefixe de forme en cours = prefixe de forme cliquée (cad si même groupe de reponses)
sh.Fill.ForeColor.RGB = RGB(255, 255, 255) 'colorie forme en cours en blanc
Range("Recap[[R1]:[R3]]").Rows(Mid(nomclic, 2, 1)).Value = 0 'met à 0 les valeurs du tableau (col R1:R3) correspondant à la ligne X (où X est le chiffre désignant la partie - ex : pour P1 : X = 1, pour P2 : X = 2)
End If
Next sh
shclic.Fill.ForeColor.RGB = shclic.Line.ForeColor.RGB 'image cliquée recoit couleur de sa bordure
Range("Recap[" & Right(nomclic, 2) & "]")(Mid(nomclic, 2, 1)).Value = 1 'la colonne relative à la réponse en question (à la ligne de la partie) recoit 1
End SubCdlt,
Merci beaucoup pour votre aide c'est excellent! J'ai encore beaucoup à faire pour en arriver à votre niveau :).