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.

18book1.xlsm (34.93 Ko)

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 Sub

Je 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,

11book1.xlsm (36.72 Ko)

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

8book1-v2.xlsm (36.68 Ko)

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 ), j'ai mis le tableau sous forme de tableau structuré et ai mis les lignes dans la première boucle (pour ne pas avoir 2 boucles) :

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 Sub

Cdlt,

19book1-v2.xlsm (36.99 Ko)

Merci beaucoup pour votre aide c'est excellent! J'ai encore beaucoup à faire pour en arriver à votre niveau :).

Rechercher des sujets similaires à "double clique simple clic rectangle"