[RESOLU] En VBA supprimer une image

  • Initiateur de la discussion Initiateur de la discussion byters
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

byters

XLDnaute Nouveau
Bonjour je vais essayer d'être claire.

Sur ma feuil2 je copie colle une image et j'ai deux autres images qui me servent de boutons un pour imprimer le contenu de ma feuille et un autre pour effacer le contenu de mon copier coller d'une capture d'ecran.

Mais la ou le bas blesse, c'est quand j'applique l'effacement il m'efface bien mon image de ma capture d'écran mais aussi mes boutons imprimer et effacer.
Voici le code soyez indulgent avec moi je débute.

Code:
Dim img As Object
       For Each img In ActiveSheet.Shapes
       img.Delete
    Next

Merci pour votre aide
 
Dernière édition:
Re : En VBA supprimer une image

Bonsoir byters,

c'est normal qu'avec le code que tu d'écrit, tout les boutons soient supprimés. Les images, les formes et les boutons en vba, sont appellés Shapes. Il faut donc renommer les images d'impression et d'annulation et les mettre chaqu'une dans une cellule (I1, J1 par exemple). L'image que tu colle, dans une autre cellule.

des exemples de Jacques Boisgontier:


Code:
'Supprime le shape nommé Monshape
Sheets("planning").Shapes("Moshape").Delete


'Efface tous les shapes d'une feuille
Sheets("planning").DrawingObjects.Delete


'Efface les shapes d'un champ

Sub EffaceMentShapeChamp()
  For Each s In ActiveSheet.Shapes
    If Not Intersect(s.TopLeftCell, Range("$A$1:$D$20")) Is Nothing Then
       s.Delete
    End If
  Next s
End Sub


'Efface les shapes de la cellule active

Sub EffaceMentShapeCelluleActive()
  For Each s In ActiveSheet.Shapes
    If Not Intersect(s.TopLeftCell, ActiveCell) Is Nothing Then s.Delete
 Next s
End Sub


'Ici la Shape est en cellule B3, mais tu peux mettre B3:H10 (si plusieures Shapes) par ex.

Sub EffaceMentShapeCellule()
  For Each s In ActiveSheet.Shapes
    If Not Intersect(s.TopLeftCell, Range("$b$3")) Is Nothing Then
       s.Delete
    End If
  Next s
End Sub


A+ 😎
 
Dernière édition:
Re : En VBA supprimer une image

Bonjour,

Et merci pour votre réactivité
La capture d'écran je suis obligé de la copier collé et non la mettre dans une cellule, ainsi que les boutons.
Bien que les boutons je les est mis en insertion image.
 
Re : En VBA supprimer une image

En fait je fait une simple copie d'écran puis je fais ctrl+V dans la feuil2 je n'aurais pas d'autre image mon premier code serait nickel mais j'ai voulu donner de la couleur en y insérant des images.
Il n'y aurais pas du code VBA pour lui indiquer que l'image imprimante.png et effacer.png ne soit pas supprimé.

Merci à vous
 
Re : En VBA supprimer une image

Bonjour

J'ai bien relu ta première réponse il est intéressent tout ton code mais comme moi mon image est copié collé avant son impression je ne peux pas mettre un de tes codes plus haut.
 
Re : En VBA supprimer une image

Bonsoir byters, le Forum,

Lorsque tu colle ton image sur ta feuille, elle se colle par rapport à la cellule active, elle fonctionne comme une Shape, donc avec l'une des macros de Lone-wolf tu la fera disparaitre en prenant soin de rappeler son nom dans ta macro.

Avec le fichier joint, si tu appuie sur le bouton, tes images s'effaceront dans la zone "A1:J30.
A toi d'adapter ou de joindre un bout de ton fichier.

@+

EDIT: donc je te conseille de mettre tes "Boutons" hors de la zone d'effacement, la zone est dans mon code du fichier joint.

Tout comme sur ce post:
https://www.excel-downloads.com/threads/supprimer-image.202555/
Ici en postant ton fichier tu auras toutes les réponses à ta problèmatique.

Re @+
 

Pièces jointes

Dernière édition:
Re : En VBA supprimer une image

Bonsoir xhudi69,

C'est nickel merci juste une dernière petite chose pourrais tu me commenter les lignes pour que je sache ce quelles veulent dire si un jour je dois y remettre le nez dedans et modifie quelque chose.

Et encore un grand merci
 
Re : [RESOLU] En VBA supprimer une image

Bonsoir à tous,

J'arrive un peu après la bagarre mais le code d'origine ma paraît pas mal, court et efficace.
Si ce n'est qu'il faudrait tester le type de shape pour effacer ou pas.

Code:
Dim img As Object
       For Each img In ActiveSheet.Shapes
       If img.Type = 13 Then img.Delete
    Next

Désolé, j'ai peut-être lu en diagonale mais ça m'a rappelé une bidouille que j'avais faite y'a fort longtemps.
 
Re : [RESOLU] En VBA supprimer une image

En relisant, il semble que je me sois planté puisque la feuille contient plusieurs shapes de type 13.
Mais bon ça pourra servir à d'autres de savoir que chaque shape a un type et qu'on peut exclure ou inclure tel ou tel type sur une action.
 
Re : [RESOLU] En VBA supprimer une image

Hello le cochon en pantoufles 🙂

RE:

Salut jmps 🙂

tu as raison, mais faut-il encore nomer la copie d'écran lors du "Paste" sur la feuille et la rappeler lors de l'effacement.

@+

Je crois qu'il n'y a ps besoin de nommer l'image, sauf si tu te sers du nom pour l'action (j'ai pas vérifié ton fichier).
Dès que tu fais le Ctrl+V, la shape résultante a le type 13.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour