For Each Shape In ActiveSheet.Shapes
If Left(Shape.Name, 13) <> "CommandButton" Then
Shape.Delete
End If
Next Shape
comme suit : Pour chaque objet dans la feuille courante, si les 13 caractères du nom en partant de la gauche est autre que CommandButton, alors il est effacé. Est-ce que j'ai bon ?
Ensuite, j'ai plusieurs boutons présents dans cette même feuille qui ne s'appellent pas CommandButton et je voudrais qu'ils ne soient pas effacés non plus. L'un s'appelle "RESET" et l'autre "Creation". J'ai essayé d'ajouter comme suit mais ça ne fonctionne pas du tout :
Code:
For Each Shape In ActiveSheet.Shapes
If Left(Shape.Name, 5) <> "RESET" & "Creation" & "CommandButton" Then
Shape.Delete
End If
Next Shape
Re : VBA : Effacer tous les objets dans la feuille courante sauf exceptions
Bonjour Choops,
Il faut formuler ainsi :
VB:
For Each Shape In ActiveSheet.Shapes
If Left(Shape.Name, 5) <> "RESET" and Left(Shape.Name, 8)<> "Creation" and Left(Shape.Name, 13)<> "CommandButton" Then
Shape.Delete
End If
Next Shape
Re : VBA : Effacer tous les objets dans la feuille courante sauf exceptions
Bonjour,
Code:
For Each Shape In ActiveSheet.Shapes
If Shape.Name <> "RESET" And Shape.Name<>"Creation" And Left(Shape.Name,13)<>"CommandButton" Then
Shape.Delete
End If
Next Shape
D'ailleurs mieux vaut nommer ta variable autrement que Shape (qui est le nom d'une classe d'objet dans VBA) Shp par exemple.
A+
[Edit] Salut Grand Chaman, Pierrot Cet éditeur de post commence à me courrir
Re : VBA : Effacer tous les objets dans la feuille courante sauf exceptions
Bonjour Choops, Grand Chaman
une autre approche pour supprimer tous les contrôles de la "boité à outils contrôles" sauf les "CommandButton", code à utiliser dans le module de la feuille concernée :
Code:
Dim c As OLEObject
For Each c In Me.OLEObjects
If TypeName(c.Object) <> "CommandButton" Then c.Delete
Next c
Re : VBA : Effacer tous les objets dans la feuille courante sauf exceptions
Re,
peut être un peu plus court... après tout dépend les objets que l'on veut cibler et ou écarter dans une boucle... souvent plusieurs façon d'atteindre un objectif en vba...