Menu contextuel sur une forme (shape)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Airone784

XLDnaute Occasionnel
Bonsoir,

Dans ma feuille, j'ai créé un menu contextuel qui s'active quand je fais un clic droit n'importe où sur la feuille. Je voudrais pouvoir utiliser le menu contextuel lorsque je fais un clic droit sur une des formes.
Puis dans ce menu, si je clique sur supprimer la forme, la forme où j'ai cliqué est effacée. Je vous joins un fichier pour que vous tentiez de m'aider.

Merci beaucoup 😀.

Air'one
 
Re : Menu contextuel sur une forme (shape)

Merci beaucoup lone wolf pour l'aide. Par contre, plus tard je veux mettre des liens hypertextes sur mes shapes. Et du coup, ton code ne fonctionne plus. C'est pour ça que je souhaite utiliser le bouton droit comme un menu contextuel. Ouai, je sais ça se corse...
 
Re : Menu contextuel sur une forme (shape)

Bonne idée Lonewolf, cela résous mon problème de lien.

Ce qui me fait arriver à un autre problème. Si ma première shape s'appelle monshape, et que dans mon classeur j'ai une feuille monshape, je voudrais que la feuille de classeur monshape soit sélectionnée lorsque je choisis "entrer" dans mon menu contextuel.

Et si dans le menu contextuel je clique sur supprimer la forme, ma forme et la feuille qui a le même nom que la forme cliquée soient supprimés.
 
Re : Menu contextuel sur une forme (shape)

Bonjour Airone,

je te conseil de ne pas donner le même nom à la feuille, risque de conflit.

Dans la macro "Entrer" tu écrit ceci, c'est un exemple:

Code:
Sub Liens()
Sheets("MesShapes").Select
ActiveSheets.Shapes("monshape").Select
End Sub

Sub Entrer()
Sheets("MesShapes").Delete
ActiveSheets.Shapes("monshape").Delete
End Sub


A+ 😎
 
Re : Menu contextuel sur une forme (shape)

Voilà Airone,

je ne comprend pas pourquoi tu veux supprimer la feuille avec la shape qui contient la macro, mais bon...
J'ai copié la shape essai dans la feuille messhapes (ancien: monshape).

Code:
Sub supp()
'effacer la forme sur laquelle j'ai fait un clic droit
Sheets("messhapes").Shapes("essai").Delete
Application.DisplayAlerts = False
Sheets("messhapes").Delete
End Sub

Sub entrer()
'Sélectionne la feuille qui s'appelle comme ma shape cliquée
Sheets("messhapes").Select
End Sub

C'est bien ça que tu cherche à obtenir?



A+ 😎
 
Re : Menu contextuel sur une forme (shape)

Désolé mais c'est pas encore ça car je voudrais pouvoir soit entrer dans la feuille dont la forme cliquée s'appelle truc ou supprimer la forme cliquée et la feuille qui a le même nom que la forme cliquée.

Je te remets un fichier qui t'aidera peut être à mieux comprendre.

Sur le fichier tu verras, j'ai 3 formes (dupont, durand, martin), si je clique dans mon menu sur entrer, je veux sélectionner la feuille dont le nom est le même que la forme cliquée. Si je clique dans mon menu sur supprimer, je veux supprimer la feuille dont le nom est le même que la forme cliquée ainsi que la forme que je viens de cliquer.


Concrètement, cette feuille me permet de faire un suivi de personnel mais le personnel change, je veux pouvoir à tout moment supprimer la feuille d'une personne qui quitte l'entreprise. Pour aller plus loin dans mon explication, le code que je te demande est précédée sur mon fichier final par un autre code qui permet de créer une bulle avec le nouveau nom d'un employé, mais aussi une nouvelle feuille de classeur avec le nouveau nom d'un employé et enfin le lien hypertexte se génère tout seul aussi suivant une variable qui est en fait le nom de mon employé.

Exemple : si je veux créer DENIS sur mon fichier final, j'ai un bouton qui ouvre une UF et ou je tape denis, je clique sur ok et à partir de là j'ai une forme denis qui est créée sur la feuille 1 de mon classeur puis une feuille qui s'appelle denis est créée dans mon classeur et enfin si je clique sur la bulle denis qui est sur la feuille 1, j'accède directement à sa fiche (donc à la feuille denis de mon classeur).

En espérant que tu comprennes mes (pas trop j'espère) longues explications.
 

Pièces jointes

Dernière édition:
Re : Menu contextuel sur une forme (shape)

Pour automatiser un peu plus le fichier, je te propose ceci:
Note: j'ai du corriger le code suite à un bug.


Code:
'Créer une feuille selon texte dans une cellule et shape avec même nom

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Ws As Worksheet
Sheets("test").Activate

If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
If Selection = "" Then Exit Sub

For Each Ws In Worksheets
If Ws.Name = Target Then MsgBox "Ce nom de feuille existe déjà !": Exit Sub
Next Ws
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = Target
End If
Sheets("test").Shapes.AddShape(msoShapeOval, 10, 10, 60, 50).Name = Target
Sheets("test").Select
End Sub

A+ 😎
 
Dernière édition:
Re : Menu contextuel sur une forme (shape)

Non, comme tu supprime durand par exemple, tu affecte la macro de durand au nouveau nom.

Edit: tu peux aussi remplacer dupont_Clic() par: dupont()



Modifications dernier code:

Code:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Ws As Worksheet
Sheets("test").Activate

If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
If Selection = "" Then Exit Sub

For Each Ws In Worksheets
If Ws.Name = Target Then MsgBox "Ce nom de feuille existe déjà !": Exit Sub
Next Ws
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = Target
End If
With Sheets("test").Shapes.AddShape(msoShapeOval, 10, 10, 142, 50)
.Name = Target
.TextFrame.Characters.Text = Target       'celle-ci t'évite d'écrire le nom da la shape vide
End With
Sheets("test").Select
End Sub

A+ 😎
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
416
Réponses
25
Affichages
604
Réponses
3
Affichages
372
Retour