Bonjour,
Pas le temps de déboguer le système réupéré que tu essaies d'adapter... Si cela peut t'être utile : un système simple et facilement adaptable.
Tu places une liste des noms de tes images. Ici les noms sans extension, l'extension est mise par la macro (.jpg). Cela peut aisément s'adapter...
Cette liste alimente une liste déroulante sur ta feuille d'affichage, en A1 (ça s'adapte aisément aussi). Tu y sélectionnes un nom et l'image correspondante est affichée (angle supérieur gauche cadré sur B2, ce qui s'adapte là encore aisément).
Une seule macro, à placer dans le module de la feuille concernée est nécessaire : elle réagit au changement en A1, supprime l'image existante et la remplace par celle appelée.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dossImg As String, nomImg As String, Img As Object
If Target.Address = "$A$1" Then
On Error Resume Next
Me.Shapes("Image").Delete
On Error GoTo 0
nomImg = Target.Value
If nomImg <> "" Then
nomImg = nomImg & ".jpg"
Else
Exit Sub
End If
dossImg = "D:\Users\Documents\"
On Error GoTo errimg
Set Img = Me.Pictures.Insert(dossImg & nomImg)
On Error GoTo 0
Img.Left = Me.Range("B2").Left + 10
Img.Top = Me.Range("B2").Top
Img.Width = Me.Range("B2").Width - 20
Img.Name = "Image"
End If
Exit Sub
errimg:
If Err.Number = 1004 Then
MsgBox "L'image " & nomImg & " n'a pas été trouvée dans le dossier " _
& dossImg & ".", vbInformation, "Erreur Image"
Else
Resume Next
End If
End Sub
Tu modifies le nom et chemin du dossier contenant les images, bien sûr, Et tu ajustes selon les autres modifications que tu souhaites.
Cordialement.
NB- En relisant, l'image s'ajuste en largeur sur la cellule B2, en se centrant en largeur et laissant une marge de 10 pts de chaque côté, le haut étant aligné sur le bord supérieur de la cellule. Pour conserver cette méthode de dimensionnement-positionnement, tu fais varier la largeur de la cellule réceptrice. Sinon tout cela est modifiable à convenance...