Private Sub Worksheet_SelectionChange(ByVal Target As Range) Select Case Target.Address Case "$Z$8" Call AjoutImage("chemin\1.jpg") Case "$Z$9" Call AjoutImage("chemin\2.jpg") End Select End Sub
Option Explicit Sub AjoutImage(ByVal ImageName As String) Dim ObjetImage As Object With ActiveSheet 'on commence par supprimer l'image existante If Not .Range("A1").Value = "" Then Call SupprimerImage .Range("A1").Select Set ObjetImage = .Pictures.Insert(ImageName) 'on enregistre le nom de la nouvelle image en A1 ce qui permettra de l'effacer à la prochaine insertion d'image .Range("A1").Value = ObjetImage.Name End With End Sub Sub SupprimerImage() On Local Error Resume Next 'on supprime l'image à partir de son nom enregistré en cellule A1 ActiveSheet.Shapes(Range("A1").Value).Delete End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionSub AjoutImage(ByVal ImageName As String) Dim ObjetImage As Object, ImageDestination As Range Set ImageDestination = Range("Z1") ' c'est ici que la cellule de destination de l'image est definie Application.ScreenUpdating = False With ActiveSheet 'on commence par supprimer l'image existante If Not ImageDestination.Value = "" Then Call SupprimerImage(ImageDestination) Set ObjetImage = .Pictures.Insert(ImageName) 'on positionne l'image en fonction de la cellule de destination ObjetImage.Top = ImageDestination.Top ObjetImage.Left = ImageDestination.Left 'on enregistre le nom de la nouvelle image en A1 ce qui permettra de l'effacer à la prochaine insertion d'image ImageDestination.Value = ObjetImage.Name End With Application.ScreenUpdating = True End Sub Sub SupprimerImage(ByRef ImageDestination As Range) On Local Error Resume Next 'on supprime l'image à partir de son nom enregistré en cellule de destination ActiveSheet.Shapes(ImageDestination.Value).Delete End Sub