Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Suppression de 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 !

Sly le globe trotter

XLDnaute Occasionnel
Bonjour à tous,

Je dispose dans un fichier, d'un onglet contenant des données et des formes automatiques que j'utilise comme boutons.

Je cherche à copier cet onglet dans un nouveau classeur, puis à supprimer les formes automatiques. Le nom des formes étant changé lors de la copie de l'onglet, j'ai tenté de contourner le problème en utilisant le code suivant
Code:
    For Each S In ActiveSheet.Shapes
        If S.Type = 1 Then S.Delete
    Next

Le code fonctionne correctement, les formes sont bien supprimées. En revanche, à l'ouverture du fichier créé, un message m'indique qu'il contient des erreurs... En forçant l'ouverture, un nouveau message m'indique ceci ...


Pourriez-vous m'aider à identifier ce qui ne va pas et supprimer le problème svp ?

Merci,
Sylvain
 

Pièces jointes

  • Capture.JPG
    19.5 KB · Affichages: 46
  • Capture.JPG
    19.5 KB · Affichages: 48
Re : Suppression de Shape

Bonjour le forum, Sly le globe trotter

Peut être comme ceci

Code:
 For Each Shp In ActiveSheet.Shapes
       If InStr(Shp.Name, "non du shape") =1 Then Shp.Delete
     Next Shp

A+
 
Re : Suppression de Shape

Bonjour fenec,

Merci pour ta réponse.

Je ne suis pas sûr de comprendre le sens du code que tu me proposes...

Je ne connais pas le nom de mes "Shape" car lors de la copie de l'onglet, certains d'entre eux sont renommés automatiquement. C'est pour cette raison que je suis passé par le type des "Shape" pour ne supprimer que mes formes automatiques et pas les images.

Comme indiqué dans mon message, toutes les formes sont bien supprimées mais une erreur est générée à l'ouverture du fichier fraichement créé.

Sylvain
 
Re : Suppression de Shape

Fenec,

Voici comment je réalise la copie de l'onglet
Code:
    Sheets("DataSérie").Copy
    Set fCopy = ActiveSheet
    With fCopy.UsedRange
        .Value = .Value
    End With

L'idée est ensuite de supprimer les formes automatiques dans la feuille copiée.

Sylvain
 
Re : Suppression de Shape

Bonsoir
Normalement avec les Shapes on fait plutôt "CUT" que Delete ... chacun ses méthodes
j'ai testé ça marche aussi , par contre je pige pas "REcopier au dessus de A" ?
 
Re : Suppression de Shape

Bonjour à tous,
Salut Hervé,

"Recopier au dessus de A" est la Zone de Nom



A+ à tous
 

Pièces jointes

  • Capture 2.png
    7.5 KB · Affichages: 56
  • Capture 2.png
    7.5 KB · Affichages: 64
Re : Suppression de Shape

Re, Bonsoir Herv62

J'indiquais simplement ou renommer la forme automatique

Merci d'avoir tester

A+
 

Pièces jointes

  • Sans titre.jpg
    45.4 KB · Affichages: 38
  • Sans titre.jpg
    45.4 KB · Affichages: 37
  • Sans titre.jpg
    45.4 KB · Affichages: 37
Re : Suppression de Shape

Bonsoir à tous

Fenec,
Voici comment je réalise la copie de l'onglet
Code:
    Sheets("DataSérie").Copy
    Set fCopy = ActiveSheet
    With fCopy.UsedRange
        .Value = .Value
    End With
Sly le globe trotter
Tiens, tiens ne serait-ce pas mon code que voilà ...🙄
Donc voici mon code initial modifié pour supprimer les shapes.
Code:
Sub CopyFeuilleValeursSeulesVII()
Dim sPth$, nFic$, fCopy As Worksheet
sPth = "C:\temp\": nFic = "fValSeules.xlsx" ' adapter le chemin et le nom du fichier
Sheets("Feuil1").Copy ' adapter le nom de la feuille
Set fCopy = ActiveSheet
    With fCopy.UsedRange
        .Value = .Value
    End With
    On Error Resume Next
    fCopy.Shapes.SelectAll: Selection.Delete
    With Workbooks(fCopy.Parent.Name)
        .SaveAs sPth & nFic, 51
        .Close True
    End With
End Sub
 
Re : Suppression de Shape

Re
SAlut mon JC , JM
Bin oui mais moi je suis pas devin !!! > recopier la ZONE de nom 😕
JM : Tu as testé , là j'ai pas essayé , sinon le "Resume next" , euh attention pour Debug ? , moi j'enlève
 
Re : Suppression de Shape

Re le forum, herve62, Staple1600

Visiblement j'ai intervenu dans un post déjà ouvert dont tu as donné une solution Staple1600.

Désolé je ne pouvais pas savoir.

Cordialement,

Philippe
 
Re : Suppression de Shape

Bonjour à tous,

Merci à tous pour vos contributions (dans ce post et d'autres !) qui me permettent d'avancer pas à pas en VBA. Toutes mes excuses Staple 1600, j'ai effectivement réutilisé des lignes de code venant de toi mais nullement l'idée de me les approprier 😛

Staple 1600, j'ai testé ta solution
Code:
fCopy.Shapes.SelectAll: Selection.Delete
mais elle supprime toutes les shapes (formes et images).
Je cherche à ne supprimer que les formes d'où ma tentative initial
Code:
    For Each S In ActiveSheet.Shapes
        If S.Type = 1 Then S.Delete
    Next

En revanche, quelque soit la méthode testée, elle génère une erreur dans le fichier à l'ouverture avec du contenu illisible... Herve62, je teste ta méthode dans la soirée et vous tiens au courant.

Merci encore pour votre aide !
Sly
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…