Adapter une macro pour imprimer en PDF 4 plages de données

Bonjour à tous.

Nouvel inscrit, je précise que je me débrouille en tant qu'utilisateur.

Merci par avance, d'adapter votre réponse à mon niveau débutant.

Mon objectif final idéal serait : pouvoir imprimer en 1 clic un pdf de 4 pages, correspondant à 4 plages de données d'un tableau Excel.

Un résultat satisfaisant serait : pouvoir imprimer en 1 clic 4 plages de données, dans 4 PDF différents (que je fusionnerai moi-même).

Les plages de données sont figées :

P3:U56 —— AA3:AF56 —— AL3:AQ56 —— AW3:BB56

J'ai trouvé (et adapté) un morceau de code pas trop mal pour l'impression en PDF :

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

Donc concrètement, ce que je fais pour l'instant c'est :

> sélection 1ère plage de données

> Zone d'impression > Définir

> bouton de commande

> PDF n°1 créé

> sélection 2eme plage de données

> Zone d'impression > Définir

> bouton

> PDF n°2 ...

etc.

Auriez-vous des suggestions pour améliorer le code ? afin d'optimiser/simplifier ma démarche.

S'il est possible de traiter les 4 impressions PDF en 1 bouton de commande, ça serait nickel

(même si le nom du PDF n'est pas générer de la même façon ...)

Par avance, merci ...

Bonjour,

A tester.

Faire attention au nom de fichier (caractères interdits).

Option Explicit
Sub CommandButton1_Click()
Dim ws As Worksheet
Dim rng As Range
Dim strPath As String
Dim myFile As Variant
Dim strFile As String

    On Error GoTo errHandler

    Set ws = ActiveSheet
    Set rng = ws.Range("P3:U56,AA3:AF56,AL3:AQ56,AW3:BB56")

    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
        rng.ExportAsFixedFormat _
                Type:=xlTypePDF, _
                Filename:=myFile, _
                Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, _
                OpenAfterPublish:=False

        MsgBox "fichier PDF créé"
    End If

exitHandler:
    Set rng = Nothing
    Set ws = Nothing
    Exit Sub
errHandler:
    MsgBox "Could not create PDF file"
    Resume exitHandler
End Sub

Génial ... ça fonctionne parfaitement. Un grand merci. 8)

(même en utilisant les caractères «interdits» que sont les points et apostrophes (que je trouve + lisibles) )

Question subsidiaire, si ce n'est pas trop demandé ...

Comment remplacer la ligne :

& Format(Now(), "yyyy.mm.dd hh'mm") _

par un équivalent à : =L5&" "&M5&" "&M33

Re,

Essaie :

With ws
        Set rng = .Range("P3:U56,AA3:AF56,AL3:AQ56,AW3:BB56")
        x = .[L5] & " " & .[M5] & " " & .[M33]
        strFile = Replace(Replace(.Name, " ", ""), ".", "_")
        strFile = strFile & " " & x
    End With

nota : n'oublie pas 'Dim x as string'

Cela ne fonctionne pas :

Option Explicit
Sub CommandButton1_Click()
Dim ws As Worksheet
Dim rng As Range
Dim strPath As String
Dim myFile As Variant
Dim strFile As String
Dim x As String

    On Error GoTo errHandler

With ws
        Set rng = .Range("P3:U56,AA3:AF56,AL3:AQ56,AW3:BB56")
        x = .[L5] & " " & .[M5] & " " & .[M33]
        strFile = Replace(Replace(.Name, " ", ""), ".", "_")
        strFile = strFile & " " & x & ".pdf"
End With

    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
        rng.ExportAsFixedFormat _
                Type:=xlTypePDF, _
                Filename:=myFile, _
                Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, _
                OpenAfterPublish:=False

        MsgBox "fichier PDF créé"
    End If

exitHandler:
    Set rng = Nothing
    Set ws = Nothing
    Exit Sub
errHandler:
    MsgBox "Could not create PDF file"
    Resume exitHandler
End Sub

Re,

Y-a-t'il n message d'erreur?

Et lequel et où?

Cdlt.

La boite de dialogue avec : «Could not create PDF file» s'affiche ...

Re,

Envoie un fichier, et le résultat attendu pour le nom de fichier.

Cdlt.

Merci de prendre la peine de me répondre ^^

J'ai enlevé quelques trucs pseudo-confidentiels ...

Mais en résumé, dans les premières colonnes je copie des données brutes relevées sur une journée.

L5 représente le jour (exemple 2014.11.13 jeudi )

M5, j'y rentre à la main l'heure voulue (exemple '15:00 )

M3, idem (exemple '20:00 )

La finalité idéale (même si ton code m'aide déjà bien) serait de ne pas avoir à renommer le fichier.

Le fichier s'appelle PDF.xlsm

Le résultat attendu serait par exemple : PDF 2014.11.13 jeudi 15h00 20h00 .pdf

ou si la génération d'un H est délicate : PDF 2014.11.13 jeudi 15'00 20'00 .pdf

58pdf.xlsm (72.92 Ko)

Re,

Voir fichier modifié en conséquence.

Cdlt.

101pdf.xlsm (70.70 Ko)

Quelle réactivité. En voyant la solution par substitution, ça parait évident … encore faut-il avoir certains réflexes que je n’ai pas.

Vraiment … MERCi !

Étant modo depuis pas mal d’années, je sais l’investissement personnel que cela représente.

Bonne continuation.

Rechercher des sujets similaires à "adapter macro imprimer pdf plages donnees"