Supprimer image si seulement elles existent

Bonjour,

J'essaye de supprimer des images dans une feuille excel seulement si elles existent ( et c'est aleatoire ), sinon ça me renvoie une erreur si je met un code qui supprime une image (" image 1" ), si on est dans le cas où elle est pas presente.

Voila un code qui supprime des images qui existent forcement :

Sub Macro()
With Worksheets("Feuil1")
    .Shapes.Range(Array("boite1")).Delete
End With
End Sub

Merci de m'aider à l'adapter dans le cas où les images sont presente ou pas (on ne sait pas )

Bonjour,

Sub Macro1()
'Macro1
   On Error Resume Next
   Dim Img As Object
   For Each Img In ActiveSheet.Pictures
   Img.Delete
   Next Img

End Sub

Ps Ce code supprime toutes les images de la feuille quelque soit leur nom

bonjour à vous

Xmenpl

perso, je déconseille le

On Error Resume Next

disons que dans ce cas trrès simple, je prendrais moi aussi le risque comme tu le suggères

mais ça donne de mauvaises habitudes de programmation, les erreurs doivent en principe faire l'objet d'un "vrai" traitement

amitiés

bonjour à vous

Xmenpl

perso, je déconseille le

On Error Resume Next

disons que dans ce cas trrès simple, je prendrais moi aussi le risque comme tu le suggères

mais ça donne de mauvaises habitudes de programmation, les erreurs doivent en principe faire l'objet d'un "vrai" traitement

amitiés

Bonjour Jmd .. Entièrement d'accord , j'ai d'ailleurs ajouté un Ps car cela supprimes toutes les images

alors que la demande ne le précise pas ? c'est peut-être justement quelques images précises à supprimer.

Bonjour,

Sub Macro1()
'Macro1
   On Error Resume Next
   Dim Img As Object
   For Each Img In ActiveSheet.Pictures
   Img.Delete
   Next Img

End Sub

Ps Ce code supprime toutes les images de la feuille quelque soit leur nom

Bonjour,

Je ne dois pas supprimer toutes les images, mais certaines images avec un nom particulier si seulement elle sont presente (sinon le code plante )

Je m'en doutais c'était trop facile

Sub supp()
With Worksheets("Feuil1")
Dim S As Shape, Trouve As Boolean
Trouve = False
For Each S In ActiveSheet.Shapes
 If S.Name = "boite1" Then Trouve = True: Exit For
Next
If Trouve Then
.Shapes.Range(Array("boite1")).Delete
End If
End With
End Sub

Ton code marche bien pour une seule image mais dans le cas de plusieurs images, je n'arrive pas à l'adapter

Voila ce que j'ai fait, mais ça mouline sans trouver mes images ...

Sub effacer_images()
    With Worksheets("calcul")
        Dim image As Shape

        For Each image In ActiveSheet.Shapes
            If image.Name = "img1" Then
                .Shapes.Range(Array("img1")).Delete

            ElseIf image.Name = "img2" Then

                .Shapes.Range(Array("img2")).Delete

            ElseIf image.Name = "img3"Then
                .Shapes.Range(Array("img3")).Delete

            ElseIf image.Name = "img4" Then
                .Shapes.Range(Array("img4")).Delete

etc etc

            End If

        Next
    End With

re,

j'aurai plutôt noté çà avec des "or" pour les conditions

Sub supp()
With Worksheets("Feuil1")
Dim S As Shape, Trouve As Boolean
Trouve = False
For Each S In ActiveSheet.Shapes
 If S.Name = "boite1" or "boite2" or "boite3" Then Trouve = True: Exit For
Next
If Trouve Then
.Shapes.Range(Array("boite1")).Delete
.Shapes.Range(Array("boite2")).Delete
.Shapes.Range(Array("boite3")).Delete
End If
End With
End Sub

ça ne fonctionne pas, on a une " incompatibilité de type " à cette ligne :

If S.Name = "boite1" or "boite2" or "boite3" Then

up

Bonjour, salut jmd et Xmenpl,

Une piste :

Sub supp()

Dim S As Shape, Trouve As Boolean

With Worksheets("Feuil1")
    For Each S In ActiveSheet.Shapes
        Trouve = False
        For Each Nom In Array("boite1","boite2","boite3")
            If S.Name = Nom Then Trouve = True: Exit For
        Next Nom
        If Trouve Then .Shapes.Range(S.Name).Delete
    Next S
End With

End Sub

PS :

Cette syntaxe n'est pas correcte :

If S.Name = "boite1" or "boite2" or "boite3" Then Trouve = True

A l'inverse de celle-ci :

If S.Name = "boite1" or S.Name = "boite2" or S.Name = "boite3" Then Trouve = True

Bonjour à tous,

Tout simplement :

Dim Img As String, Sh As Shape

    Img = "img1, img2, img3, img4, img5, etc ..."
    For Each Sh In Worksheets("calcul").Shapes
        If InStr(Img, Sh.Name) > 0 Then Sh.Delete
    Next Sh

Pierre

Merci ça fonctionne bien

Bonjour, salut jmd et Xmenpl,

PS :

Cette syntaxe n'est pas correcte :

If S.Name = "boite1" or "boite2" or "boite3" Then Trouve = True

A l'inverse de celle-ci :

If S.Name = "boite1" or S.Name = "boite2" or S.Name = "boite3" Then Trouve = True

Effectivement j''ai répondu un peu vite sur ce coup là

Aprés test ce n'est qu'en répétant trois fois la même procédure que j'ai reussi à le faire fonctionner.

Heuresement la solution de pierrep56 est fonctionnelle.

Rechercher des sujets similaires à "supprimer image seulement existent"