Récupérer l'info qu'un objet précis est bien sélectionné

[Résolu]
Signaler
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018
-
 JujuGa33 -
Bonjour à tous,

Merci à qui aurait un code un peu plus "élégant" que de passer par une macro associée et la valeur d'une cellule pour récupérer l'info qu'un objet précis est sélectionné (Rectangle1 dans mon exemple):
Sub Rectangle1()
'Associée au shape "Rectangle 1"

'shape sélectionné par l'utilisateur
ActiveSheet.Shapes("Rectangle 1").Select

'Info destinée à d'autres macro comme quoi le Shape "Rectangle 1" a été sélectionné
Range("A1").Value = 1

Codialement
End Sub

Comme un truc du genre MonShape = ActiveShape.name (si, si, j'ose!!!)

Rataxes64

5 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
Salut,

la méthode suivante doit être associé aux shapes qui doivent être reconnues:

Public ActiveShape As Shape 'à declarer au niveau d'un module
Sub ShapeClick()
   'A associer à n'importe quel shape

   'shape sélectionné par l'utilisateur
   set ActiveShape = ActiveSheet.Shapes(Application.Caller)
   msgbox ActiveShape.name 'pour la demo
End Sub


De plus tu peux automatiser l'association des shapes avec la macro "ShapeClick"

Sub Associer_ShapesRectangle_Avec_ShapeClick()
    'reservé aux Autoshapes de type rectangle
    Dim MaShapes As Shape
    For Each MaShapes In ThisWorkbook.Worksheets("feuil1").Shapes
        If MaShapes.AutoShapeType = msoShapeRectangle Then
            If Not MaShapes.OnAction "ShapeClick" Then MaShapes.OnAction "ShapeClick"
        End If
    Next
End Sub


A+
Messages postés
377
Date d'inscription
lundi 3 avril 2006
Statut
Membre
Dernière intervention
22 août 2018

Salut à toi bigfish_levrai,

Toujours sur le pont et aussi clair dans tes réponses!

Merci encore

Cordialement
Rataxes64
Bonjour à tous les deux,

je me permets de vous écrire car j'ai besoin d'un coup de main sur l'utilisation de qqc comme ActiveShape. Je vous explique mon cas : j'ai une macro générique (avec une variable, ça marche bien). J'ai 20 formes automatiques de type "plaque" affectées à 20 macros, associant pour chacune un nom à la variable et appelant la macro générique. La macro associée à un nom change la couleur du bouton par la ligne de code : ActiveSheet.Shapes("AutoShape 1").Select + modif de la couleur) , mais j'aimerais que ce soit la générique qui le fasse par un code du genre :
ActiveSheet.Shapes(ActiveShape).Select. Je viens de voir vos échanges et j'ai bien essayé de "bidouiller" la macro de bigfish pour la sélection de la forme automatique de type "plaque" mais rien à faire, je ne trouve pas, nada, que dalle, que d'chi . Si vous pouvez m'aider????
Merci
Voici mon code brut :

Option Explicit
Public NomPoste As String

Sub RecherchePoste()
'ma macro générique
'
Cells(15, 10).Select
Do Until ActiveCell.Value = ""
If Rows(ActiveCell.Row).Find(NomPoste, LookIn:=xlValues) Is Nothing Then
Rows(ActiveCell.Row).Select
Selection.EntireRow.Hidden = True
Else
Rows(ActiveCell.Row).Select
Selection.EntireRow.Hidden = False
End If
ActiveCell.Offset(1, 0).Activate
Loop
End Sub

Sub OP1()
'
' OP1 Macro
' Affiche les documents pour le OP1'
NomPoste = "OP1"
Call RecherchePoste
ActiveSheet.Shapes("AutoShape 270").Select
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(183, 49, 142)
Cells(2, 2).Select
End Sub
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
Salut,

la ligne suivante est à mettre au début de ta macro "générique"

ActiveSheet.Shapes(Application.Caller).Fill.ForeColor.RGB = RGB(183, 49, 142)

A+
Salut Bigfish

je vais tester cela.
Encore merci et bonne continuation!

Juju