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

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:

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

Statistiques des forums

Discussions
312 331
Messages
2 087 359
Membres
103 528
dernier inscrit
hplus