VBA-Supprimer une photo dans une cellule
Fermé
Alvasta
-
25 mars 2016 à 09:42
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 31 mars 2016 à 14:12
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 31 mars 2016 à 14:12
A voir également:
- Vba topleftcell
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba dépassement de capacité ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
4 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
25 mars 2016 à 10:10
25 mars 2016 à 10:10
bonjour
si ta photo an nom par ex:"moi"
ActiveSheet.Shapes("moi").Delete
si ta photo an nom par ex:"moi"
ActiveSheet.Shapes("moi").Delete
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 244
25 mars 2016 à 12:17
25 mars 2016 à 12:17
Bonjour tout le monde,
eric
For Each s In ActiveSheet.Shapes If s.TopLeftCell.Address = "$B$21" Then s.Delete End If Next s
eric
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 25/03/2016 à 12:20
Modifié par michel_m le 25/03/2016 à 12:20
re,
j'ai retrouvé !
il faut baptiser l'image quand on la charge
http://www.cjoint.com/c/FCzlokJB2Nt
les codes insérer e detruire
Michel
j'ai retrouvé !
il faut baptiser l'image quand on la charge
http://www.cjoint.com/c/FCzlokJB2Nt
les codes insérer e detruire
Option Explicit
Sub inserer_image()
Dim Image As Picture
Dim design As String
Range("B21").Select
design = ThisWorkbook.Path & "\virageadroite.jpg"
'design = "http://www.photo-libre.fr/nature/Mini/" & Cells(3, "B")
Set Image = ActiveSheet.Pictures.Insert(design)
With Image.ShapeRange
.Top = Range("B21").Top
.Left = Range("B21").Left
.Name = "cartepost"
.Height = Range("B21").Height - 10
.Width = Range("B21").Width - 10
.LockAspectRatio = msoFalse
End With
End Sub
Sub detruire()
ActiveSheet.Shapes("cartepost").Delete
End Sub
Michel
@ Michel et Eric
J'ai testé les 2 codes et je suis toujours bloqué.
Voici le code:
Pour inserer la photo dans la cellule B21
Option Base 1
Option Explicit
Sub insertpicture()
Dim Image As Variant
Dim sh As Shape
Dim L As Single, T As Single, W As Single, H As Single
Set shEntry = Sheets("AddEntry")
L = Range("B21").Left
T = Range("B21").Top
W = Range("B21").Width
H = Range("B21").Height
Image = Application.GetOpenFilename
If Image <> False Then
shEntry.Shapes.AddPicture Image, True, True, L, T, W, H
End If
'change the name of the picture
shEntry.Activate
For Each sh In ActiveSheet.Shapes
If sh.TopLeftCell.Address = "$B$21" Then
sh.Name = "Youhou"
End If
Next sh
End Sub
Pour supprimer la photo de la cellule B21
Sub saveincident()
Set shEntry = Sheets("AddEntry")
shEntry.Activate
ActiveSheet.Shapes("Youhou").Delete
End Sub
Merci!
J'ai testé les 2 codes et je suis toujours bloqué.
Voici le code:
Pour inserer la photo dans la cellule B21
Option Base 1
Option Explicit
Sub insertpicture()
Dim Image As Variant
Dim sh As Shape
Dim L As Single, T As Single, W As Single, H As Single
Set shEntry = Sheets("AddEntry")
L = Range("B21").Left
T = Range("B21").Top
W = Range("B21").Width
H = Range("B21").Height
Image = Application.GetOpenFilename
If Image <> False Then
shEntry.Shapes.AddPicture Image, True, True, L, T, W, H
End If
'change the name of the picture
shEntry.Activate
For Each sh In ActiveSheet.Shapes
If sh.TopLeftCell.Address = "$B$21" Then
sh.Name = "Youhou"
End If
Next sh
End Sub
Pour supprimer la photo de la cellule B21
Sub saveincident()
Set shEntry = Sheets("AddEntry")
shEntry.Activate
ActiveSheet.Shapes("Youhou").Delete
End Sub
Merci!
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 244
30 mars 2016 à 12:29
30 mars 2016 à 12:29
Bonjour,
Indente ton code et utilise la balise code (icone <>) pour que ça soit lisible.
Là on n'a pas envie de lire quoi que ce soit.
Michel et moi testons avant de proposer, donc chez nous c'est ok.
Dire ça marche pas n'éclaire en rien ton cas.
Dans ce cas déposer un fichier avec ce que tu as fait sur cjoint.com et colle ici le lien fourni.
eric
Indente ton code et utilise la balise code (icone <>) pour que ça soit lisible.
Là on n'a pas envie de lire quoi que ce soit.
Michel et moi testons avant de proposer, donc chez nous c'est ok.
Dire ça marche pas n'éclaire en rien ton cas.
Dans ce cas déposer un fichier avec ce que tu as fait sur cjoint.com et colle ici le lien fourni.
eric
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 244
30 mars 2016 à 13:39
30 mars 2016 à 13:39
Quand j'exécute les bouts de code ajout, nommage et suppression de l'image tout se déroule bien.
Cherche ailleurs, ton problème n'est pas là.
Dire ça marche pas ou je suis bloqué ne veut rien dire...
Cherche ailleurs, ton problème n'est pas là.
Dire ça marche pas ou je suis bloqué ne veut rien dire...
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 244
31 mars 2016 à 11:35
31 mars 2016 à 11:35
Bonjour,
Il doit surtout faire ce que tu as décidé qu'il fasse, c'est toi qui gère.
Si tu as envie d'empiler 50 photos au même endroit il le fera.
Avant d'ajouter une photo en B21 boucle sur tous les shapes et si tu en as déjà une à cet emplacement (.top et .left) soit tu abandonnes, soit tu supprimes pour la remplacer (soit tu empiles mais je ne vois pas l'intérêt à part obtenir un fichier obèse qui plante)
Chaque emplacement de photos doit avoir un nom précis. Et si plusieurs doivent avoir le même nom tu peut démarrer le nom par la ref de la cellule pour les différencier. Ex : "B21_Ident", "B23_Ident"
eric
Je dois rajouter une commande obligant excel à supprimer toutes les images sur ma feuil1 portant le nom Youhou?
Il doit surtout faire ce que tu as décidé qu'il fasse, c'est toi qui gère.
Si tu as envie d'empiler 50 photos au même endroit il le fera.
Avant d'ajouter une photo en B21 boucle sur tous les shapes et si tu en as déjà une à cet emplacement (.top et .left) soit tu abandonnes, soit tu supprimes pour la remplacer (soit tu empiles mais je ne vois pas l'intérêt à part obtenir un fichier obèse qui plante)
Chaque emplacement de photos doit avoir un nom précis. Et si plusieurs doivent avoir le même nom tu peut démarrer le nom par la ref de la cellule pour les différencier. Ex : "B21_Ident", "B23_Ident"
eric
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
31 mars 2016 à 13:15
31 mars 2016 à 13:15
Bonjour,
J'admire ta patience, Eric ;o)
cordialement
J'admire ta patience, Eric ;o)
cordialement
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 244
31 mars 2016 à 14:12
31 mars 2016 à 14:12
Salut michel,
Des fois je m'étonne moi-même :-)
eric
Des fois je m'étonne moi-même :-)
eric
25 mars 2016 à 10:40
Ma photo n'a pas un nom particulier.
Pour charger la photo j'utilise le code suivant:
Sub insertpicture()
Dim Image As Variant
Dim L As Single, T As Single, W As Single, H As Single
Set shEntry = Sheets("AddEntry")
L = Range("B21").Left
T = Range("B21").Top
W = Range("B21").Width
H = Range("B21").Height
Image = Application.GetOpenFilename(, , Picture)
If Image <> False Then
shEntry.Shapes.AddPicture Image, True, True, L, T, W, H
End If
End Sub
Merci pour ton aide
25 mars 2016 à 10:59
25 mars 2016 à 11:12
Dois je modifier le nom de l'image que je l'importe ou quand je l'efface?
25 mars 2016 à 11:19
Image = Application.GetOpenFilename(, , Picture)
te donne normalement le nom de l'image
et donc, sans guillemets à image
ActiveSheet.Shapes(image).Delete
25 mars 2016 à 11:27
ceci ne marche pas.