Imprimer tous les onglets
b
Bonjour à tous,
j'ai demandé à chat gpt de me créer une macro pour imprimer l'ensemble des onglets d'un fichier.
pour le résultat je n'ai qu'un onglet d'imprimé...
Sub Imprimer_PDF()
Dim CheminDest As String
Dim Feuille As Worksheet
'Récupérer le chemin de destination du PDF
CheminDest = Application.GetSaveAsFilename(FileFilter:="PDF (*.pdf), *.pdf")
'Sortir de la macro si l'utilisateur annule la sauvegarde
If CheminDest = "False" Then Exit Sub
'Début de la configuration de l'impression
With ActiveSheet.PageSetup
.Orientation = xlPortrait 'Orientation de la page
.Zoom = False 'Désactiver le zoom
.FitToPagesWide = 1 'Ajuster à une page en largeur
.FitToPagesTall = False 'Ne pas ajuster à une page en hauteur
End With
'Imprimer chaque feuille
For Each Feuille In ActiveWorkbook.Worksheets
Feuille.PrintOut Copies:=1, ActivePrinter:="Microsoft Print to PDF", _
PrintToFile:=True, PrToFileName:=CheminDest
Next Feuille
End Subest ce que vous savez où ça beug ?
merci d'avance
Bonjour
Pour imprimer tous les onglets il ya 2 cas : soit on veut une pagination continue ou aucune pagination et dans ce cas il suffit de sélectionner tous les onglets et lancer l'impression.
Si chaque onglet doit paginé séparément il faut effectivement une boucle
Je mettrais le PageSetup dans la boucle...
Je pense qu'il manque le nom de chaque pdf et que chaque impression écrase le fichier précédent
b
Merci pour ta réponse:
voila le texte fonctionnant:
Sub Imprimer_PDF()
Dim CheminDest As String
Dim Feuille As Worksheet
Dim DerniereLigne As Long
'Récupérer le chemin de destination du PDF
CheminDest = Application.GetSaveAsFilename(FileFilter:="PDF (*.pdf), *.pdf")
'Sortir de la macro si l'utilisateur annule la sauvegarde
If CheminDest = "False" Then Exit Sub
'Exporter toutes les feuilles de calcul dans un seul fichier PDF
With ActiveWorkbook
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminDest, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
'Mise en page de la première feuille
With .Worksheets(1).PageSetup
.Orientation = xlPortrait 'Orientation de la page en portrait
.Zoom = False 'Désactiver le zoom
.FitToPagesWide = 1 'Ajuster à une page en largeur
.FitToPagesTall = 1 'Ajuster à une page en hauteur
.PrintArea = "" 'Réinitialiser la zone d'impression
End With
'Ajuster la mise en page pour chaque feuille à partir de la 2ème
For Each Feuille In .Worksheets
If Feuille.Index > 1 Then
With Feuille.PageSetup
.Orientation = xlLandscape 'Orientation de la page en paysage
.Zoom = False 'Désactiver le zoom
.FitToPagesWide = 1 'Ajuster à une page en largeur
.FitToPagesTall = False 'Ne pas ajuster à une page en hauteur
.PrintArea = "" 'Réinitialiser la zone d'impression
End With
'Définir la zone d'impression pour chaque feuille
DerniereLigne = Feuille.Cells.Find(What:="*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Feuille.PageSetup.PrintArea = Feuille.Range("A1:IV" & DerniereLigne).Address
End If
Next Feuille
End With
'Afficher un message à la fin de l'impression
MsgBox "L'impression en PDF est terminée."
End Subbonne journée