Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

Choops

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

Merci aussi Hasco pour ces précisions !

Bonjour Pierrot93, y'a t-il un avantage à utiliser ton écriture plutôt que celle en 1er post ?
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…