Supprimer tout les bouton dans une copie de workbook

Bonjour le forum,

je voudrais supprimer tout les boutons contenu dans la copie d'un workbook.

J'ai essayé de le mettre en "non imprimable", de mettre l'option"ne pas déplacer au ajuster avec la cellule,... mais rien y fait.

Je me retourne donc vers le VBA. J'ai vus sur le net ceci qui me semblais être une bonne base :

Sheets("Feuil1").Shapes.SelectAll
Selection.Delete

mais je n'ai aucune idée de comment l'implémenter

J'ai essayé de faire quelque mais sans résultat probant ...

ThisWorkbook.Sheets(shtName).Shapes.SelectAll
Selection.Delete

Je suppose qu'il faut faire une sorte de boucle, mais j'en suis incapable.

Pouvez-vous m'aider svp.

Merci d'avance

Sub SaveForField()
Dim nomfichier As String

nomfichier = ThisWorkbook.Sheets("Legend").Range("I2").Text ' Nom du fichier
RepertoryPath = "C:\Cleanpatch\" & nomfichier & "\" 'Identification du répertoire de sauvegarde

' Vérifier si chemin existe avec l'année, sinon le créer
If Dir(RepertoryPath, vbDirectory) = "" Then MkDir RepertoryPath

Dim Wb As Workbook
Dim shtName As String
Dim nomfichierwb As String
Dim dcol As String
Dim lig As Byte

For i = 2 To ThisWorkbook.Sheets("Legend").Range("F" & Rows.Count).End(xlUp).Row

    shtName = ThisWorkbook.Sheets("Legend").Range("F" & i).Value ' Récupérer le nom de l'onglet
    ' le déverrouiiler
    'Sheets(shtName).Unprotect "MDP"
    If i = 2 Then
        ThisWorkbook.Sheets(shtName).Copy ' copier la feuille
        Set Wb = ActiveWorkbook
    Else: ThisWorkbook.Sheets(shtName).Copy after:=Wb.Sheets(Sheets.Count)
    End If

    With Wb.Sheets(i - 1).Cells
      .Copy
      .PasteSpecial Paste:=xlPasteValues

    End With
    With Wb.ActiveSheet
        dcol = .Cells(.ListObjects(1).HeaderRowRange.Row, .ListObjects(1).ListColumns.Count).Address
            '.Range("K2:" & dcol).EntireColumn.Delete
            .Range("AU2:BG2").EntireColumn.Delete
            .Range("AO:AR").EntireColumn.Delete
            .Range("AG2:AM2").EntireColumn.Delete
            .Range("AE2").EntireColumn.Delete
            .Range("V2:Y2").EntireColumn.Delete
            .Range("P2:S2").EntireColumn.Delete
            .Range("M2:N2").EntireColumn.Delete
            .Range("I2:K2").EntireColumn.Delete
            .Range("C2:E2").EntireColumn.Delete

            .Name = "Field " & ThisWorkbook.Sheets("Legend").Range("F" & i).Text 'Nom onglet
    End With
Next i

nomfichierwb = "For Field " & nomfichier & " " & Format(Date, "dd-mm-yy") & "_" & Format(Time, "hh-mm") ' Nom du fichier
' Wb.SaveAs ThisWorkbook.Path & "\" & nomfichierwb ' Enregistrer-sous
Wb.SaveAs RepertoryPath & nomfichierwb ' Enregistrer-sous

ThisWorkbook.Sheets(shtName).Shapes.SelectAll
Selection.Delete

End Sub

Bonjour

essayez en remplaçant SHAPES par DRAWINGOBJECTS

Donc comme ceci

ThisWorkbook.Sheets(shtName).DrawingObjects.Delete

Si ok pensez à

Cordialement

Bonjour le forum

Bonjour Heavy_B, bonjour Dan

@ Dan : Avec ton code, tu supprimes TOUS les controles contenus dans la feuille.

@ Heavy_B : Ce code ne supprimes que les CommandButton de ta feuille (à modifier pour le nom de ta feuille) :

Sub Sup_Boutons()
Dim Obj As OLEObject

For Each Obj In ActiveSheet.OLEObjects
    If TypeOf Obj.Object Is MSForms.CommandButton Then _
        Obj.Delete
Next Obj
End Sub

Bonne journée à toutes & à tous

@Ericool02

@ Dan : Avec ton code, tu supprimes TOUS les controles contenus dans la feuille.

Bah cela je le sais.

A voir si Heavy a d'autres objets sur la feuille. Ce qu'il ne précise pas.
Raison pour laquelle je lui ai d'abord proposé cette simple ligne plutôt que de boucler sur chacun des boutons

Re,

Oui, j'étais parti sur cette phrase :

je voudrais supprimer tout les boutons contenu dans la copie d'un workbook.

@micalement

Bonjour a vous 2,

merci de vos solution mais

@Dan, j'ai remplacé mes 2 lignes de code à la fin par la tienne mais cela ne supprime rien.

@Ericcool02, j'ai remplacé mes 2 lignes de code par le tien mais il me donne une erreur :"Compile error: User-defined type not defined" sur la ligne du If et surligne "TypeOf Obj.Object Is MSForms.CommandButton"

@Dan, j'ai remplacé mes 2 lignes de code à la fin par la tienne mais cela ne supprime rien.

De mon coté j'ai testé avant de vous poster
Vérifiez à quoi correspond shtname à ce moment là. cela permet de voir si vous avez des boutons sur cette feuille
En revoyant le code, la ligne que je vous ai donnée devrait être placée avant le NEXT i si vous avez des boutons à supprimer sur chaque feuille

Pas facile sans voir votre fichier ou une vue.

Re le fil,

Il est vrai que sans fichier (meme avec pour moi, ti bidouilleur, c'est dès fois dur et voire très dur )

As tu inséré la variable en début de code ? :

Dim Obj As OLEObject

@+

@ Dan, en effet, si je place la ligne avant le "NEXT i" cela fonctionne parfaitement, mais dans le worksheet d'origine, pas la copie...

@ Ericcool02, j'ai placé la variale en début de code avec les autres...

Voici le fichier (le code est celui d'origine)

12mach0003-20240115.zip (643.99 Ko)

re

Mettez juste ceci juste avant le END WITH qui se trouve au dessus du NEXT i

.DrawingObjects.Delete

Super, problème résolu

Merci beaucoup à tout les 2

Rechercher des sujets similaires à "supprimer tout bouton copie workbook"