VBA : Effacer tous les objets dans la feuille courante sauf exceptions

Choops

XLDnaute Occasionnel
Bonjour à toutes et à tous,

Je comprends le code suivant

Code:
    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

Merci d'avance :)
 

Grand Chaman Excel

XLDnaute Impliqué
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

A+
 
G

Guest

Guest
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:)
 
Dernière modification par un modérateur:

Pierrot93

XLDnaute Barbatruc
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

bon après midi
@+

Edition : bonjour Hasco:)
 

Pierrot93

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

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat