Copier une feuille d'un classeur vers un nouveau classeur et enregistrer

Bonjour,

J'ai un classeur avec 3 feuilles "Données_Source", "Facture" et "Report".

Une fois que la facture est faite, j'exécute une macro qui enregistre des infos dans "Report" puis j'ai un export de ma feuille "facture" en PDF qui s'enregistre dans un dossier (sharepoint) dont le lien est dans la feuille "Donnée_Source".

image

La macro pour l'export en PDF

Sheets("facture").Select
Dim fichierPDF As String
With Worksheets("Facture")
fichierPDF = "\" & Range("G20") & Range("I20") & "_" & Range("F22") & "_" & Range("S21") & ".pdf"
Dossier = Sheets("Données_Source").Range("O2")
chemin = Dossier & fichierPDF
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False
End With

Cela fonctionne très bien.

Je voudrais qu'après avoir fait l'export en PDF, la feuille "Facture" soit copiée dans une nouveau classeur et que ce dernier soit enregistré selon le même principe que l'export PDF.
Malheureusement j'ai fait plusieurs tentatives mais je n'arrive à rien. En désespoir de cause j'ai essayé de copier tout le classeur puis après j'aurai supprimé les feuilles inutiles, mais même cela pose problème. Selon VBA il y a une erreur de compilation là "
ActiveWorkbook.SaveCopyAs chemin
"

Quelqu'un arriverait à m'aider ? Mille merci

Sub Cop()
Dim chemin As String
fichierXLSX = "\" & Range("G20") & Range("I20") & "_" & Range("F22") & "_" & Range("S21") & ".xlsx"
Dossier = Sheets("Données_Source").Range("O3")
chemin = Dossier & fichierXLSX
Application.DisplayAlerts = False
ActiveWorkbook.SaveCopyAs chemin
Application.DisplayAlerts = True
End Sub

Edit modo : code mis entre balises avec le bouton prévu à cet effet </> (merci d'y faire attention)

Bonjour Rafkiller et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum.

Pour votre problématique, 2 choses :

1) Que contient : Sheets("Données_Source").Range("O3") ?

2) Pour enregistrer juste une feuille, il faut l'exporter en 1er lieu et enregistrer ensuite le classeur (pas besoin d'une copie)

Sub Copie()
  Dim Chemin As String, Dossier As String, FichierXLSX as String
  Dossier = Sheets("Données_Source").Range("O3")
  FichierXLSX = "\" & Range("G20") & Range("I20") & "_" & Range("F22") & "_" & Range("S21") & ".xlsx"
  Chemin = Dossier & fichierXLSX
  Application.DisplayAlerts = False
  ThisWorkbook.Worksheets("Facture").Copy
  ActiveWorkbook.SaveAs Chemin
  Application.DisplayAlerts = True
End Sub

Merci de votre participation

Cordialement

Bonjour BrunoM45,

J'ai fait la petite présentation. :)

Sheets("Données_Source").range("O3") contient le chemin d'accès au dossier où je veux sauvegarder le document.

Votre code fonctionne très bien. Je vois que vous avez changé l'ordre des lignes et créé une copie de la page puis un save.

Si maintenant je souhaite supprimer les cellules R1:AA77 du nouveau classeur ainsi créé pour qu'il ne reste plus qu'une seule page (pour faciliter l'impression) c'est possible ou il faut faire tout un autre code ?

Bonjour,

J'ai changé l'ordre des lignes, juste pour une logique de lecture

Pour le "problème" d'impression, il suffit de définir correctement la mise ne page dans le classeur source et c'est bon
zone d'impression = A1:Q72

A+

Merci beaucoup pour ton aide :)

Rechercher des sujets similaires à "copier feuille classeur nouveau enregistrer"