Microsoft 365 L'enregistrement en .pdf avec la fenêtre Enregistrer Sous

MarieParis

XLDnaute Occasionnel
Bonjour,

J'ai créé une procédure qui permet d'ouvrir la fenêtre Enregistrer Sous - et de proposer, à défaut, comme nom de fichier, le nom stocké dans la variable sFilename = Nom & " " & LaDate & " " & LHeure & "" et de proposer l'enregistrement en PDF par défaut. Voici mon code :
VB:
Sub Fichier_pdf()
    Dim sRep As String
    Dim sFilename As String
    Dim LHeure As String
    Dim LaDate As String
    Dim Nom As String
    Dim fileSaveName As String
    
   LHeure = Format(Time, "HMS")
   LaDate = Format(Date, "dd" & "." & "mm" & "." & "yyyy")
   Nom = "Création du Bordereau de transfert du"
                
                With ActiveSheet.PageSetup
                 .LeftFooter = ""
                .CenterFooter = ""
                .RightFooter = ""
                 End With
                
    Sheets("1 - Bordereau_lancement").Select
    Sheets("1 - Bordereau_lancement").Move Before:=Sheets(3)
    
    Sheets(Array("Page_1", "1 - Bordereau_lancement", "Page_5", "Page_6", "Page_7", "Page_8", "Page_9", "Page_10", "Page_11", "Page_12")).Select
    sRep = ThisWorkbook.Path
    sFilename = Nom & " " & LaDate & " " & LHeure & ""       
            
   'Enregistrement du fichier en pdf
  
    fileSaveName = Application.GetSaveAsFilename(InitialFileName:=sFilename, fileFilter:="PDF Files (*.pdf), *.pdf")
    
    'Déplacement de la feuille
    
    Sheets("1 - Bordereau_lancement").Select
    Sheets("1 - Bordereau_lancement").Move Before:=Sheets(1)
    Sheets("1 - Bordereau_lancement").[Zone_d_impression].Select

    ' Message de confirmation
    MsgBox "Création du fichier PDF a été effectuée", Title:="Mon document"

End Sub


Quand je lance ce code, le fichier n'est pas créé. Est-ce que vous pourriez me dire où se trouve l'erreur ?

Merci !
 

job75

XLDnaute Barbatruc
Bonjour MarieParis,
Quand je lance ce code, le fichier n'est pas créé. Est-ce que vous pourriez me dire où se trouve l'erreur ?
L'erreur est de croire que Application.GetSaveAsFilename enregistre le fichier, voir l'aide Excel :
Displays the standard Save As dialog box and gets a file name from the user without actually saving any files.
Pour créer le fichier PDF il y a de très nombreux exemples sur le forum.

A+
 

fanch55

XLDnaute Accro
Bonjour,
le GetSaveAsFilename n'a jamais sauvegardé quoi que ce soit .
il fournit juste un nom de fichier (existant ou non) choisi par l'utilisateur.
FileSaveName doit être de type Variant et non String

remplacez votre portion de code par
VB:
    sRep = ThisWorkbook.Path
    sFilename = sRep & "\" & Nom & " " & LaDate & " " & LHeure & ".pdf"
            
   'Enregistrement du fichier en pdf
  
    Dim FileSaveName As Variant
    FileSaveName = Application.GetSaveAsFilename(InitialFileName:=sFilename, fileFilter:="PDF Files (*.pdf), *.pdf")
    If FileSaveName <> False Then
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FileSaveName, _
         Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
         OpenAfterPublish:=True
        MsgBox FileSaveName, vbInformation + vbOKOnly, "Export PDF effectué"
    End If
(nota: si vous ne voulez pas visionner le Pdf en même temps, précisez OpenAfterPublish:=False )
 

patricktoulon

XLDnaute Barbatruc
bonjour
ne pas confondre
Application.CommandBars.ExecuteMso "FileSave"
qui lors du click sur ok enregistrera le fichier
et
FileSaveName = Application.GetSaveAsFilename(InitialFileName:=sFilename, fileFilter:="PDF Files (*.pdf), *.pdf")
qui lui renvoie dans la variable FileSaveName le nom sFilename
il te faut donc exporter ton fichier par la suite avec le nom
 

MarieParis

XLDnaute Occasionnel
Bonjour,
le GetSaveAsFilename n'a jamais sauvegardé quoi que ce soit .
il fournit juste un nom de fichier (existant ou non) choisi par l'utilisateur.
FileSaveName doit être de type Variant et non String

remplacez votre portion de code par
VB:
    sRep = ThisWorkbook.Path
    sFilename = sRep & "\" & Nom & " " & LaDate & " " & LHeure & ".pdf"
           
   'Enregistrement du fichier en pdf
 
    Dim FileSaveName As Variant
    FileSaveName = Application.GetSaveAsFilename(InitialFileName:=sFilename, fileFilter:="PDF Files (*.pdf), *.pdf")
    If FileSaveName <> False Then
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FileSaveName, _
         Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
         OpenAfterPublish:=True
        MsgBox FileSaveName, vbInformation + vbOKOnly, "Export PDF effectué"
    End If
(nota: si vous ne voulez pas visionner le Pdf en même temps, précisez OpenAfterPublish:=False )
Merci beaucoup, ça marche très bien !
 

Discussions similaires

Haut Bas