Macro pour enregistrer en PDF

  • Initiateur de la discussion Initiateur de la discussion ufernet
  • 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 !

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
 
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:
- 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

Discussions similaires

  • Question Question
Microsoft 365 Problème macro
Réponses
4
Affichages
251
Réponses
3
Affichages
680
Réponses
10
Affichages
553
Réponses
3
Affichages
888
Retour