Nommer puis supprimer une image insérer

Bonjour, la fonction ci-dessous me permet d'insérer une image depuis l'ordinateur et de l'insérer dans une autre feuille que la feuille de ma checkbox dans une ligne vierge ( b étant définis par une autre checkbox) à la taille de la cellule.

Private Sub CheckBox17_Click() 'image divers montage'

Dim nf As Variant

Dim L As Single, T As Single, W As Single, H As Single

If CheckBox17.Value Then

nf = Application.GetOpenFilename("Fichiers jpg,*.jpg")

If Not nf = False Then

L = Worksheets("RECAP").Cells(b, 2).Left + 25

T = Worksheets("RECAP").Cells(b, 2).Top + 25

W = Worksheets("RECAP").Cells(b, 2).Width - 50

H = Worksheets("RECAP").Cells(b, 2).Height - 50

Worksheets("RECAP").Shapes.AddPicture nf, True, True, L, T, W, H

End If

End If

End Sub

Ce que je voudrais, c'est que lorsque ma checkbox = false, l'image qui à était insérer grâce à celle-ci soit supprimé.

Je sais le faire avec un nom d'image définis mais le problème c'est qu'ici, l'image peut avoir n'import quel nom.

Merci pour votre temps.

Bonjour Wiawin et bienvenue sur le Forum,

C'est pas un sujet que je maîtrise mais j'ai déjà essayer de résoudre un problème similaire pour une autre personne sur ce forum.

Je vais donc essayer de te dire ce que je connais sur ce thème, et te filer une piste pour la résolution de ton problème.

Alors, le problème avec la gestion d'une image qui a été insérer c'est que son nom sera random et qu'il n'est pas modifiable.

Par exemple, si tu insére 20 images, alors le nom de tes images iront de "Picture 1" à "Picture 20"

Si tu en supprime 18, tes images garderons le même nom, et si tu insère encore une image, alors elle prendra le nom de "Picture 21" (Alors que tu a 3 images dans ton fichier).

Donc personnellement, pour sélectionner la dernière image insérer (donc celle qui aura le chiffre le plus grand après le "Picture") dans ma feuille, je me sers du code ci-dessous:

Sub DelShape()

Dim x As Integer

For x = 1 To 1000 'Le To 1000 est un exemple, tu peux avoir moins/plus d'image que sa

    On Error Resume Next 'Gestion de l'erreur
        ActiveSheet.Shapes.Range(Array("Picture " & x)).Select 'On selectionne donc toute les images jusqu'à la dernière
    On Error GoTo 0

Next

Selection.Delete 'On supp l'image selectionné

End Sub

Voilà

Donc tu peux t'en servir dans ta procédure comme cela :

If CheckBox.Value = False Then
Call DelShape
End If

Si cette solution ne te conviens pas, je te conseil de te tourner vers l'insertion d'image via ActiveX dans l'onglet Développeur et à la catégorie "Contrôle"

Les ActiveX permettent d'insérer des images, et via la propriété, de modifier leur nom (comme avec les UserForm)

Restant à ta dispo

Je te remercie de ta réponse, tu m'a appris 2 3 trucs mais je ne veux pas supprimer la dernière qui aura était inséré car l'annulation de la checkbox peut se faire après l'insertion d'autre image donc cela ne fonctionnera pas.

Je travail déjà sous ActiveX contrôle:

Je sais insérer une image précise dont je connais le répertoire et le nom et donc la supprimer via son nom mais pas la même chose avec une image random qui sera inséré par l'utilisateur.

Je viens de trouver ma solution en gros :

nf = Application.GetOpenFilename("Fichiers jpg,*.jpg") 'Chercher

Set nom1 = Sheets("RECAP").Pictures.Insert(nf) 'insertion de l'image 'Insertion

nom1.Name = "image1" 'Renommer

Else: Worksheets("RECAP").Shapes("image1").Delete 'Supprimer

Ce qui donne:

Private Sub CheckBox17_Click() 'image divers montage'

Dim nf As Variant

Dim L As Single, T As Single, W As Single, H As Single

Dim nom1 As Object

Dim Fichier As String

If checkbox17.Value Then

nf = Application.GetOpenFilename("Fichiers jpg,*.jpg") 'permet a l'utilisateur d’insérer l'image qu'il veut

If Not nf = False Then

L = Worksheets("RECAP").Cells(b, 2).Left + 25

T = Worksheets("RECAP").Cells(b, 2).Top + 25

W = Worksheets("RECAP").Cells(b, 2).Width - 50

H = Worksheets("RECAP").Cells(b, 2).Height - 50

Set nom1 = Sheets("RECAP").Pictures.Insert(nf) 'insertion de l'image

nom1.Name = "image1" 'Renommer

With nom1.ShapeRange

.LockAspectRatio = msoFalse

.Top = T

.Left = L

.Height = H

.Width = W

End With

End If

Else: Worksheets("RECAP").Shapes("image1").Delete 'Supprimer

End If

End Sub

Merci encore ! =)

Rechercher des sujets similaires à "nommer puis supprimer image inserer"