XL 2016 Bouton unique ajouter/supprimer shape

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.
 

Phil69970

XLDnaute Barbatruc
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
 

TechnologyNewStore

XLDnaute Nouveau
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
 

Membres actuellement en ligne

Statistiques des forums

Discussions
298 901
Messages
1 972 612
Membres
203 781
dernier inscrit
makam