Salut,
Je ne suis pas très doué pour expliquer les codes
Avant de placer une nouvelle image (ou "Forme") dans la colonne E, il faut éventuellement supprimer celle qui serait déjà en place. J'ai trouvé sur la toile un code à l'adresse http://boisgontierjacques.free.fr/pages_site/lesimages.htm#Suppression (troisième code, sous le titre "Efface les shapes d'un champ") et l'ai adapté à ton fichier.
Comme ce code boucle sur toute la feuille - selon ce que j'ai compris - j'ai limité son action à la cellule de la colonne E placé sur la même ligne que la cible qui ne peut être que dans la colonne C (voir ci-dessous ***) par la ligne If Not Intersect(s.TopLeftCell, Target.Offset(0, 2)) Is Nothing Then et comme il y avait une erreur lors du deuxième passage de la boucle ou lorsqu'il n'y a rien à effacer, j'ai alors placé l'instruction On Error GoTo Etiquette.
Si tu effectues ce code en mode "Pas-à-pas" - en ayant à l'écran ton code et ta feuille Excel - tu vois très bien comment fonctionne tout ça.
Le nouveau dessin collé l'est dans l'angle en haut à gauche. Afin de le centrer légèrement, j'ai placé les codes Selection.ShapeRange.IncrementLeft 21 et Selection.ShapeRange.IncrementTop 4 (à voir également en "Pas-à-pas").
Dim s As Shape : Déclare la variable s en tant que "forme". Cette variable sert dans le code qui supprime les anciennes formes en place.
Le code complet ne se déclenche que lors d'un changement sur la feuille "DETAILS COUT PROPOSITION". La ligne If Target.Count > 1 Then Exit Sub empêche le code de continuer si tu as sélectionné plusieurs cellules à modifier.
*** If Not Application.Intersect(Target, Range("C7:C65000")) Is Nothing Then : Il s'agit également d'une limitation de la portée de la macro générale. Si la cellule modifiée n'est pas comprise dans la plage C7:C65000, il ne se passe rien.
J'espère avoir pu t'aider, sinon revient à la charge.
Cordialement.