Macro pour enregistrer en PDF

ufernet

XLDnaute Junior
Bonjour le Forum,

Je souhaite pouvoir enregistrer 3 onglets d'un classeur en trois fichiers PDF. Le Dossier d'enregistrement change chaque semaine ainsi que le nom des trois fichiers. J'ai essayé une macro qui permet d'enregistrer en PDF:


ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"Q:\Coordination\Cuisine\Fiche caissette\Semaine 45\Détail quantité semaine 46.pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
End Sub

Mais je voudrais y inclure une boite de dialogue qui demande le nom du fichier et le dossier de destination comme:

Nom_Fichier = Application.GetSaveAsFilename( _
fileFilter:="Fichier pdf (*.pdf), *;pdf")

ActiveWorkbook.SaveAs Nom_Fichier

Mais ça ne marche pas...Merci de votre aide
 

pascal21

XLDnaute Barbatruc
Re : Macro pour enregistrer en PDF

bonjour
j'utilise un code qui permet de transformer le contenu d'une feuille en Format PDF, qui le nomme avec le contenu d'une cellule et le range dans un répertoire en fonction du nom du PDF
je t'envoie le code comme il est dans mon classeur
A adapter à ton cas si ça convient
Code:
Sub copiePDF() 'code copie en PDF et classement

Dim sNomDossier As String
Dim sNomFichierPDF As String


    sNomDossier = ThisWorkbook.Path
    
    sNomFichierPDF = Format(Feuil1.Range("l5"), "dddd dd mmmm yyyy") & "   n° " & Range("z58") 'nom du fichier + N° de document
    
     sNomDossier = ThisWorkbook.Path & "\année 2013\" & Format(Feuil1.Range("l5 "), "mmmm yyyy") & "\"
     
    If Len(sNomFichierPDF) > 0 Then
        If NomFichierValide(sNomFichierPDF) Then
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                            Filename:=sNomDossier & "/" & _
                                                      sNomFichierPDF & ".pdf" _
                                                      , Quality:=xlQualityStandard, _
                                            IncludeDocProperties:=True, _
                                            IgnorePrintAreas:=False, _
                                            OpenAfterPublish:=False
        Else
            Feuil1.Range("l5").Select
            MsgBox "Ce nom de fichier est invalide", vbOKOnly + vbInformation, "Nom de Fichier"
        End If
    End If
 ' MsgBox ("Le fichier PDF nommé " & sNomFichierPDF & " à bien été crée dans le répertoire " & sNomDossier)


End Sub


'suite code copie PDF
Private Function NomFichierValide(sChaine As String) As Boolean
Dim i As Long
Const CaracInterdits As String = """*/:<>?[\]|"


    NomFichierValide = True
    For i = 1 To Len(CaracInterdits)
        If InStr(sChaine, Mid$(CaracInterdits, i, 1)) > 0 Then
            NomFichierValide = False
            Exit Function
        End If
    Next i
End Function
ce code tel quel récupère le contenu de I5 (une date) rajoute le contenu de Z58 à la suite pour nommer le PDF
ensuite ça le range dans un répertoire défini
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 332
Messages
2 087 365
Membres
103 528
dernier inscrit
maro