Récupérer le nom d'un groupe de shapes

Manu1

XLDnaute Nouveau
Bonjour à tous,

Je dispose d'une feuille excel où figurent plusieurs blocs (ajoutés par l'utilisateur). J'entends par bloc un groupe de formes, traits ou cadres de texte groupés.

Je souhaite que lorsque l'utilisateur clique sur une de ces formes, le bloc "parent" soit sélectionné en premier et non pas la forme incluse dans ce groupe.

J'utilise pour cela application.caller qui me permet de récupérer l'évènement clic sur la forme. Néanmoins, comment récupérer le nom du groupe "parent" ?

J'ai essayé avec ceci Selection.ShapeRange.Group.Select mais cela ne fonctionne pas.
Merci beaucoup,
 

Manu1

XLDnaute Nouveau
Re : Récupérer le nom d'un groupe de shapes

Merci à vous deux pour vos réponses rapides,

Les deux expressions me donnent l'erreur suivante :

Erreur d'exécution 1004
La valeur tapée est en dehors des limites

Cela veut-il dire qu'il n'existe pas ?
 

Manu1

XLDnaute Nouveau
Re : Récupérer le nom d'un groupe de shapes

Je pense que j'ai identifié l'erreur.

Initialement, dans mon programme, l'utilisateur insérait des blocs via un userform. Ceux-ci étaient copiés depuis une bibliothèque de blocs d'une autre feuille mais aucune procédure n'était affectée au clic.
La ligne Selection.ShapeRange.ParentGroup fonctionne bien pour ces blocs

Pour faciliter la saisie des blocs, je veux que le bloc principal soit sélectionné plutôt que ses composants.
Ainsi, lors de l'insertion du bloc, je définis son nom et j'y affecte un .onAction
Cela déclenche une procédure qui vient sélectionner l'élément initialement cliqué par l'utilisateur et j'utilise ensuite le Selection.ShapeRange.ParentGroup et là ce ne fonctionne pas.

Le .onaction n'est il pas responsable de cela ?
si oui, comment détecter l'évènement clic sur une forme ?
 
G

Guest

Guest
Re : Récupérer le nom d'un groupe de shapes

Bonjour,

Je pense ne pas bien comprendre ce que tu veux mais peut-être que cela te sera utile:
Code:
Sub Clic_shape()
    Dim shp As Shape
    If TypeName(Application.Caller) <> "String" Then Exit Sub
    code_bloc = Application.Caller
    
    Set schema = Worksheets("Schéma")
    On Error Resume Next
    Set shp = schema.Shapes(Application.Caller).ParentGroup
    On Error GoTo 0
    If shp Is Nothing Then
        'Action quand le ParentGroup n'existe pas
    Else
        'Affiché le nom du Groupe parent et du Shape cliqué
        MsgBox "ParentGroupe.name: " & shp.Name & vbCrLf & "Shape cliqué: " & code_bloc
    End If
End Sub

A+
 

Manu1

XLDnaute Nouveau
Re : Récupérer le nom d'un groupe de shapes

Bonjour,

Je vais me débrouiller avec ça. Je ne maîtrise pas encore bien la gestion des erreurs, c'est ce qu'il me manquait pour que cela fonctionne.

Merci beaucoup, bonne journée !
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz