Se connecter / S'enregistrer
Votre question

[résolu][Macro VBA Excel]Copier/coller entre classeurs&sheets

Tags :
  • Copier coller
  • Programmation
Dernière réponse : dans Programmation
6 Décembre 2007 15:05:12

:hello:  Salut :hello: 
et déjà merci de venir me lire / m'aider.

à défaut de trouver un exemple parlant de mon problème, je viens vous demander un exemple :

je dois copier les cellules B2 à D2
depuis : le classeur "départ.xls", feuille "M"
vers : le classeur "arrivée.xls", feuille "N", cellules E2 à G2
puis entrer la valeur "123456" dans la feuille "O" (toujours dans le classeur arrivée.xls)

pourriez vous me donner un petit bout de code pour me montrer comment faire ca !? j'adapterais à mes besion ;) 
car si je vous montre mon code qui est assez important ca ne serait pas très parlant ou très long à expliquer :-/
et puis données professionnelles et confidentielles :p 
ce serait surtout pour voiur les fonctions utilisées pour le "jonglage" entre les feuilles des différents classeurs car sur le net j'ai trouvé du sheet, worksheets, worksheet("A"), cells, range ...etc. et je ne fais plus la différence entre toutes ces fonctions.

Cordialement.

Autres pages sur : resolu macro vba excel copier coller classeurs amp sheets

6 Décembre 2007 17:36:20

Salut, Gryphus71

Essaie avec ceci (Excel 2003):

Workbooks("départ.xls").Sheets("M").Range("B2:D 2").Copy
Workbooks("arrivée.xls").Sheets("N").Paste Destination:=Range("E2:G2")
Workbooks("arrivée.xls").Sheets("O").Range("E2:G2") = "123456"

Le code ci-dessus suppose que les classeurs arrivée et départ sont ouverts.
Si ce n'est pas le cas, tu peux utiliser:

Workbooks.Open "C:\arrivée.xls"

Bonne continuation
7 Décembre 2007 11:33:53

ok merci bien ;-)
et est ce qu'après avoir fait le copy, je peux de suite fermé le classeur départ.xls avant de faire le paste ?

et comment fonctionne "Application.ScreenUpdating = True" ? car je voudrais faire mes manip de façon invisible (ca évitera des bug d'affichage au passage ^^ et je ne tuerais pas mes collègues épileptiques x-D )
7 Décembre 2007 12:34:03

Salut, Gryphus

Je te conseille de fermer le classeur de départ après avoir coller les valeurs, donc après le .Paste .
Concernant le ScreenUpdating, en cette période de Téléthon, je trouve louable de ta part de vouloir préserver tes collègues malades ;) 
Place un "Application.ScreenUpdating = False" avant la première instruction de ton code et n'oublie pas de mettre un "Application.ScreenUpdating = True" après la dernière instruction.

Bonne continuation
7 Décembre 2007 15:36:36

arf arf arf ... le copy ne fonctionne pas, j'ai tapé ça :

  1. Sheets("ACD").Select
  2. Worksheet.Range(num_ligne_str).Paste


message d'erreur :
Erreur d'exécution '424':
Objet requis

et le debbug se position sur le Worksheet ..

je viens de tester avec ça :
  1. Sheets("ACD").Select
  2. Range(num_ligne_str).Select
  3. ActiveSheet.Paste

j'ai maintenant l'erreur :
Erreur d'exécution '1004':
La méthode Paste de la classe Worksheet a échoué.

Debbug ciblé sur ActiveSheet
7 Décembre 2007 15:47:29

Je n'ai rien dit !!!
pour info : il ne faut ni fermer ni sauvegarder de fichier entre un copy et un paste

:-/ 1h pour m'en rendre compte :-/
jeune homme 22 ans recherche belle corde blonde et bien tissée pour relation très ... proche ... (>_<)
7 Décembre 2007 16:12:27

Content que tu t'en sois sorti tout seul :) 
Pour info:
gryphus71 a dit :
  1. Sheets("ACD").Select
  2. Range(num_ligne_str).Select
  3. ActiveSheet.Paste

Tout ces .Select successifs sont inutiles. Ceci suffit:
  1. Sheets("ACD").Range(num_ligne_str).Paste

C'est ce genre d'instruction qui ralentit grandement l'exécution du code, surtout si on n'utilise pas ScreenUpdating...
Si tu veux en savoir plus, va voir ici, c'est une vrai mine d'or !...
Bonne continuation
7 Décembre 2007 19:06:50

merci pour les infos mais je savais déjà tout ça ^^
j'avais fais exprès d'éclater mon code pour bien cibler le problème
mais je fais tant que possible de la même façon que toi.

et pour le site exclabo, je confirme : il est très bien fait ! je n'y ai (pour le moment) passé que peu de temps mais vraiment très bien expliqué pour ceux que ça peut intéresser !
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS