Lorsque vous développez des macros qui génèrent du code dynamique comme dans votre exemple, activez toujours l'option système OPTIONS MPRINT; avant l'exécution; cela force SAS à écrire dans le journal le code DATA Step final tel qu'il a été généré par la macro, ce qui est indispensable pour vérifier que votre boucle a correctement remplacé les noms des tables avant que le compilateur ne tente de l'exécuter.