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

Résolu
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 - 11 févr. 2011 à 15:07
 JujuGa33 - 8 nov. 2012 à 11:33
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

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
14 févr. 2011 à 13:35
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+
3
CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 1
14 févr. 2011 à 13:51
Salut à toi bigfish_levrai,

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

Merci encore

Cordialement
Rataxes64
0
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
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
30 oct. 2012 à 15:49
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Salut Bigfish

je vais tester cela.
Encore merci et bonne continuation!

Juju
0
Rejoignez-nous