[VBA] - Copier coller feuille entière dans un nouveau excel

Résolu/Fermé
Archi89 Messages postés 6 Date d'inscription mercredi 23 juillet 2014 Statut Membre Dernière intervention 29 juillet 2014 - Modifié par Archi89 le 29/07/2014 à 11:28
Archi89 Messages postés 6 Date d'inscription mercredi 23 juillet 2014 Statut Membre Dernière intervention 29 juillet 2014 - 29 juil. 2014 à 13:42
Bonjour tout le monde,

J'ai un soucis, je voudrais copier une feuille entière ("Etape1") de mon classeur actuel (là où il y a ma macro, donc thisworkbook) dans un nouveau classeur dans une feuille "Calcul".
Ce nouveau classeur n'existe encore pas et je voudrais qu'il s'appelle "Visualisation picking.xls" avec trois feuilles ("Picking_S4", "Picking_S5" et "Calcul").
J'ai commencé ce code mais il y a une erreur d'exècution que je ne parviens pas à résoudre:

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

'On créer l'objet Excel
Set xlApp = CreateObject("Excel.Application")
'On défini le nombre d'onglets (ici 2)
xlApp.SheetsInNewWorkbook = 3
'On ajoute un classeur
Set xlBook = xlApp.Workbooks.Add
'On donne un nom au classeur
xlBook.SaveAs ("Visualisation picking.xls")
'On rend le classeur visible.
xlApp.Visible = True
'On créer l'objet onglet dans le nouveau classeur créé
Set xlSheet = xlBook.Worksheets(1)
'On affecte un nom aux l'onglets
xlSheet.Name = "Picking_S4"
'on libère l'objet onglet pour pouvoir en créer un nouveau ... etc
Set xlSheet = Nothing
Set xlSheet = xlBook.Worksheets(2)
xlSheet.Name = "Picking_S5"
Set xlSheet = Nothing
Set xlSheet = xlBook.Worksheets(3)
xlSheet.Name = "Calcul" '
'On remet la propriété de l'application à 3 (par défaut)
xlApp.SheetsInNewWorkbook = 3


Dim classeurSource1 As Workbook, classeurDestination1 As Workbook
Set classeurSource1 = ThisWorkbooks
Set classeurDestination1 = Workbooks("Visualisation picking.xls")

classeurSource.Sheets("Etape1").Cells.Copy classeurDestination.Sheets("Calcul").Range("A1")



Le problème se situe au niveau de la boucle xlBook.SaveAs mais si j'enlève la fin de mon code (à partir de Dim classeurSource1...). Le code marche. La combinaison des deux ne marche pas, comme si il y avait conflit entre xlBook.SaveAs ("Visualisation picking.xls") et Set classeurDestination1 = Workbooks("Visualisation picking.xls")

Merci par avance. ;)
A voir également:

2 réponses

WeaponEDGE Messages postés 113 Date d'inscription vendredi 18 juillet 2014 Statut Membre Dernière intervention 21 novembre 2014 9
29 juil. 2014 à 11:36
Bonjour,

Le problème vient de là :

xlBook.SaveAs ("Visualisation picking.xls")

Quand tu enregistres sous il faut indiquer l'addresse complète comme par ex :

xlBook.SaveAs ("C:\REPERTOIRE\Visualisation picking.xls")
0
Archi89 Messages postés 6 Date d'inscription mercredi 23 juillet 2014 Statut Membre Dernière intervention 29 juillet 2014
29 juil. 2014 à 11:46
Merci.
Je n'avais pas pensé à ceci. Et comment enregistrer directement dans le même répertoire que mon thisworkbook?
Quelle est la syntaxe pour avoir le nom du chemin complet de mon thisworkbook?
Merci
0
WeaponEDGE Messages postés 113 Date d'inscription vendredi 18 juillet 2014 Statut Membre Dernière intervention 21 novembre 2014 9
29 juil. 2014 à 11:54
Dans un premier temps delare une variable public dans un module à part du genre :

Public Chemin as variant (en dehors d'une macro

Ensuite mets le code suiivant dans This Workbook :

Sub Workbook_Open()
Chemin = ActiveWorkbook.Path & "\"
End Sub


La variable Chemin contiendra l'adresse de ton fichier tu n'as plus qu'à utiliser ensuitte :

xlBook.SaveAs (Chemin & "Visualisation picking.xls")
0
Archi89 Messages postés 6 Date d'inscription mercredi 23 juillet 2014 Statut Membre Dernière intervention 29 juillet 2014
29 juil. 2014 à 13:42
Parfait! Merci beaucoup. Il manquait la commande "path" à mon vocabulaire.
0