Supprimer image si seulement elles existent Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
N
Nelea
Membre habitué
Membre habitué
Messages : 57
Inscrit le : 22 mars 2019
Version d'Excel : 2016fr

Message par Nelea » 23 mai 2019, 09:40

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 )
NB : je travaille sur un fichier entreprise, je ne peux pas joindre de fichier,
Merci
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 1'198
Appréciations reçues : 77
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 23 mai 2019, 09:55

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
Modifié en dernier par Xmenpl le 23 mai 2019, 10:04, modifié 2 fois.
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'107
Appréciations reçues : 209
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 23 mai 2019, 10:01

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
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 1'198
Appréciations reçues : 77
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 23 mai 2019, 10:07

jmd a écrit :
23 mai 2019, 10:01
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
:good: 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. :P
N
Nelea
Membre habitué
Membre habitué
Messages : 57
Inscrit le : 22 mars 2019
Version d'Excel : 2016fr

Message par Nelea » 23 mai 2019, 10:25

Xmenpl a écrit :
23 mai 2019, 09:55
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 )
NB : je travaille sur un fichier entreprise, je ne peux pas joindre de fichier,
Merci
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 1'198
Appréciations reçues : 77
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 23 mai 2019, 11:02

Je m'en doutais c'était trop facile :mrgreen:
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
N
Nelea
Membre habitué
Membre habitué
Messages : 57
Inscrit le : 22 mars 2019
Version d'Excel : 2016fr

Message par Nelea » 23 mai 2019, 11:50

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
NB : je travaille sur un fichier entreprise, je ne peux pas joindre de fichier,
Merci
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 1'198
Appréciations reçues : 77
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 23 mai 2019, 12:01

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
N
Nelea
Membre habitué
Membre habitué
Messages : 57
Inscrit le : 22 mars 2019
Version d'Excel : 2016fr

Message par Nelea » 23 mai 2019, 13:26

ça ne fonctionne pas, on a une " incompatibilité de type " à cette ligne :
If S.Name = "boite1" or "boite2" or "boite3" Then
NB : je travaille sur un fichier entreprise, je ne peux pas joindre de fichier,
Merci
N
Nelea
Membre habitué
Membre habitué
Messages : 57
Inscrit le : 22 mars 2019
Version d'Excel : 2016fr

Message par Nelea » 23 mai 2019, 15:55

up
NB : je travaille sur un fichier entreprise, je ne peux pas joindre de fichier,
Merci
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message