XL 2013 2 onglets enPDF sur Bureau

jeromeN95

XLDnaute Impliqué
Hello,

besoin d'aide svp. J'essaye de faire une simple macro pour mettre 2 onglets en PDF sur le bureau :

VB:
Sub PDF_SAVE()
Dim Fic As String
Dim LeDate As String

LaDate = Format(Date, "dd" & "." & "mm" & "." & "yyyy")

' Création fichier PDF
  Fic = Sheets(Array("Contrat", "ContratPret")).Select & "\Contrat" & " " & Sheets("Choix").Range("C4").Value & " " & Sheets("Choix").Range("C5").Value & " " & Sheets("Choix").Range("C7").Value ' donner le nom voulu pour le correspondant

  If Dir(Fic) <> "" Then Kill Fic 'création du PDF dans le même dossier que le fichier 
    
    Sheets(Array("Contrat", "ContratPret")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Fic & " " & LaDate & " " & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False

    Sheets("Choix").Select

' Message de confirmation
MsgBox ("Création du fichier PDF effectué sur le bureau" & vbCrLf & vbCrLf & "Merci de le retourner signée ")

End Sub

Hellas, c'est le drame depuis 2h.
L'idée est donc d'enregistrer les onglets "Contrat" et "ContratPret" en formet PDF avec en nom de fichier le nom d'un client, la ville, … contenu en ChoixC4, C5, C7.

D'avance merci, je sais que c'est une syntaxe dans Sheets (Array("...
 
Solution
Salut, @jeromeN95
une version light donne ceci.
Mais il y a un tout petit peu mieux avec les CodeNames
Cela permet de renommer les onglets sans avoir à retoucher au code VBA.

VB:
Option Explicit

Sub Tst_2007()
Dim sNomFichierPDF As String
Dim Ar(1) As String

    sNomFichierPDF = ThisWorkbook.Path & "\" & "Contrat.pdf"

    Ar(0) = Feuil1.Name
    Ar(1) = Feuil2.Name

    Application.ScreenUpdating = False
    Sheets(Ar).Select

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                    Filename:=sNomFichierPDF, _
                                    Quality:=xlQualityStandard, _
                                    IncludeDocProperties:=True, _...

jeromeN95

XLDnaute Impliqué
Bonjour merxi en effet c’est très bien détailler.
si je comprend bien la syntaxe :


Dim i As Long, Cpt As Long
Dim Ar() As String

sNomFichierPDF = ThisWorkbook.Path & "\" & "Contrat.pdf"

Cpt = 0
For i = 1 To ThisWorkbook.Sheets.Count
If Left(Sheets(i).Name, 2) = "conntratpret" Or Left(Sheets(i).Name, 2) = "Contratpret" Then
ReDim Preserve Ar(Cpt)
Ar(Cpt) = Sheets(i).Name
Cpt = Cpt + 1
End If
Next i
If Cpt = 0 Then Exit Sub
 

kiki29

XLDnaute Barbatruc
Salut, @jeromeN95
une version light donne ceci.
Mais il y a un tout petit peu mieux avec les CodeNames
Cela permet de renommer les onglets sans avoir à retoucher au code VBA.

VB:
Option Explicit

Sub Tst_2007()
Dim sNomFichierPDF As String
Dim Ar(1) As String

    sNomFichierPDF = ThisWorkbook.Path & "\" & "Contrat.pdf"

    Ar(0) = Feuil1.Name
    Ar(1) = Feuil2.Name

    Application.ScreenUpdating = False
    Sheets(Ar).Select

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                    Filename:=sNomFichierPDF, _
                                    Quality:=xlQualityStandard, _
                                    IncludeDocProperties:=True, _
                                    IgnorePrintAreas:=False, _
                                    OpenAfterPublish:=False

    Sheets(Feuil3.Name).Select
    Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • Test.xlsb
    17.4 KB · Affichages: 7
  • Contrat.pdf
    3.8 KB · Affichages: 1
  • CodeName.png
    CodeName.png
    65.4 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin