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

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


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: 42
  • Capture.JPG
    19.5 KB · Affichages: 44

Staple1600

XLDnaute Barbatruc
Re : Suppression de Shape

Re

Sly
Ma macro du message #11 se borne à faire ce que tu disais plus bas
Je cherche à copier cet onglet dans un nouveau classeur, puis à supprimer les formes automatiques

Testes cette nouvelle version (test OK chez moi - XL 2013)
Code:
Sub CopyFeuilleValeursSeulesVIII()
Dim sPth$, nFic$, fCopy As Worksheet, Shp As Shape
sPth = "C:\temp\": nFic = "fValSeulesZZ.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
    For Each Shp In fCopy.Shapes
    If Not Shp.Type = 12 Then Shp.Delete
    Next
    With Workbooks(fCopy.Parent.Name)
        .SaveAs sPth & nFic, 51
        .Close True
    End With
End Sub
 
Dernière édition:

Sly le globe trotter

XLDnaute Occasionnel
Re : Suppression de Shape

Re Staple1600,

J'ai toujours une erreur à l'ouverture du fichier et en forçant l'ouverture les formes auto (rectangles) et les images ont été supprimés...

Je suis sous Excel 2010, je ne sais pas si cela peut avoir un lien,
Sly
 

Staple1600

XLDnaute Barbatruc
Re : Suppression de Shape

Bonsoir à tous

Sly
Une petite question avant d'aller rejoindre Morphée.
Puisque ta macro enregistre la copie de la feuille en *.xlsx, quel est l’intérêt de garder les CommandButton ou autres contrôles ActiveX ou les images ? (car un classeur *.xlsx ne contient plus de macros exécutables)

Pour finir deux dernières macros.
Celle-ci n'efface ni les images, ni les contrôles ActiveX
Code:
Sub CopyFeuilleValeursSeules_vIV()
Dim sPth$, nFic$, fCopy As Worksheet, shp As Shape
sPth = "C:\temp\": nFic = "fValSeulesY.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
For Each shp In fCopy.Shapes
'supprime les shapes mais ni les images, ni les controles Active X
If Not shp.Type = 12 And Not shp.Type = 13 Then shp.Delete
Next
With Workbooks(fCopy.Parent.Name)
.SaveAs sPth & nFic, 51
.Close True
End With
End Sub
Et s'il s'agit de créer une copie "brute" d'une feuille, il y aussi cette possibilité (le format SYLK)
Code:
Sub CopyFeuilleValeursSeules_vV()
Dim sPth$, nFic$, fCopy As Worksheet, shp As Shape
sPth = "C:\temp\": nFic = "fVSeules.slk" ' 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
    With Workbooks(fCopy.Parent.Name)
        .SaveAs sPth & nFic, 2
        .Close True
    End With
End Sub
 
Dernière édition:

Discussions similaires

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