Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 [Résolu] Création nouveau classeur puis copie onglets VBA

Spinzi

XLDnaute Impliqué
Bonjour à tous,

J'ai un fichier source avec 3 onglets (cf PJ).

Je souhaite dupliquer ces 3 onglets avec toutes leurs spécificités (button, tableau, etc.) ainsi que les modules compris dans le fichier source vers un autre classeur.

Cet autre classeur est créé via une invite utilisateur qui rentre le nom du fichier souhaité et le sauvegarde.

Mon problème :
_Mon code ne copie pas les onglets sur le fichier nouvellement créé mais sur un autre fichier.
_De plus j'ai une erreur d'exécution 1004 : "Mircosoft [...] ne peut accéder au fichier [...]".
_Mes fichiers plantent à la suite de la macro et je dois les fermer.

Je suis novice en VBA et j'ai monté le code tout seul donc je suis preneur de toute astuce et code détaillé.
Voici le code :
Code:
Sub Exporter()
Dim Chemin As String, Nom As String, Chemin_Complet As String

'// On bloque le rafraichissement de l'écran + affichage d'erreur + calcul automatique
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False
  Application.Calculation = xlCalculationManual

Set Newbook = Application.Workbooks.Add 'creation
  Chemin = ThisWorkbook.Path & "\"
  Nom = InputBox("Nom du fichier à sauvegarder :", "Nom fichier")
  Chemin_Complet = Chemin & Nom & ".xlsm"
  
  Newbook.SaveAs Filename:=Chemin_Complet, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
  
  Workbooks("Test").Activate
  ThisWorkbook.Sheets("1").Copy
  ActiveWorkbook.SaveCopyAs Filename:=Chemin_Complet
  ThisWorkbook.Sheets("2").Copy
  ActiveWorkbook.SaveCopyAs Filename:=Chemin_Complet
  ThisWorkbook.Sheets("3").Copy
  ActiveWorkbook.SaveCopyAs Filename:=Chemin_Complet

'// On débloque le rafraichissement de l'écran + affichage d'erreur + calcul automatique
  Application.ScreenUpdating = True
  Application.DisplayAlerts = True
  Application.Calculation = xlCalculationAutomatic
  
End Sub

Merci d'avance,

Spinzi
 

Pièces jointes

  • Test.xlsm
    18.1 KB · Affichages: 34
Dernière édition:

Spinzi

XLDnaute Impliqué
Petit up :

le but de cette macro est de garder le fichier source ouvert (il est long à ouvrir car lié à d'autres fichiers sur d'autres serveurs) en créant un nouveau fichier sélectionné via une invite et en dupliquant tous les onglets de la source à l'intérieur (+ module macro !).

Toute aide est la bienvenue, car ca dépasse mes compétences (le pas à pas à des limites) =)

Edit : j'ai essayé un code de cet acabit mais le probleme c'est que mes formules gardent les liaisons avec mon fichier source
Code:
FichierOùCopier = ActiveWorkbook.Name
  Application.Workbooks.Add
  FichierOùColler = ActiveWorkbook.Name
  Workbooks(FichierOùCopier).Activate
  Sheets("1").Select
  Sheets("1").Copy After:=Workbooks(FichierOùColler).Sheets(2)
  Workbooks(FichierOùCopier).Activate
  Sheets("2").Select
  Sheets("2").Copy After:=Workbooks(FichierOùColler).Sheets(2)

J'ai également essayé un code optimisé comme celui ci :
Code:
Workbooks("Test").Sheets("1").Copy
Workbooks("Test").Sheets("2").Copy
mais le code me copie les onglets dans de nouveaux classeurs


Spinzi
 
Dernière édition:

Spinzi

XLDnaute Impliqué
Bonjour,

je laisse tomber ce fil car en réfléchissant il ne peut y avoir de bonne solution pour mon problème (pour garder les liaisons entre fichier la copie ne fonctionne pas). Je n'ai donc pas le choix que de rouvrir mon fichier à chaque fois.

Spinzi
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…