Ton code supprime une image en place sur la base du nom qui lui a été donné ("nouvelle version") puis va chercher une nouvelle image dans un autre fichier, la colle ici et la renomme avec le même nom pour pouvoir la supprimer au prochain lancement du code.
Je te propose alors de tenter de nommer différemment la deuxième image afin de pouvoir la traiter séparément. Voici une proposition pour la deuxième partie de ce code :
.........
If Not Intersect(Target, .Range("g4")) Is Nothing Then
On Error Resume Next
.Shapes("NOUVELLE VERSION BIS").Delete
Set c = .Range("g4").MergeArea
.Pictures.Insert(design).Name = "NOUVELLE VERSION BIS"
.Shapes(Name).Left = c.Left
.Shapes(Name).Top = c.Top
.Shapes(Name).LockAspectRatio = msoTrue
.Shapes(Name).Height = 100
.Shapes(Name).Width = 100
.Range("A1").Select
End If
......
Afin que la macro puisse effacer cette image nommée "NOUVELLE VERSION BIS", il faut l'introduire manuellement sur ta feuille au préalable, ce que j'ai fait dans le fichier ci-joint. Autrement ta macro va bloquer sur la ligne
.Shapes("NOUVELLE VERSION BIS").Delete
Mais comme je n'ai pas ta banque d'images à disposition, je ne peux pas tester si l'image est bien remplacée. Mais si elle l'est avec l'autre partie du code, elle doit l'être avec cette première partie aussi.
Mon fichier ci-joint comporte cette modification du code.
Le nom de l'image est visible dans la zone de référence :