Enregistrer une plage variable dans une seule fichier PDF
Bonjour le forum,
Arès de nombreuses recherches sur Internet, je n'ai pas trouvé la réponse à ma question...
Le Marco Actuelle d'enregistrer dans des fichiers séparé , le soucis c'est que je n'arrive pas a faire créer une macro
qui me permette d'enregistrer ma page active (variable ) au format pdf dans une seule fichier .
Bonne journée à tous
Je vous remercie à l'avance !
Cordialement,
Bonjour Zinelarmi
Si j'ai bien compris et en définissant bien correctement la plage à imprimer de la feuille "Modele"
voici le code à utiliser
Sub GeneratePDFs()
Dim Wbk As Workbook
Dim sPath As String
Dim IDCell As Range
Dim strID As String
Dim mssgResponse As String
With ThisWorkbook
' Définir le chemin source
sPath = .Path
' Créer le sous-dossier si inexistant
On Error Resume Next
MkDir sPath & "\PDF_Files"
On Error GoTo 0
' Désactiver le rafraichissement écran
Application.ScreenUpdating = False
' Pour chaque ligne
strID = .Sheets("Base").Range("A7").End(xlDown).Address
For Each IDCell In .Sheets("Base").Range("$A$7:" & strID)
.Sheets("Modele").Range("H1") = IDCell
If Wbk Is Nothing Then
' Copier la feuille préparée dans un nouveau classeur
.Sheets("Modele").Copy
' Définir le nouveau classeur
Set Wbk = ActiveWorkbook
Else
.Sheets("Modele").Copy After:=Wbk.Sheets(Wbk.Sheets.Count)
End If
.Activate
Next IDCell
End With
With Wbk
.Activate
.Sheets.Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=sPath & "\PDF_Files\" & Format(Now(), "yyyy.mm.dd_hhmm") & ".pdf", _
quality:=xlQualityStandard, includedocproperties:=True, _
ignoreprintareas:=True, openafterpublish:=False
End With
Wbk.Close SaveChanges:=False
MsgBox "PDF file creation finished successfully.", vbInformation, "PDF Creation"
End Sub
Et le fichier
A+
Bonjour le forum,
Bonjour BrunoM45
Je vous remercie beaucoup, c'est exactement ce que j'attendais, sauf un petit reglage dans la plage pour eviter à imprimer les elements hors plage indiquer , Après exécution de la macro, j'ai 20 pages au lieu de 10.
Encore une fois un très grand merci.
Cordialement