Microsoft 365 Export PDF VBA suivant critères

  • Initiateur de la discussion Initiateur de la discussion raf26
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

raf26

XLDnaute Occasionnel
Bonjour le forum,

J'ai besoin de votre aide pour exporter en PDF certaines zones d'un onglet suivant des critères.

Ces zones se situent sur le même onglet du fichier mais peuvent varier suivant des critères

si B4=1 alors zone à exporter D2:K12
si B16=1alors zone à exporter D2:K25
si B29=1 alors zone à exporter D2:K38

Le nom du fichier à exporter est à récupérer en cellule O2 et le fichier est à enregistrer dans le dossier mes documents.

J'utilise habituellement cette macro qui fonctionne super bien, mais là je bloque pour l'adapter


VB:
Sub Export_PDF()
Dim objShell, LeNom$, strPath$
Set objShell = CreateObject("Wscript.Shell")
strPath = objShell.SpecialFolders("MyDocuments") & "\"
LeNom = Sheets("Donnees").[O2]
ActiveSheet.ExportAsFixedFormat xlTypePDF, strPath & LeNom & ".pdf"

MsgBox "Le fichier PDF est sauvegardé dans Mes Documents"
End Sub


Fichier test en pièce jointe.

Je vous remercie par avance et vous souhaite un bon week-end.
 

Pièces jointes

Solution
Bonjour @raf26

Je te propose ceci :

VB:
Sub Export_PDF()
Dim objShell, LeNom$, strPath$, Cptr As Byte, ZoneImprim
Cptr = WorksheetFunction.Sum(Worksheets("Feuil1").Range("B4,B16,B29"))
Select Case Cptr
Case 1
    ZoneImprim = "$D$2:$K$12"
Case 2
    ZoneImprim = "$D$2:$K$25"
Case 3
    ZoneImprim = "$D$2:$K$38"
End Select

With ActiveSheet.PageSetup
    .PrintArea = ZoneImprim
    .Orientation = xlLandscape ' mode paysage ==> A choisir
    '.Orientation = xlPortrait  ' mode portrait ==> A choisir
End With

Set objShell = CreateObject("Wscript.Shell")
strPath = objShell.SpecialFolders("MyDocuments") & "\"
LeNom = Sheets("Donnees").[O2]
ActiveSheet.ExportAsFixedFormat xlTypePDF, strPath & LeNom & ".pdf"

MsgBox "Le fichier PDF est...
Bonjour @raf26

Je te propose ceci :

VB:
Sub Export_PDF()
Dim objShell, LeNom$, strPath$, Cptr As Byte, ZoneImprim
Cptr = WorksheetFunction.Sum(Worksheets("Feuil1").Range("B4,B16,B29"))
Select Case Cptr
Case 1
    ZoneImprim = "$D$2:$K$12"
Case 2
    ZoneImprim = "$D$2:$K$25"
Case 3
    ZoneImprim = "$D$2:$K$38"
End Select

With ActiveSheet.PageSetup
    .PrintArea = ZoneImprim
    .Orientation = xlLandscape ' mode paysage ==> A choisir
    '.Orientation = xlPortrait  ' mode portrait ==> A choisir
End With

Set objShell = CreateObject("Wscript.Shell")
strPath = objShell.SpecialFolders("MyDocuments") & "\"
LeNom = Sheets("Donnees").[O2]
ActiveSheet.ExportAsFixedFormat xlTypePDF, strPath & LeNom & ".pdf"

MsgBox "Le fichier PDF est sauvegardé dans Mes Documents"
End Sub

Merci de ton retour
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour