Supprimer les formulaire de controle sauf certains

bonsoir

je sais que le code suivant

For Each Obj In ActiveSheet.Shapes
If Obj.Type = msoFormControl Then Obj.Delete
Next Obj

permet d'erpurer une feuille de ses formulaires (comme les boutons ) , si je souhaite laissez sur ma feuille un bouton en particulier

comment puis modifier le code precedent ?

merci pour vos réponses

Bonjour

Au moins deux possibilités

Soit avec son nom (en anglais)

Obj.Name

Sa position

Obj.TopLeftCell.Address

Voici une petite macro qui te listera dans la page tous tes contrôles formulaire

Sub Liste()
Dim Obj As Object
Dim Ligne As Long

  Range("A1:E1") = Array("Nom", "Libellé", "Top", "Left", "Cellule")

  Ligne = 2
  On Error Resume Next
  For Each Obj In ActiveSheet.Shapes
    If Obj.Type = msoFormControl Then
      Range("A" & Ligne) = Obj.Name
      Range("B" & Ligne) = Obj.TextFrame.Characters.Text
      Range("C" & Ligne) = Obj.Top
      Range("D" & Ligne) = Obj.Left
      Range("E" & Ligne) = Obj.TopLeftCell.Address
      Ligne = Ligne + 1
      'obj.Delete
    End If
  Next Obj
End Sub

Merci pour tes réponses , mais je n'ai pas trop compris :

j'ai bien identifié le bouton à laisser sur ma page et ceux à effacer , par rapport à tes deux possibilités données je ne vois pas comment les appliquer ?, aussi merci pour la macro permettant de recenser les objets


......ce que je souhaite faire c'est introduire le code :

For Each Obj In ActiveSheet.Shapes
If Obj.Type = msoFormControl Then Obj.Delete
Next Obj

en y indiquant une exception sur le bouton choisi pour qu'il ne soit pas effacé

merci

Salut le forum

Rocket, comme ceci

For Each Obj In ActiveSheet.Shapes
If Obj.Type = msoFormControl And Obj.Name <> "LeNom" Then Obj.Delete
Next Obj

Mytå

Bonjour et merci pour ta réponse , mais on dirait que cela ne marche pas

pour le verifier , j'ai crée 4 boutons sur une feuille dont un s'appelant "button1" portant la macro que tu m'a donnée

For Each Obj In ActiveSheet.Shapes
If Obj.Type = msoFormControl And Obj.Name <> "Button1" Then Obj.Delete
Next Obj
 

il est egalement effacé !

Bonjour

Je pense qu'il y a une espace entre Button et le numéro

For Each Obj In ActiveSheet.Shapes
If Obj.Type = msoFormControl And Obj.Name <> "Button 1" Then Obj.Delete
Next Obj

En utilisant la petite macro que je t'ai faite, tu t'en serais rendu compte

re.... meme en ecrivant "button1" j'ai toujours un effacement de tout les boutons

j'ai meme repris un autre bouton : bouton7 , j'ai nommé le champs "button7" dans le code auquel j'ai affecté la presente macro

tout est effacé , meme le bouton 7

Bonjour

Tu marques

rocket4 a écrit :

meme en ecrivant "button1"

Mais comme je te l'ai déjà indiqué il faut marquer "Button 1" avec une espace entrebutton et le 1

effectivement ca marche du coup ! merci pour ta patience

Rechercher des sujets similaires à "supprimer formulaire controle sauf certains"