Impression pdf
bonjour le Forum
Bonjour à toutes et à tous
je cherche à imprimer des feuilles en pdf, j'ai un code qui fonctionne à ceci prés qu'il m'imprime toutes les feuilles et en fait je souhaite qu'il m'imprime toutes les feuilles sauf 2 qui sont la première et la dernière
ces deux feuilles sont nommées pour le première "procedure" et la derniere "oriclef"
voici le code
Sub pdf()
Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
NomExcel = ThisWorkbook.Name
NomPdf = Left(NomExcel, Len(NomExcel) - 4) & ".pdf"
With pdfjob
If .cstart("/NoProcessingAtStartup") = False Then
MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutisaveDirectory") = 1
.cOption("AutosaveDirectory") = ThisWorkbook.Path
.cOption("AutosaveFilename") = Application.InputBox("INDIQUEZ LE NOM DE SAUVEGARDE ", "Choix du nom", "pesée alpage-" & Format(Date, "yyyymmdd"), , , , , 2)
.cOption("AutosaveFormat") = 0
.cClearCache
End With
ThisWorkbook.PrintOut copies:=1, ActivePrinter:="PDFCreator"
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
With pdfjob
.cDefaultprinter = DefaultPrinter
.cClearCache
.cClose
End With
Set pdfjob = Nothing
End Sub
merci de votre aide toujours precieuse
bonjour le forum
après a force de chercher j'ai trouvé, la persévérance a payé , j'ai eu une étincelle ce matin, ce n'est peut être pas très orthodoxe mais ça marche
je masque les feuilles à ne pas imprimer en début de code et je les affiche en fin de code
je sais les puristes trouverons sans doute cela plus que moyen comme solution mais vu mon niveau je m'en contenterai
je met donc le code ci dessous au cas ou quelqu'un aurait le même souci
bonne journée
Sub Pdf()
Worksheets("procedure").Visible = False
Worksheets("oriclef").Visible = False
Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
NomExcel = ThisWorkbook.Name
NomPdf = Left(NomExcel, Len(NomExcel) - 4) & ".pdf"
With pdfjob
If .cstart("/NoProcessingAtStartup") = False Then
MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutisaveDirectory") = 1
.cOption("AutosaveDirectory") = ThisWorkbook.Path
.cOption("AutosaveFilename") = Application.InputBox("INDIQUEZ LE NOM DE SAUVEGARDE ", "Choix du nom", "pesée alpage-" & Format(Date, "yyyymmdd"), , , , , 2)
.cOption("AutosaveFormat") = 0
.cClearCache
End With
ThisWorkbook.PrintOut copies:=1, ActivePrinter:="PDFCreator"
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
With pdfjob
.cDefaultprinter = DefaultPrinter
.cClearCache
.cClose
End With
Set pdfjob = Nothing
Worksheets("oriclef").Visible = True
Worksheets("procedure").Visible = True
End Sub
Bonjour Francois73,
C'est bien, il faut garder cet état d'esprit de persévérance, ça permet d'avancer ! Les chemins à suivre pour arriver à une solution sont multiples !
Pour ton souci, il faut savoir que le recours à une imprimante PDF tierce n'est plus obligatoire puisqu'Excel intègre cette fonction depuis la version 2007.
Dans ton cas, je te propose ce code qui va sélectionner les onglets nécessaires et imprimer en PDF. Je te laisse adapter le nom du répertoire et du fichier :
Sub imprimePDF()
Dim tbl()
Dim sht As Long, i As Long
Dim repertoire As String, fichier As String
For sht = 1 To Sheets.Count 'on boucle sur toutes les feuilles
If Sheets(sht).Name <> "procedure" And Sheets(sht).Name <> "oriclef" Then
'on crée un tableau qui va contenir les onglets à imprimer
ReDim Preserve tbl(i)
tbl(i) = Sheets(sht).Name
i = i + 1
End If
Next sht
Sheets(tbl).Select 'on ne sélectionne que les onglets voulus
repertoire = ThisWorkbook.Path & "\" 'répertoire à adapter
fichier = "classeur1.pdf" 'nom du fichier à adapter
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
repertoire & fichier, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub