VBA sauvegarde en format PDF

Fermé
Ofeu Messages postés 26 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 11 septembre 2018 - Modifié le 7 sept. 2018 à 17:12
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 11 sept. 2018 à 08:22
Bonjour à tous,

Je voudrais un codage VBA pour le sauvergarde de mon fichier Excel en format PDF.
Pour cela, j'ai procédé avec le codage suivant. Cependant j'ai un erreur.

Sub Ellipse2_Cliquer()
nomdossier = Application.InputBox(prompt:="Dossier d'enregistrement:", Type:=2)
dossier = "C:\Users\Desktop\" & nomdossier & "\"

ActivateSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
dossier & "_MFA" & ".pdf", quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True


End Sub



Merci
Bien cdlt
Lucas

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
7 sept. 2018 à 18:58
Bonjour,

pour faire ce que tu veux, il faut créer un dossier, ensuite le chemin du bureau est faux, il faut le chercher

Voilà comment procéder:

Option Explicit
Dim nomdossier As String
Dim dossier As String
Dim bureau As String
Private Sub CommandButton1_Click()
nomdossier = Application.InputBox(prompt:="Dossier d'enregistrement:", Type:=2)
cheminbureau
TesteSiDossierExiste
dossier = bureau & "\" & nomdossier & "\"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        dossier & "_MFA.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
End Sub
Sub TesteSiDossierExiste()
'https://excel-malin.com/codes-sources-vba/vba-verifier-si-dossier-existe/
Dim MonDossier As String

MonDossier = bureau & "\" & nomdossier

    If DossierExiste(MonDossier) = True Then
       ' MsgBox "Le dossier existe..."
    Else
      MkDir (bureau & "\" & nomdossier)
    End If

End Sub
Public Function DossierExiste(MonDossier As String)
'par Excel-Malin.com ( http://excel-malin.com )

   If Len(Dir(MonDossier, vbDirectory)) > 0 Then
      DossierExiste = True
   Else
      DossierExiste = False
   End If
End Function
Private Sub cheminbureau()
'https://excel-malin.com/codes-sources-vba/trouver-chemin-de-bureau/

    On Error GoTo TestErreur
    Dim cheminbureau As String
    
    cheminbureau = ObtenirCheminBureau()
    
    bureau = cheminbureau 'affiche le chemin vers le dossier Bureau
    Exit Sub
TestErreur:
    MsgBox "Une erreur s'est produite..."
End Sub
Public Function ObtenirCheminBureau() As String
'par: Excel-Malin.com ( https://excel-malin.com )

    On Error GoTo ObtenirCheminBureauError
    Dim cheminbureau As String
    cheminbureau = ""
    Dim oWSHShell As Object
    Set oWSHShell = CreateObject("WScript.Shell")
    
    cheminbureau = oWSHShell.SpecialFolders("Desktop")
    
    If (Not (oWSHShell Is Nothing)) Then Set oWSHShell = Nothing
    ObtenirCheminBureau = cheminbureau

    Exit Function
ObtenirCheminBureauError:
    If (Not (oWSHShell Is Nothing)) Then Set oWSHShell = Nothing
    ObtenirCheminBureau = ""
End Function



Voilà
0
Ofeu Messages postés 26 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 11 septembre 2018
11 sept. 2018 à 03:25
BOnsoir cs_LE Pivert !

Merci de votre aide, vraiment !
Oui, j'arrive garder sur format pdf, cependant lorsque j'appuie sur mon bouton pour sauver en format pdf (fenêtre pour permettre de mettre le nom de mon fichier), j'ai deux bouton en bas (ok et annuler), cependant même si j'appuie sur annuler, mon fichier fait la sauvegarde.

Une autre qustion que j'avais essayé de faire mais je pense que cela n'est pas possible (problème = la cellule X a une formule qui concerne la concaténation de deux autres cellules). En faite je voulais que la sauvegarde récupere une valeur d'une cellule X. J'ai essayé de faire de la façon suivante

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
nomdossier & "_" & Sheets("Model_FA").Range("D6").Value & "_MFA.pdf", Quality:=xlQualityStandard,
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True


j'ai également changé "value" pour "text" et "select"; "Range" pour "Cells". Mais j'ai toujours de problème auquel je pense qui vient du fait que cette cellule contient une formule qui est la concaténation de deux autres cellules.
Alors que j'ai essayé une cellule sans formule et ça marche bien.

Est-ce possible de l'intergrer cette cellule (contenant une formule) dans le nom de sauvegarde ?

Grand merci !!!
A bientôt,
Lucas
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
11 sept. 2018 à 08:22
Pour la 1ère question voir ceci:

https://forums.commentcamarche.net/forum/affich-37636380-vba-inputbox#inputbox-les-boutons

et pour la 2ème

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
nomdossier & "_" & Sheets("Model_FA").Range("D6").Value & "_MFA.pdf", Quality:=xlQualityStandard,
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True



il faut mettre dossier et non nomdossier , l'erreur vient de là

dossier = bureau & "\" & nomdossier & "\"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        dossier & "_" & Sheets("Model_FA").Range("D6").Value & "_MFA.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True


@+ Le Pivert
0