macro PDF (enregistrer sous) fonctionnelle à adapter pour 4 plages fixes de données

Ctrl-Alt-Suppr

XLDnaute Junior
Bonjour à tous.

Dans un seul et même onglet, j'ai 4 plages fixes de données (non voisines).
J'aimerai en 1 clic de bouton, imprimer ces plages en PDF.
L'idéal serait même que mon PDF fasse 4 pages, avec 1 page = 1 plage de données.

Après multiples recherches sur la toile, le code qui semble me correspondre le mieux est le suivant.

Étant débutant, QUI PEUT M'AIDER À ADAPTER LE CODE POUR TRANSFORMER
LA ZONE D'IMPRESSION «sélection active» EN 4 PLAGES IMPOSÉES ?


Mes plages figées étant : P3:U56 —— AA3:AF56 —— AL3:AQ56 —— AW3:BB56

Code:
Sub CommandButton2_Click()
Dim ws As Worksheet
Dim strPath As String
Dim myFile As Variant
Dim strFile As String
On Error GoTo errHandler

Set ws = ActiveSheet
strFile = Replace(Replace(ws.Name, " ", ""), ".", "_") _
            & "  " _
            & Format(Now(), "yyyy.mm.dd\  hh'mm ") _
            & ".pdf"
strFile = ThisWorkbook.Path & "\" & strFile

myFile = Application.GetSaveAsFilename _
    (InitialFileName:=strFile, _
        FileFilter:="PDF Files (*.pdf), *.pdf", _
        Title:="Select Folder and FileName to save")

If myFile <> "False" Then
    ws.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=myFile, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True

    MsgBox "fichier PDF créé"
End If

exitHandler:
    Exit Sub
errHandler:
    MsgBox "Could not create PDF file"
    Resume exitHandler
End Sub
 

kiki29

XLDnaute Barbatruc
Re : macro PDF (enregistrer sous) fonctionnelle à adapter pour 4 plages fixes de donn

Salut, l'enregistreur de macros est là pour ça, bref tu pourrais obtenir qqch comme
Code:
    Application.Goto Reference:="Zone"
    ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
 

Ctrl-Alt-Suppr

XLDnaute Junior
Re : macro PDF (enregistrer sous) fonctionnelle à adapter pour 4 plages fixes de donn

Comme déjà sous-entendu dans un autre sujet, quand on n'est pas du tout programmeur, la logique du code n'est pas évidente ; et par exemple fusionner range (1) + print (1) puis range (2) + print (2) ... etc. apparaît comme infaisable à mon niveau ... d'où ma venue sur un forum tel que le votre.

D'ailleurs l'enregistreur de macros me donne ceci pour la première plage :
Code:
Sub Macro1()
    Range("P3:U56").Select
    ActiveSheet.PageSetup.PrintArea = "$P$3:$U$56"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
End Sub

Hors ta réponse fait appel à Application.Goto ou encore ExecuteExcel4Macro.
Un complément de réponse serait le bienvenue ^^
Par avance, merci.
 

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 838
dernier inscrit
Christelle.B86