Effacer les dessins mais pas le reste.

F

fudô

Guest
Bonjour à tous,

L'autre jour je me demandais comment effacer des dessins sans effacer les boutons de commandes. J'ai trouvé ce code :

Sub EffaceShapes()
Dim Shp As Shape
With Feuil1
For Each Shp In .Shapes
If Not Shp.Type = msoOLEControlObject Then Shp.Delete
Next Shp
End With
End Sub

Il permet d'effacer tout ce qui est formes automatiques en laissant les outils de controles.

Bonne journée.
 

Celeda

XLDnaute Barbatruc
Bonjour,


Super sympa et merci. ;)

Mais la macro s'arrète sur cette ligne avec error 424, objet requis
For Each Shp In Shapes


Je t'ai placé un fichier avec un shape et des boutons pour faire l'essai.
Si tu peux rectificier ce serait sympa. Merci


Celeda [file name=EffaceShape.zip size=8786]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/EffaceShape.zip[/file]
 

Pièces jointes

  • EffaceShape.zip
    8.6 KB · Affichages: 20
F

fudô

Guest
correction

Bonjour Celeda,

Le problème c'est que tu utilises une version anglaise et que dans mon programme j'utilise Feuil1 pour nomer la feuille, alors que pour toi elle s'appelle Sheet1.

Par contre j'ai beau la renomer, ça ne marche pas avec la feuille que tu m'as donner ...

Je te joins le modèle que j'ai fait et qui marche.

Quelqu'un sais pourquoi même en renomant Feuil1 en Sheet1, celà ne marche pas?
 

Rai

XLDnaute Junior
Re:correction

Bonjour,

Je vois plusieurs points qui seraient à corriger pour un meilleur fonctionnement de ton code.

-Pour nommer la feuille :
Sheets('Feuil1') ou Sheets(1)
ou encore
Activesheet ' qui désigne la feuille en cours lors de l'exécution de ta macro

- dans ton bloc With, tu as omis un . devant le Shapes. Du coup VBA ne sait pas à qui ces Shapes appartiennent

- msoOLEControlObject désigne certains contrôles (Boîte à Outils), mais pas les contrôles 'formulaires' ceux-ci se retrouvent donc effacés. (Bouton3 dans le fichier Exemple)

En amélioration je propose le code suivant :

Sub EffaceShapes()
Dim Shp As Shape
With ActiveSheet
For Each Shp In .Shapes
If Not Shp.Type = msoOLEControlObject Or Shp.Type = msoFormControl Then Shp.Delete
Next Shp
End With
End Sub

Bonne fin de semaine
 

Celeda

XLDnaute Barbatruc
Re:correction

Bonjour,

merci beaucoup Rai : le point c'est ma fote, c'est ma très grande fote!!!

et la sheet j'aurai dû y penser sorry fudô
(j''ai pas fait attention à force de changer de version_
pas d'excuse Celeda, faut savoir sur quel pc tu travailles
:) )


merci à tous les deux

Celeda


ps : je te fais noter fudô que les boutons des formulaires sont virés aussi.

Message édité par: Celeda, à: 16/04/2005 16:52
 

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 358
Membres
103 528
dernier inscrit
hplus