Je n'ai pas dit ça ! En fait je n'ai pas regardé ce qu'il faisait.
Ta modification de Target en début de code n'est pas la pratique habituelle de test... Cela fonctionnera cependant, je pratique la modification dans le code de variables passées en arguments, sans que cela pose problème, mais j'évite sur les évènementielles car on peut avoir besoin de revenir à la source...
Mais la ligne que j'ai citée ne peut pas passer, tu utilises une variable déjà initialisée comme variable de boucle et sur elle-même... Je ne saurais même pas dire ce que cela peut produire et comment VBA va le digérer...
En ayant déclaré une variable Range pour ta boucle, tu pouvais écrire :
For Each c In Target.Cells
Je pense que c'est ce que tu voulais faire.
Je n'aurais pas non plus utilisé IsText mais c'est autre chose... tu verras ça en connaissant mieux VBA.
Par contre je note que ton activesheet (ailleurs dans le code) n'apparaît pas sous la forme ActiveSheet. C'est probablement dû à une manipulation de copie de code de l'extérieur... Ça, c'est le genre de choses à éviter absolument à mon avis, car tu introduis une modification dans la façon de réagir de l'assistant. Ce dernier te rétablis les majuscules lorsque tu tapes ton code uniformément en minuscules, et c'est une alerte non négligeable sur les erreurs de frappe, quand tu ne vois pas les mots clés VBA se modifier en passant à la ligne suivante. S'en priver est une source d'erreur.
Et pour l'indentation, à indenter de façon fantaisiste, tu obliges à relire 2 ou 3 fois pour savoir ce qu'on a lu. Une fois devrait suffire et c'est à ça que sert l'indentation.
Je n'ai pas vu de code concernant les images...