Bonjour, Salut Eric !
La règle de base simple que je préconise est d'oublier toute idée de Select (qui fait perdre facilement le fil...) et d'appeler les choses par leur nom ! Si on appelle quelqu'un nommément c'est lui qui répondra, pas un autre !
Et comment voit-on dans le code que l'on ne lance pas un appel à la cantonade ( ) mais un appel bien dirigé ? C'est qu'il n'y a jamais dans une ligne de code de Range ou Cells sans point devant (exception faite du cas Range("NomdePlage")
où NomdePlage est un nom unique dans le classeur référant à une plage très précise).
Dans ton bout de code, tu commences par :
With Sheets(i)
mais ensuite :
Range(Cells(9, a), Cells(13, a)).Copy
cette expression qui devrait référer à Sheets(i) n'y réfère pas car non qualifiée : aucun point devant Range et Cells qui la fasse référer à la feuille, VBA ira donc chercher la feuille active au moment d'exécuter cette instruction.
Sheets(i) est peut-être la feuille active au départ, mais juste après :
With Sheets("Prt")
.Select
Là le Select, avec son point, réfère bien à "Prt", donc si Sheet(i) était active auparavant ce n'est plus le cas dans la suite.
Sans décortiquer ton code plus avant dans le détail, note qu'il y a une mauvaise utilisation des With qui sont glissés comme des ornements mais ne sont pas utilisés pour remplir la fonction qui la leur... puisqu'on va même jusqu'à retrouver un ActivveSheet dans un bloc With de la même feuille que tu viens d'activer, tout ça est contradictoire. Et l'imbrication de blocs With référant à des objets différents de même niveau dans la hiérarchie Excel est à éviter...
A éviter aussi les Unload Me prématurés : tu auras un jour la surprise que ton code ne sera tout bonnement pas exécutés car disparu avec le Userform dans lequel il se trouvait avant d'avoir été pris en charge par l'interpréteur de commande (j'ai eu à traiter un cas de la sorte : qui me rappelle toujours ma toute première macro sur Multiplan, où je supprimais par inadvertance les cellules sur lesquelles était inscrite la macro... qui n'est jamais arrivée à terme, et je n'avais pas de copie ! ).
Le conseil d'Eric est judicieux, il est difficile de coder à l'aveuglette et sans un minimum de connaissances de base, ce que tu fais, que cela fonctionne ou non, ne te profite en rien car tu ne disposes pas des éléments indispensables pour comprendre aussi bien ce qui fonctionne que ce qui ne fonctionne pas.
Cordialement.