1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

Workbook PDF macro

Discussion dans 'Forum Excel' démarrée par ynx69, 7 Février 2019.

  1. ynx69

    ynx69 XLDnaute Junior

    Inscrit depuis le :
    14 Février 2018
    Messages :
    63
    "J'aime" reçus :
    2
    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 :

    Code (Visual Basic):
    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
     
  2. Chargement...

    Discussions similaires - Workbook PDF macro Forum Date
    sauvegarde impressions PDF :ActiveWorkbook marche pas Forum Excel 1 Juillet 2009
    Problème avec mon code workbook before save Forum Excel 10 Janvier 2019
    XL 2007 Initialisation Workbook Forum Excel 9 Décembre 2018
    Workbooks.Open à 1 condition Forum Excel 12 Novembre 2018
    XL 2013 [RESOLU] Problème avec Workbook_Open Forum Excel 30 Octobre 2018

  3. Dranreb

    Dranreb XLDnaute Barbatruc

    Inscrit depuis le :
    31 Janvier 2011
    Messages :
    14943
    "J'aime" reçus :
    925
    Sexe :
    Masculin
    Habite à:
    Belfort
    Utilise:
    Excel 2016 (PC)
    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.
     
  4. ynx69

    ynx69 XLDnaute Junior

    Inscrit depuis le :
    14 Février 2018
    Messages :
    63
    "J'aime" reçus :
    2
    Bonsoir,

    Merci pour votre réponse malheureusement ca ne change rien ...

    Ynx
     
  5. Dranreb

    Dranreb XLDnaute Barbatruc

    Inscrit depuis le :
    31 Janvier 2011
    Messages :
    14943
    "J'aime" reçus :
    925
    Sexe :
    Masculin
    Habite à:
    Belfort
    Utilise:
    Excel 2016 (PC)
    Ah si, ça doit tout changer !
     
  6. ynx69

    ynx69 XLDnaute Junior

    Inscrit depuis le :
    14 Février 2018
    Messages :
    63
    "J'aime" reçus :
    2
    J'ai ressayé , et toujours pas :p
     
  7. Dranreb

    Dranreb XLDnaute Barbatruc

    Inscrit depuis le :
    31 Janvier 2011
    Messages :
    14943
    "J'aime" reçus :
    925
    Sexe :
    Masculin
    Habite à:
    Belfort
    Utilise:
    Excel 2016 (PC)
    Joignez votre classeur. Vous avez dû mal l'écrire.
     
  8. Dranreb

    Dranreb XLDnaute Barbatruc

    Inscrit depuis le :
    31 Janvier 2011
    Messages :
    14943
    "J'aime" reçus :
    925
    Sexe :
    Masculin
    Habite à:
    Belfort
    Utilise:
    Excel 2016 (PC)
    Testez cette petite procédure :
    Code (Visual Basic):
    Sub Test()
    Dim MyFile
    MyFile = False
    MsgBox "MyFile <> ""False"" :  " & (MyFile <> "False") _
       & vbLf & "VarType(MyFile) = vbString :  " & (VarType(MyFile) = vbString)
    End Sub
     
  9. ynx69

    ynx69 XLDnaute Junior

    Inscrit depuis le :
    14 Février 2018
    Messages :
    63
    "J'aime" reçus :
    2
    Bonsoir,

    Vous trouverez ci joint le classeur que je souhaite tester.
    PS : Belfort power !

    Ynx
     

    Pièces jointes:

    • a.xlsm
      Taille du fichier:
      18.4 Ko
      Affichages:
      6
  10. Dranreb

    Dranreb XLDnaute Barbatruc

    Inscrit depuis le :
    31 Janvier 2011
    Messages :
    14943
    "J'aime" reçus :
    925
    Sexe :
    Masculin
    Habite à:
    Belfort
    Utilise:
    Excel 2016 (PC)
    J'ai mis ça à la place de votre test et il n'y a pas de pdf créé si on annule :
    Code (Visual Basic):
    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: 7 Février 2019

Partager cette page