Je n'ai pas regardé de trop près ! Mais tu utilises une variable non déclarée dans la procédure et tu ne l'initialises pas. Par conséquent, si elle n'est pas déclarée en dehors (et en dehors veut dire niveau module car dans une procédure les variables n'ont d'existence que le temps de l'exécution), et initialisée quelque part en amont, c'est comme si elle n'existait pas...
Pour le reste je n'ai cherché qu'à écrire un code qui ait quelque chance de fonctionner. Regrouper deux listes à partir de plages distinctes nommées, ça peut pas marcher, pour avoir une liste unique, il faut la recomposer élément par élément... Regrouper les plages avec Union, n'en fait pas une liste, et aurait posé plus problème qu'apporter une solution. Au demeurant, dans la mesure où le but était de les affecter, autant le faire pour chaque plage à la suite. Et pour accéder à chaque plage, la manipulation des noms ne produit que des données String, il faut donc une utilisation à partir de ce type de données, soit avec Range si ça marche, soit par Workbook.Names(xxx).RefersToRange... Et ne pas oublier que + est un opérateur arithmétique, que l'opérateur de concaténation est &, et que ni l'un ni l'autre ne peut faire une plage unique de deux plages distinctes au départ.
Bref, je n'ai pas testé de toute façon car la procédure pas testable en l'état pour ce qui me concerne, sauf que Range avec un nom recomposé renvoyait bien la plage correspondante...
Cordialement