XL 2016 Bouton unique ajouter/supprimer 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 !

TechnologyNewStore

XLDnaute Nouveau
Bonjour à tous,

Je cherche à utiliser un bouton qui permet d'ajouter et supprimer une forme lors du clic sur ce bouton (double action : créer/supprimer).

Voici mon code actuel permettant l'ajout de la "shape" :
VB:
Sub Attention_Cliquer() 'Action sur le bouton cliquer
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 350, 55, 100, 20) 'Crée une forme rectangulaire arrondie à l'emplacement voulu
    With shp
        .TextFrame2.TextRange.Characters.Text = "ATTENTION" 'Texte "ATTENTION"
        .TextFrame2.TextRange.Characters(-1, -1).Font.Fill.ForeColor.RGB = RGB(255, 255, 255)  'Ecriture en blanc
        .TextFrame2.TextRange.Characters(-1, -1).Font.Bold = True 'Ecriture en gras
        .Fill.ForeColor.RGB = RGB(192, 0, 0) 'Remplissage rouge bordeau
        .Line.ForeColor.RGB = RGB(192, 0, 0) 'Bordure rouge bordeau
    End With
shp.Select 'Sélectionner la forme
    With Selection 'Permet de régler les différents alignements
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Orientation = xlHorizontal
    End With
ActiveSheet.Range("F4").Select 'Sélectionner la cellule F4
End Sub

Pourriez-vous m'orienter pour désormais supprimer la shape lorsque je cliquerai de nouveau sur ce bouton svp ?

Merci d'avance.
 
Bonjour @TechnologyNewStore

Je te propose
==> Il suffit de la nommer lors de la création 😉

VB:
Option Explicit

Sub Attention_Cliquer() 'Action sur le bouton cliquer
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 350, 55, 100, 20) 'Crée une forme rectangulaire arrondie à l'emplacement voulu
    With shp
        .TextFrame2.TextRange.Characters.Text = "ATTENTION" 'Texte "ATTENTION"
        .TextFrame2.TextRange.Characters(-1, -1).Font.Fill.ForeColor.RGB = RGB(255, 255, 255)  'Ecriture en blanc
        .TextFrame2.TextRange.Characters(-1, -1).Font.Bold = True 'Ecriture en gras
        .Fill.ForeColor.RGB = RGB(192, 0, 0) 'Remplissage rouge bordeau
        .Line.ForeColor.RGB = RGB(192, 0, 0) 'Bordure rouge bordeau
       
        '******
        shp.Name = "MaShape" 'nom de ma shape (à modifier si tu veux)
        '******
       
    End With
shp.Select 'Sélectionner la forme
    With Selection 'Permet de régler les différents alignements
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Orientation = xlHorizontal
    End With
ActiveSheet.Range("F4").Select 'Sélectionner la cellule F4
End Sub

'*******
'*******

Sub efface() 'Et pour l'effacer
ActiveSheet.Shapes("MaShape").Delete
End Sub

*Merci de ton retour

@Phil69970
 
Merci pour la réponse @Phil69970
Cependant, je viens d'essayer et cela ne fonctionne pas.
J'ai essayé de remplacer
VB:
ActiveSheet.Range("F4").Select 'Sélectionner la cellule F4
par
Code:
ActiveSheet.Shapes("MaShape").Select 'Sélectionner la forme
pour sélectionner la forme mais cela ne change rien..

Ne faut-il pas adapter ceci :
Code:
Sub efface() 'Et pour l'effacer
ActiveSheet.Shapes("MaShape").Delete
End Sub
pour dire que lorsqu'on reclic sur le bouton "Attention_Cliquer", cela supprimer la forme ?

Merci pour l'aide
 
- 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
Retour