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

  • Initiateur de la discussion Initiateur de la discussion Choops
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 🙂
 
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+
 
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:
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🙂
 
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 ?
 
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...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

M
Réponses
4
Affichages
975
mimich_88
M
M
Réponses
6
Affichages
1 K
mimich_88
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…