Copier coller une plage sur un autre fichier
Bonjour à tous,
voila mon souci...
j'ai deux fichiers ouverts en meme temps
fichier 1 = nom : Macro All Demands et un onglet "Studies'"
fichier 2 = nom : YYYYMMDD All Demands Master Plan et un onglet "Studies"
j'ai une plage nommée "newstudies" dans le fichier "YYYYMMDD All Demands Master Plan" dans l'onglet "Studies", je voudrai copier cette plage dans le fichier "Macro All Demands" dans l'onglet "Studies" et sur une cellule nommée "hautstudies".
Voila j'espère que je suis clair, je pense que oui.
Voici mon code, mais bon, vous connaissez le résultat j'imagine ... lol
Sheets("Studies").Range("Studies!newstudies").Copy Workbooks("Macro All Demands.xlsm").Sheets("Studies").Range("Studies!hautstudies" + 1)
le "+1" à la fin correspond à ma plage "hautstudies" plus 1 ligne ... mais pas sûr que ça soit juste.
Merci pour votre précieuse aide.
Laurent
Bonjour,
C'est pas très clair :
« une cellule nommée "hautstudies" » « correspond à ma plage "hautstudies" »
- hautstudies est une cellule ou une plage de cellules ?
« "hautstudies" plus 1 ligne »
- Est-ce la ligne en dessous de "hautstudies" ?
Le plus simple et le plus lisible est de définir les plages avant la copie (vérifie le nom des classeurs) :
Option Explicit
Sub xxx()
Dim src As Range
Dim dst As Range
' Définir la plage source : plage newstudies
Set src = Workbooks("YYYYMMDD All Demands Master Plan.xlsx").Worksheets("Studies").Range("newstudies")
' Définir la cellule de destination : cellule en dessous de hautstudies
Set dst = Workbooks("Macro All Demands.xlsm").Worksheets("Studies").Range("hautstudies").Offset(1)
' Effectuer la copie
src.Copy Destination:=dst
End Sub
Lorsqu'on travaille sur plusieurs classeurs, il est très fortement conseillé de toujours définir celui sur lequel on veut agir.
Sans les commentaires en 3 lignes pour la clarté du code et la facilité de maintenance :
Option Explicit
Sub xxx()
Dim src As Range
Dim dst As Range
Set src = Workbooks("YYYYMMDD All Demands Master Plan.xlsx").Worksheets("Studies").Range("newstudies")
Set dst = Workbooks("Macro All Demands.xlsm").Worksheets("Studies").Range("hautstudies").Offset(1)
src.Copy Destination:=dst
End Sub
Note :
- L'objet Sheet n'a pas d"existence propre en VBA. L'objet Range n'appartient pas à l'objet obtenu par Sheets(xx) !
Ce dernier en hérite dans certains cas, et donc, c'est une source d'erreur d'écrire, souvent par fainéantise pour économiser 4 frappes :
Sheets("Studies").Range("Studies!newstudies")...
L'écriture correcte est :
Worksheets("Studies").Range("Studies!newstudies")...
Bonjour et bienvenue sur le forum
Bonjour à tous
Un essai à tester si j'ai bien compris. Te convient-il ?
Bye