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

Rechercher des sujets similaires à "copier coller plage fichier"