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