Comment déterminer en vba si une image existe

Résolu/Fermé
mic13710 Messages postés 1087 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 - 5 mars 2009 à 15:31
mic13710 Messages postés 1087 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 - 5 mars 2009 à 17:46
Bonjour,

J'ai le code suivant pour effacer une image et pour ensuite la remplacer:

Sheets("Impression").Select
ActiveSheet.Shapes("Image parcours").Delete

Le problème c'est que quand l'image n'existe pas, la macro plante.
Je voudrais donc vérifier que l'image existe avant de la supprimer et si elle n'existe pas de passer à l'instruction suivante. Comment puis-je faire ça?

Merci pour votre aide
A voir également:

2 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
5 mars 2009 à 17:24
Bonjour,

L'instruction pour passer au delà de l'erreur est la suivante :

On Error Resume Next
Sheets("Impression").Select
ActiveSheet.Shapes("Image parcours").Delete


Ainsi en cas d'absence de l'image il passe à l'instruction suivante

AJOUT : Une autre solution un peu plus élégante :
Dim Ma_Forme As Shape
For Each Ma_Forme In Sheets("Impression").Shapes
    If Ma_Forme.Name = "Image parcours" Then
        Ma_Forme.Delete
        Exit For
    End If
Next Ma_Forme


On boucle sur toute les formes de la feuille et si on trouve la bonne on la supprime.

A+
5
mic13710 Messages postés 1087 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 13 mai 2021 355
5 mars 2009 à 17:46
Merci Pilas31 pour ton aide.

C'est super, ça marche nickel!
J'avais essayé ce code avant de poster mon message, sans succès. J'avais sans doute dû le positionner au mauvais endroit. Pas encore au top avec VBA.

Certes, la deuxième solution est pas mal, mais est-ce bien utile de balayer toutes les images à partir du moment ou on sait ce que l'on cherche? A mon sens, on fait des boucles pour rien et ça ralenti l'exécution.

Merci encore.
0