Microsoft 365 Export 2 onglets en 1 seul PDF suivant critères

raf26

XLDnaute Occasionnel
Bonjour,

Suite à mon post https://excel-downloads.com/threads/export-pdf-vba-suivant-criteres.20083353/, résolu par Phil69970 (merci :) )

j'aimerais sur la base de sa solution, pouvoir exporter avec les mêmes critères de zones d'impression sur 1 seul fichier PDF, les 2 onglets du fichier.

J'ai bien adapté la macro à mon 2ème onglet, mais chaque macro génère un PDF par onglet (normal ...!).

Mais là, j'ai besoin de vos compétences.

Merci et bonne semaine.
 

Pièces jointes

  • test_pdf.xlsx
    555.7 KB · Affichages: 5

fanch55

XLDnaute Barbatruc
Salut,
VB:
Option Explicit
Sub Export_PDF()
Dim CurSh As Worksheet, Sh As Worksheet
Dim ZoneImprim As String, PdfName As String, PdfFullName As String
    Set CurSh = ActiveSheet
    For Each Sh In Sheets(Array("Feuil1", "Feuil2"))
        Select Case WorksheetFunction.Sum(Sh.Range("B4,B16,B29"))
            Case 1: ZoneImprim = "$D$2:$K$12"
            Case 2: ZoneImprim = "$D$2:$K$25"
            Case 3: ZoneImprim = "$D$2:$K$38"
        End Select
        With Sh.PageSetup
            .PrintArea = ZoneImprim
            .CenterHorizontally = True
            .FitToPagesWide = 1
            .Orientation = xlLandscape ' mode paysage ==> A choisir
            '.Orientation = xlPortrait  ' mode portrait ==> A choisir
        End With
    Next
    Sheets(Array("Feuil1", "Feuil2")).Select
        PdfName = Sheets("Feuil1").[O2] & ".pdf"
        PdfFullName = CreateObject("Wscript.Shell").SpecialFolders("MyDocuments") & "\" & PdfName
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfFullName, OpenAfterPublish:=True
        MsgBox "Le fichier PDF est sauvegardé dans " & vbLf & PdfFullName
    CurSh.Select
End Sub
 

raf26

XLDnaute Occasionnel
Bonjour @fanch55

Merci de ton retour.

Cependant je n'arrive pas à adapter à mon classeur le critère de la feuille 2 (Sélect case )

En effet, je peux avoir case1 + feuille 2 ou case 2 + feuille 2

Pour résumer

Feuille 1 : un des 3 critères remplis : PDF de la zone d'impression feuille 1 (case 1 , 2 ou 3 )
+
Feuille 2 : zéro critère rempli dans ce cas, PDF de la zone d'impression de la case concernée de la feuille 1 uniquement
un critère rempli dans ce cas PDF de la zone d'impression de la case concernée la feuille 1 + la zone d'impression de la feuille 2 `

Exemple :
- si je n'ai que le case 1 + 1 critère feuille 2
1 seul PDF avec feuille 1"$D$2:$K$12" + feuille 2 "$D$2:$K$12"

- si je n'ai que le case 2 + 1 critère feuille 2
1 seul PDF avec feuille 1"$D$2:$K$25" + feuille 2 "$D$2:$K$12"

J'espère avoir été assez précise (ça c'est pas sur .... !)

Merci
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

@raf26

Je te propose ce fichier sur la base de Fanch55 de ce que j'ai compris

==> Si aucun critère Feuille2 alors pdf de la feuil1 seul
==> Si aucun critère Feuille1 alors pdf de la feuil2 seul
==> Si critère Feuil1 et feuill2 alors pdf de la feuil1 et de la feuil2

Merci de ton retour
 

Pièces jointes

  • Zone imprim variable et 1 seul PDF avec 1 feuille ou multi feuille v2.xlsm
    565.2 KB · Affichages: 2

Phil69970

XLDnaute Barbatruc
@raf26

Pour moi le critère c'est les 0 ou les 1 en B4, B16 et B29
Dans l'exemple du fichier que je te mets (c'est exactement le même que le post#6)

Il y a B4=0, B16=0, B29=0 pour la feuille 1 ==> donc pas de pdf de la feuille 1
Il y a B4=1, B16=1, B29=0 pour la feuille 2 ==> donc pdf de la feuille 2 avec " $D$2:$K$25"

1719299894072.png
1719299939883.png


Chaque feuille est indépendante.
Donc tu peux avoir:
- Feuille 1 seule (Tout ou en partie suivant ton choix)
- Feuille 2 seule (Tout ou en partie suivant ton choix)
- Feuille 1 et 2 (Tout ou en partie suivant ton choix)
Est ce clair ?
 

Pièces jointes

  • Zone imprim variable et 1 seul PDF avec 1 feuille ou multi feuille v2.xlsm
    565.2 KB · Affichages: 0

fanch55

XLDnaute Barbatruc
Feuille 1 : un des 3 critères remplis : PDF de la zone d'impression feuille 1 (case 1 , 2 ou 3 )
+
Feuille 2 : zéro critère rempli dans ce cas, PDF de la zone d'impression de la case concernée de la feuille 1 uniquement
un critère rempli dans ce cas PDF de la zone d'impression de la case concernée la feuille 1 + la zone d'impression de la feuille 2 `
j'aimerais sur la base de sa solution, pouvoir exporter avec les mêmes critères de zones d'impression sur 1 seul fichier PDF, les 2 onglets du fichier.
re, j'ai voulu conservé le principe de la macro initiale telle quelle, celle-ci ne traitait pas le cas de contrôles manquants .

Je suis également parti sur le principe d'avoir 2 feuilles de même structure ( ce qui semble le cas ), donc les contrôles ont la même adresse sur chaque feuille ... ( B4,B16,B29 )

Code modifié pour ne pas exporter une feuille si les conditions indiquées ne sont pas remplies
VB:
Option Explicit
Sub Export_PDF()
Dim CurSh As Worksheet, Sh As Worksheet
Dim ZoneImprim As String, PdfName As String, PdfFullName As String, Zone As String
    Set CurSh = ActiveSheet
    For Each Sh In Sheets(Array("Feuil1", "Feuil2"))
        Select Case True
            Case Sh.[B29] <> "": ZoneImprim = "$D$2:$K$38"
            Case Sh.[B16] <> "": ZoneImprim = "$D$2:$K$25"
            Case Sh.[B4] <> "":  ZoneImprim = "$D$2:$K$12"
            Case Else:           ZoneImprim = ""
        End Select
        If ZoneImprim <> "" Then
            With Sh.PageSetup
                .PrintArea = ZoneImprim
                .CenterHorizontally = True
                .FitToPagesWide = 1
                .Orientation = xlLandscape ' mode paysage ==> A choisir
                '.Orientation = xlPortrait  ' mode portrait ==> A choisir
            End With
            Zone = Trim(Zone & " " & Sh.Name)
        End If
    Next
    If Zone <> "" Then
        Sheets(Split(Zone)).Select
            PdfName = Sheets("Feuil1").[O2] & ".pdf"
            PdfFullName = CreateObject("Wscript.Shell").SpecialFolders("MyDocuments") & "\" & PdfName
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfFullName, OpenAfterPublish:=True
            MsgBox "Le fichier PDF est sauvegardé dans " & vbLf & PdfFullName
    End If
    CurSh.Select
End Sub
 

Pièces jointes

  • test_pdf F55.xlsm
    565.5 KB · Affichages: 1

raf26

XLDnaute Occasionnel
@raf26

Pour moi le critère c'est les 0 ou les 1 en B4, B16 et B29
Dans l'exemple du fichier que je te mets (c'est exactement le même que le post#6)

Il y a B4=0, B16=0, B29=0 pour la feuille 1 ==> donc pas de pdf de la feuille 1
Il y a B4=1, B16=1, B29=0 pour la feuille 2 ==> donc pdf de la feuille 2 avec " $D$2:$K$25"

Regarde la pièce jointe 1199457 Regarde la pièce jointe 1199458

Chaque feuille est indépendante.
Donc tu peux avoir:
- Feuille 1 seule (Tout ou en partie suivant ton choix)
- Feuille 2 seule (Tout ou en partie suivant ton choix)
- Feuille 1 et 2 (Tout ou en partie suivant ton choix)
Est ce clair ?
Merci de ton retour @Phil69970

Si j'avais bien mieux lu le code, effectivement j'aurais compris !
 

Discussions similaires

Réponses
3
Affichages
179

Membres actuellement en ligne

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD