Microsoft 365 Supprimer certaines formes personnalisées

pat66

XLDnaute Impliqué
Bonjour le forum,

Je souhaite supprimer toutes formes de ma feuille sauf les 5 ci dessous en cliquant sur la forme "Ellipse 624"
"Ellipse 624", "Rectangle : coins arrondis 212", "Rectangle : coins arrondis 213", "Rectangle : coins arrondis 214", "Rectangle : coins arrondis 219"

Je vous remercie d'avance pour votre aide et vos conseils

cdt
 

piga25

XLDnaute Barbatruc
Bonjour pat66,
sans fichier exemple pas facile, mais essais avec cela :
VB:
Private Sub Ellipse624_Click()
    Dim Shape As Shape
    Dim ShapeName As String

    ' Liste des formes à conserver
    Dim ShapesToKeep As Variant
    ShapesToKeep = Array("Ellipse 624", "Rectangle : coins arrondis 212", "Rectangle : coins arrondis 213", "Rectangle : coins arrondis 214", "Rectangle : coins arrondis 219")

    For Each Shape In ActiveSheet.Shapes
        ShapeName = Shape.Name
        If Not IsError(Application.Match(ShapeName, ShapesToKeep, 0)) Then
            ' La forme doit être conservée, on passe à la suivante
        Else
            Shape.Delete
        End If
    Next Shape
End Sub
 

piga25

XLDnaute Barbatruc
RE,
Comme dit précédemment avec un fichier exemple c'est mieux.
En attendant avez-vous vérifié cela:
  • Nom de la forme: Vérifiez attentivement le nom exact de la forme "Ellipse 624" dans votre feuille. S'il est différent, modifiez-le dans le code.
  • Liste des formes à conserver: Adaptez la liste ShapesToKeep en fonction des noms exacts des formes que vous souhaitez conserver.
 

Phil69970

XLDnaute Barbatruc
@pat66

As tu essayé le fichier !!

Tu penses bien que j'ai testé le fichier avant de le mettre sur le fil !!!
Et bien sur j'ai pas ce que tu me dis!!!!
20241021_114528.gif
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @pat66 :), à tous ;),

Je ne vois pas comment ce que vous voulez faire peut être efficient avec l'utilisation du nom des formes.
Il suffit de supprimer une forme, de la recréer et son nom aura changé (c'est ce qui vous est d'ailleurs arrivé :confused:). Et les noms attribués par Excel sont d'une taille démesurée et totalement contre-intuitifs.

J'ai pensé à une méthode faisant fi du nom des formes.

Le principe est d'attribuer aux formes à conserver une macro X et ne pas attribuer cette macro X aux autres formes. Ainsi quand on clique sur n'importe quelle forme ayant la macro X affectée, on supprime toutes les formes sauf celles qui ont cette macro X d'affectée. X est la macro de nom "Conserver" dans le code.

Il y a deux autres macros qui servent à gérer tout ça :
La macro : AffecterMacroConserver
  • Sélectionner les formes pour lesquelles on veut affecter la macro "Conserver" et lancer la macro
  • Ces formes seront conservées quand la macro "Conserver" sera exécutée
La macro : SupprimerMacroConserver
  • Sélectionner les formes pour lesquelles on désire ôter l'affectation de la macro "Conserver" et lancer la macro
  • Ces formes seront supprimées quand la macro "Conserver" sera exécutée
 

Pièces jointes

  • pat66- Suppr Formes sauf- v1.xlsm
    130.6 KB · Affichages: 2
Dernière édition:

pat66

XLDnaute Impliqué
re,

Et bien, je viens enfin de tester la solution de Dranreb du #7, c'est simple, court et efficace, j'ai pas tout compris dans la syntaxe, mais je n'ai pas à nommer les formes dans la macro, je peux ajouter d'autres formes boutons, pour moi, mais c'est parfait !!!!

une précision, cette syntaxe efface les formes qui n'ont pas de macros à exécuter, c'est bien çà ??

un grand merci à tous et à Dranreb en particulier

cdt
 

Statistiques des forums

Discussions
315 093
Messages
2 116 139
Membres
112 669
dernier inscrit
Guigui2502