Suppression de Shape

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 ...
Capture.JPG

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

Merci,
Sylvain
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    19.5 KB · Affichages: 42
  • Capture.JPG
    Capture.JPG
    19.5 KB · Affichages: 43

Sly le globe trotter

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

fenec

XLDnaute Impliqué
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
    Sans titre.jpg
    45.4 KB · Affichages: 33
  • Sans titre.jpg
    Sans titre.jpg
    45.4 KB · Affichages: 32
  • Sans titre.jpg
    Sans titre.jpg
    45.4 KB · Affichages: 32

Staple1600

XLDnaute Barbatruc
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à ...:rolleyes:
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
 

fenec

XLDnaute Impliqué
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
 

Sly le globe trotter

XLDnaute Occasionnel
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 :p

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
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 333
Membres
103 519
dernier inscrit
Thomas_grc11