Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Workbook PDF macro

ynx69

XLDnaute Junior
Bonjour à tous,

J'ai un problème avec une macro que j'ai trouvé sur le site contexture.com.
Elle permet d'enregistrer un workbook en PDF.

Celle-ci présente un problème que je n'arrive pas à corriger. En effet, tout marche bien sauf qu'on on souhaite annuler notre enregistrement. En effet si l'utilisateur appuie sur echap à l'apparitation de la fenetre d'enregistrement, un fichier excel est quand meme crée sous le nom : Faux alors que la logique voudrait qu'il ne se passe rien.

Pourriez vous m'aider svp ?

Merci

Le code en question :

VB:
Sub PDFActiveSheet()
'www.contextures.com
'for Excel 2010 and later
Dim wsA As Worksheet
Dim wbA As Workbook
Dim strTime As String
Dim strName As String
Dim strPath As String
Dim strFile As String
Dim strPathFile As String
Dim myFile As Variant
On Error GoTo errHandler

Set wbA = ActiveWorkbook
Set wsA = ActiveSheet
strTime = Format(Now(), "yyyymmdd\_hhmm")

'get active workbook folder, if saved
strPath = wbA.Path
If strPath = "" Then
  strPath = Application.DefaultFilePath
End If
strPath = strPath & "\"

'replace spaces and periods in sheet name
strName = Replace(wsA.Name, " ", "")
strName = Replace(strName, ".", "_")

'create default name for savng file
strFile = strName & "_" & strTime & ".pdf"
strPathFile = strPath & strFile

'use can enter name and
' select folder for file
myFile = Application.GetSaveAsFilename _
    (InitialFileName:=strPathFile, _
        FileFilter:="PDF Files (*.pdf), *.pdf", _
        Title:="Select Folder and FileName to save")

'export to PDF if a folder was selected
If myFile <> "False" Then
    wsA.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=myFile, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    'confirmation message with file info
    MsgBox "PDF file has been created: " _
      & vbCrLf _
      & myFile
End If

exitHandler:
    Exit Sub
errHandler:
    MsgBox "Could not create PDF file"
    Resume exitHandler
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Testez plutot If VarType(myfile) = vbString Then
car en cas d'abandon, GetSaveAsFileName ne renvoie pas un String valant "False" mais un Boolean False.
Possible que If myfile Then marche aussi. À tester.
 

Dranreb

XLDnaute Barbatruc
Testez cette petite procédure :
VB:
Sub Test()
Dim MyFile
MyFile = False
MsgBox "MyFile <> ""False"" :  " & (MyFile <> "False") _
   & vbLf & "VarType(MyFile) = vbString :  " & (VarType(MyFile) = vbString)
End Sub
 

Dranreb

XLDnaute Barbatruc
J'ai mis ça à la place de votre test et il n'y a pas de pdf créé si on annule :
VB:
If VarType(myFile) = vbString Then
Remarque: vous auriez plutôt du joindre ce que vous aviez essayé sur mon conseil, et dont vous disiez que ça ne marchait pas.
Parce que votre test If myFile <> "False" Then, je savais déjà qu'il ne pouvait pas marcher, comme le montre la procédure de test indiquée en #7
Notez que If myFile <> False Then marche aussi, mais If VarType(myFile) = vbString Then est à mon avis plus correct. Et plus parlant à mon sens puisqu'on teste clairement si myFile est bien un texte.
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…