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

VBA_dev_Anne_Marie

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

VBA_dev_Anne_Marie

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

Statistiques des forums

Discussions
314 716
Messages
2 112 155
Membres
111 446
dernier inscrit
arkeo