![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
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. |
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Localisation: Near the pink town
Messages: 2 518
|
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] |
|
|
|
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
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? |
|
|
|
#4 (permalink) |
|
XLDnaute Junior
Date d'inscription: février 2005
Messages: 62
|
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 |
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Localisation: Near the pink town
Messages: 2 518
|
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 |
|
|
|
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|