Globalement, ton code est assez alambiqué en effet !
j'ai fais aussi bien dans la mesure de mes connaissances et aides diverses
mais j'avoue que celui ci m'aura pris un certains temps..
et c'est une excellent "école", très bonne façon d'apprendre ...
L'instruction suivante n'a plus d'intérêt, son seul intérêt était dans le cas d'une gestion d'erreur n'ayant pas eu la macro complète et l fichier au départ
.ListObjects(1).Name = NomTable
ton code d'origine est très bien, l'erreur venait non pas du code mais de la fusion de cellules puis l'absence de nom.
@ Jean-Eric : je ne suis sûr qu'on ait besoin de
.Columns("A:U").AutoFit
puisque le fait de le mettre en tableau suffit à reformater les colonnes.