Bonjour à tous,

J'ai une macro qui est supposée me dessiner des objets selon les valeurs entrées dans ma feuille. A chaque fois que la feuille se modifie, ces formes sont susceptibles de changer. Il faut donc préalablement effacer toutes les formes, avant de dessiner les nouvelles. Le problème, c'est que je veux quand même en garder une, mais je ne sais pas comment faire... Voilà le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim s As Shape
    For Each s In Shapes
        If s Is Not Shapes("SchemaBateau") Then  'ou
        If Not s = Shapes("SchemaBateau") Then  'ou
        If s <> Shapes("SchemaBateau") Then
            s.Delete
        End If
    Next
    Dim index As Integer
    For index = 1 To N
        Shapes.AddShape(msoShapeSmileyFace, _
                        Shapes("SchemaBateau").Left + (Lpanneaux + 2 * R * (index - 1)) / Lht * Shapes("SchemaBateau").Width, _
                        Shapes("SchemaBateau").Top + Shapes("SchemaBateau").Height - (Tirant - R) * Shapes("SchemaBateau").Width / Lht, _
                        2 * R * Shapes("SchemaBateau").Width / Lht, _
                        2 * R * Shapes("SchemaBateau").Width / Lht).Fill.ForeColor.RGB = vbYellow
    Next
Je suis obligé de lui dire "Supprime toutes les formes sauf SchemaBateau" parce que le nombre de formes à dessiner dépend des paramètres de la feuille. les 3 possibilités pour le If que j'ai mises ci-dessus ne marchent pas.

Question donc : comment effacer toutes les formes, sauf celle appelée "SchemaBateau" ? Sachant que ma démarche n'est pas forcément la bonne...

Merci à tous !