En plus de ce qu'à écrit fort justement unparia, quelques remarques.
Quand tu écris :
Dim r1, r2, myMultipleRange As Range
Seul myMultipleRange est déclaré comme Range. r1 et r2 sont déclarés Variant.
Pour que tous soient Range, il faut écrire :
Dim r1 As Range, r2 As Range, myMultipleRange As Range
Il est étrange de déclarer r1 et r2 mais pas les 4 autres r.
Dans ce code :
1 2 3 4
| Sheets("Fiche d'activité Médicale").Select
Set r4 = Sheets("Fiche d'activité").Range("A10:G39")
Set r5 = Sheets("Fiche d'activité").Range("W10:AC39")
Set r6 = Sheets("Fiche d'activité").Range("AT10:AZ39") |
Je ne comprend pas la raison de la ligne avec la première ligne qui semble complètement inutile.
Ca :
myMultipleRange = Union(r1, r2, r3, r4, r5, r6).Copy
Je ne vois vraiment pas ce que ça signifie.
A ma connaissance, le Copy de Range est une méthode qui ne renvoie pas de valeur. Il est donc inutile de la précéder d'un "=", avec ou sans Set.
Faire un Select sur une feuille et, ensuite, faire référence à cette feuille, c'est redondant.
Supprime la première ce ces deux lignes, ça marchera tout aussi bien.
Sheets("Base de Travail").Select
Worksheets("Base de Travail").Range("A65536").End(xlUp).Offset(1, 0).Select
Et ceci
Sheets("Base de Travail").Select
Worksheets("Base de Travail").Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
peut s'écrire plus simplement :
Worksheets("Base de Travail").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Paste
Partager