Microsoft 365 Suppression shape avec son nom

GGPS58

XLDnaute Occasionnel
Bonjour à tout le forum.
Ci-dessous la description de ce qui me pose problème.
J'ai un shape que j'insère dans une feuille excel.
Je le renomme.
Quand je veux en mettre une autre, je tente de la supprimer mais la macro ne trouve pas le shape avec le nom que je lui ai attribué.
Est-ce que l'un de vous saurait me dire où je fais une erreur ?
Ci-joint un fichier d'illustration
 

Pièces jointes

  • Suppression ligne.xlsm
    18.1 KB · Affichages: 12

jmfmarques

XLDnaute Accro
Bonjour
cela veut probablement dire que ce que tu veux détruire n'a pas le nom que tu penses lui avoir attribué.
Je n'ouvre jamais un classeur tiers et n'ai donc pas ouvert le tien. J'ignore donc tout du code que tu as écrit,; tant pour créer et nommer cet élément que pour le détruire.
Je te conseille d'exécuter ceci, qui te permettra de savoir si existe l'élément en cause, avec le nom que tu penses qu'il a :
VB:
For Each S In Shapes
  MsgBox S.Name
Next
Ce devrait être ton tout premier réflexe.
 

GGPS58

XLDnaute Occasionnel
Bonjour à tous, après moultes tentatives j'ai enfin trouvé.


VB:
Sub Macro1()

'On Error Resume Next
ActiveSheet.Shapes("LIGNE").Delete
ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 100, 10, 100, 100).Select
    With Selection.ShapeRange.Line
        .Visible = msoTrue
        .ForeColor.RGB = RGB(0, 176, 80)
        .Transparency = 0
        .Weight = 4.5
        .Name = "LIGNE"
    End With
End Sub

J'avais mis le renommé dans mon groupe "with".
En le sortant, cela fonctionne parfaitement.
Mon code est maintenant :
Code:
Sub Macro1()

'On Error Resume Next
ActiveSheet.Shapes("LIGNE").Delete
ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 100, 10, 100, 100).Select
    With Selection.ShapeRange.Line
        .Visible = msoTrue
        .ForeColor.RGB = RGB(0, 176, 80)
        .Transparency = 0
        .Weight = 4.5
    End With
    Selection.Name = "LIGNE"

End Sub

Merci de vos conseils
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Juste une variante d'écriture
VB:
Sub Macro1b()
Dim sh As Shape
On Error Resume Next
ActiveSheet.Shapes("LIGNE").Delete
Set sh = ActiveSheet.Shapes.AddConnector(1, 100, 10, 100, 100)
sh.Name = "LIGNE": sh.Line.ForeColor.RGB = RGB(0, 176, 80): sh.Line.Weight = 4.5
End Sub
 

Discussions similaires

Réponses
10
Affichages
555

Statistiques des forums

Discussions
312 520
Messages
2 089 288
Membres
104 088
dernier inscrit
said4u