Tom's Guide > Forum > Programmation > [résolu][Macro VBA Excel]Copier/coller entre classeurs&sheets

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

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

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

: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.


Message édité par gryphus71 le 07-12-2007 à 19:10:41
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Salut, Gryphus71

Essaie avec ceci (Excel 2003):

Workbooks("départ.xls" ).Sheets("M" ).Range("B2:D2" ).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

Répondre à Gillou_gre

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 )

Répondre à gryphus71

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

Répondre à Gillou_gre

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

Code :
  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 :

Code :
  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

Message cité 1 fois
Message édité par gryphus71 le 07-12-2007 à 15:43:55
Répondre à gryphus71

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 ... (>_< )


Message édité par gryphus71 le 07-12-2007 à 16:00:33
Répondre à gryphus71

Content que tu t'en sois sorti tout seul :)
Pour info:

gryphus71 a écrit :

Code :
  1. Sheets("ACD" ).Select
  2. Range(num_ligne_str).Select
  3. ActiveSheet.Paste



Tout ces .Select successifs sont inutiles. Ceci suffit:

Code :
  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

Répondre à Gillou_gre

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 !

Répondre à gryphus71
Tom's Guide > Forum > Programmation > [résolu][Macro VBA Excel]Copier/coller entre classeurs&sheets
Aller à :

Il y a 662 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens