Copier un tableau d'un classeur vers un autre

P

Pierre

Guest
Bonjour le Forum

J'aimerai à l'aide d'une macro, copier la feuil1 du classeur 1 vers la feuil2 du classeur 2.
Et tous ca sans ouvrir le classeur 1 ou en tous cas pas manuellement, si la macro ouvre ce classeur, j'aimerai qu'après la copie, elle le ferme automatiquement et si possible sans me demander de l'enregistrer.

Est ce possible?

Si oui pouvez vous m'indiquez la marche à suivre.

Merci d'avance.

Pierre
 
T

Temjeh

Guest
Bonjour

Tes classeurs doivent etre dans le même directory

A mettre dans un module du classeur 2
Ps vérifi le nom exact de tes classeurs

Sub Copie_Tout()
Dim chemin
chemin = ActiveWorkbook.Path
Application.DisplayAlerts = False
ChDir ActiveWorkbook.Path
Workbooks.Open Filename:=chemin & '\\' & 'classeur 1'
Sheets(1).Select
Cells.Select
Selection.Copy
Windows('classeur 2').Activate
Sheets(2).Select
Range('A1').Select
ActiveSheet.Paste
Windows('classeur 1').Activate
ActiveWindow.Close SaveChanges:=False
Range('A1').Select
Application.DisplayAlerts = True
End Sub

A+

Temjeh
 
T

Temjeh

Guest
Toujours les même prob de slash barre prend celui-ci

Sub Copie_Tout()
Dim chemin
chemin = ActiveWorkbook.Path
Application.DisplayAlerts = False
ChDir ActiveWorkbook.Path
Workbooks.Open Filename:=chemin & '/' & 'classeur 1'
Sheets(1).Select
Cells.Select
Selection.Copy
Windows('classeur 2').Activate
Sheets(2).Select
Range('A1').Select
ActiveSheet.Paste
Windows('classeur 1').Activate
ActiveWindow.Close SaveChanges:=False
Range('A1').Select
Application.DisplayAlerts = True
End Sub

Temjeh
 
P

Pierre

Guest
Re

est t'il possible de faire la même chose mais il faudrait que la macro nous demande ou ouvrir le classeur 1. C'est a dire que l'on puisse mettre le dossier ou on le désire sur le disque dur et qu'on puisse également le nommer comme on le désire.

Par contre, on copiera toujours la feuil1 du classeur 1, la feuille gardera toujours le meme nom.

Pierre
 
T

Temjeh

Guest
Rebonsoir

Essaie-ca
Un peut plus long je buggait sur une ligne et myDearFriend! est venu a mon aide


Dim Wbk As Workbook
Application.Dialogs(xlDialogOpen).Show
Application.DisplayAlerts = False
Set Wbk = ActiveWorkbook
Sheets(1).Select
Cells.Select
Selection.Copy
Windows('classeur2').Activate
Sheets(2).Select
Range('A1').Select
ActiveSheet.Paste
Wbk.Activate
ActiveWindow.Close SaveChanges:=False
Range('A1').Select
Application.DisplayAlerts = True

A+

Temjeh
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Pierre, Temjeh,

Oui Temjeh, merci de me citer, mais voilà ce qui arrive quand on répond à une question sans connaitre l'exact problème rencontré...
Je t'ai effectivement passé un bout de code tout à l'heure (qui n'a plus grand chose à voir avec ce que je vois là d'ailleurs), mais en consultant ce fil, je me rend compte que la méthode employée n'est pas forcément la plus adaptée.

On le répète tous les jours, avec VBA, il est souvent inutile d'activer ou sélectionner les objets (feuilles, cellules, etc....) pour pouvoir les manipuler.

La simple procédure suivante, collée dans un module de code général (Module1 par exemple) devrait suffir pour répondre à notre ami Pierre :
Sub Traitement()
        If Not Application.Dialogs(xlDialogOpen).Show Then Exit Sub
        ActiveWorkbook.Sheets('Feuil1').Cells.Copy Destination:= _
                          ThisWorkbook.Sheets('Feuil2').Cells
        ActiveWorkbook.Close SaveChanges:=False
End Sub
Cordialement,

Message édité par: myDearFriend!, à: 18/01/2006 02:33
 
P

Pierre

Guest
Bonjour myDearFriend!,Temjeh, le forum

Tout d'abord merci pour votre aide.

Code:
Sub Traitement()
        If Not Application.Dialogs(xlDialogOpen).Show Then Exit Sub
        ActiveWorkbook.Sheets('Feuil1').Cells.Copy Destination:= _
                          ThisWorkbook.Sheets('Feuil2').Cells
        ActiveWorkbook.Close SaveChanges:=False
End Sub

Ce code fonctionne parfaitement.

Mais est ce possible de modifier le :

Sheets('Feuil1') par son code name
J'ai essayé de mettre le code suivant mais il me marque une erreur.
Code:
Sub Traitement()
        If Not Application.Dialogs(xlDialogOpen).Show Then Exit Sub
        ActiveWorkbook.Feuil1.Cells.Copy Destination:= _
                          ThisWorkbook.Sheets('Feuil2').Cells
        ActiveWorkbook.Close SaveChanges:=False
End Sub
Merci de votre aide.

Pierre
 
T

Temjeh

Guest
Rebonjour Pierre

Et merci encore myDearFriend! pour ton code tes rappels de ne pas activée les feuils avant(je ne suis pas programmeur mais je prend juste des code trouvés ici je modifies mais je vais apprendre)

Pour ta question Pierre je suis pas sûr de comprendre mais avec l'ordre des feuilles c'est plus sur:

Sheets(1) pour la 1ere feuil
Sheets(2) pour la 1ere feuil

A+

Temjeh
 

Discussions similaires

Statistiques des forums

Discussions
312 487
Messages
2 088 824
Membres
103 971
dernier inscrit
abdazee