XL 2016 Exporter en pdf

micpid62

XLDnaute Occasionnel
Bonjour à tous et bonne année
Je tente désespérément de sauvegarder mes feuille de calcul en pdf
J'ai regardé plusieurs tutos mais je ni arrive et je ne trouve pas le pourquoi de la chose
ci-dessous le code que j'ai trouvé
VB:
Sub SauvPdf()
'
' SauvPdf Macro
'

'
    NomDossier = Application.InputBox("Nom du dossier", "Création du dossier", "Entrer le nom du dossier")
    chemin = "L:\agent\2023\pdf\" & NomDossier & "\"
    On Error Resume Next
    If NomDossier = "" Then
    Exit Sub
    Else
    Dossierexistant = GetAttr(dossier) And vbDirectory
    If Dossierexistant = False Then
        MkDir (chemin)
     End If
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=chemin & Range("A1") & " " & Range("B6").Value & " .pdf", quality:= _
    xlQualityStandard, includeDocProperties:=True, ignorePrintAreas:=False, _
    from:=1, to:=1, OpenAfterPublish:=True
    
MsgBox ("Le pdf a été crée")
End If

End Sub

Pour info la création du dossier fonctionne mais pas le nom du fichier
SVP venez à mon aide sinon je vais Peter un plomb
D'avance merci
 
C

Compte Supprimé 979

Guest
Bonsoir,

Perso voilà ce que je ferais 🤔

VB:
Sub SauvPdf()
  Dim Chemin As String
  Chemin = ChoixDossier("L:\agent\2023\pdf\")
  If Chemin = "" Then Exit Sub
  Chemin = Chemin & "\"
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
  Filename:=Chemin & Range("A1") & " " & Range("B6").Value & " .pdf", _
    quality:=xlQualityStandard, includeDocProperties:=True, ignorePrintAreas:=False, _
    from:=1, to:=1, OpenAfterPublish:=True
    
  MsgBox ("Le pdf a été crée")
End Sub

Function ChoixDossier(IniPath As String)
  Dim Fld As FileDialog
  Set Fld = Application.FileDialog(msoFileDialogFolderPicker)
  With Fld
    .Title = "Sélectionnez un dossier"
    .AllowMultiSelect = False
    .InitialFileName = IniPath
    If .Show = -1 Then
      ChoixDossier = .SelectedItems(1)
    Else
    End If
  End With
End Function

Si le dossier n'existe pas dans la boite de dialogue il est possible de le créer idrectement

A+
 

micpid62

XLDnaute Occasionnel
Merci
j'ai essayé mais j'une erreur à se niveau
VB:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
  Filename:=Chemin & Range("A1") & " " & Range("B6").Value & " .pdf", _
    quality:=xlQualityStandard, includeDocProperties:=True, ignorePrintAreas:=False, _
    from:=1, to:=1, OpenAfterPublish:=True
 

fanch55

XLDnaute Barbatruc
Merci
j'ai essayé mais j'une erreur à se niveau
VB:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
  Filename:=Chemin & Range("A1") & " " & Range("B6").Value & " .pdf", _
    quality:=xlQualityStandard, includeDocProperties:=True, ignorePrintAreas:=False, _
    from:=1, to:=1, OpenAfterPublish:=True

D'où l'importance de savoir quel est le nom exact du fichier pdf ...
 

TooFatBoy

XLDnaute Barbatruc
Ah oui, forcément, avec deux dates au format jj/mm/aaaa, ça fait 4 / en trop... ;)

Essaye comme ceci :
VB:
Sub SauvPdf()
'
    NomDossier = Application.InputBox("Nom du dossier", "Création du dossier", "Entrer le nom du dossier")
    If NomDossier = "" Then Exit Sub

    Chemin = "I:\agent\pdf\" & NomDossier & "\"
    On Error Resume Next
    Dossierexistant = GetAttr(dossier) And vbDirectory
    If Dossierexistant = False Then MkDir (Chemin)

    NomComplet = Chemin & Format(Range("A1").Value, "mmmm yyyy") & " - " & Range("A6").Value & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=NomComplet, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        From:=1, _
        To:=1, _
        OpenAfterPublish:=True
    MsgBox ("Le pdf a été créé")

End Sub

ATTENTION : j'ai changé B6 en A6, parce que ça me semblait plus logique, mais ce n'est peut-être pas bon. A toi de voir. ;)

⚠️ ATTENTION : l'espace en fin de nom de fichier peut être une source de gros problèmes, à mon avis.
 

Pièces jointes

  • vierge2_2023_(TooFatBoy-v1).xlsm
    62.4 KB · Affichages: 13
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour le forum,

Chez moi il n'y a pas de lecteur "L", le plus simple est d'utiliser ThisWorkbook.Path :
VB:
Sub SauvPdf()
Dim NomDossier$, chemin$
With ActiveSheet
    If Not IsDate(.[A1]) Or .[A6] = "" Then Exit Sub
    NomDossier = Application.InputBox("Nom du dossier", "Création du dossier", "Entrer le nom du dossier")
    If NomDossier = "" Then Exit Sub
    chemin = ThisWorkbook.Path & "\" & NomDossier & "\"
    If Dir(chemin, vbDirectory) = "" Then MkDir chemin 'création du dossier s'il n'existe pas
    .ExportAsFixedFormat xlTypePDF, chemin & Format(.[A1], "mmm-yy ") & .[A6] & ".pdf"
End With
MsgBox "Le fichier PDF a été créé"
End Sub
A+
 

TooFatBoy

XLDnaute Barbatruc
Chez moi il n'y a pas de lecteur "L", le plus simple est d'utiliser ThisWorkbook.Path
Chez moi il y avait un L, mais Windows a décidé de le renommer en H.
Mais j'ai bien un I, puisque Windows a décidé de renommer mon S en I.

Pour moi, le plus simple est d'utiliser directement le chemin puisqu'il est connu, mais si ledit chemin n'existe pas d'ouvrir la fenêtre de dialogue permettant de choisir le chemin. ;)
 

micpid62

XLDnaute Occasionnel
Merci,
Mais je sais pas où placer votre solution dans le code de ma macro ci-dessous
VB:
Sub SauvPdf()
Dim NomDossier$, chemin$
With ActiveSheet
    If Not IsDate(.[A1]) Or .[A6] = "" Then Exit Sub
    NomDossier = Application.InputBox("Nom du dossier", "Création du dossier", "Entrer le nom du dossier")
    If NomDossier = "" Then Exit Sub
    chemin = ThisWorkbook.Path & "\" & NomDossier & "\"
    If Dir(chemin, vbDirectory) = "" Then MkDir chemin 'création du dossier s'il n'existe pas
    .ExportAsFixedFormat xlTypePDF, chemin & Format(.[A1], "mm-yyyy ") & .[A6] & ".pdf"
End With
MsgBox "Le fichier PDF a été créé"
End Sub
 

fanch55

XLDnaute Barbatruc
Merci,
Mais je sais pas où placer votre solution dans le code de ma macro ci-dessous
Un exemple ci-dessous:
VB:
Sub SauvPdf()
Dim NomDossier$, Chemin$, Fic$
    If IsDate([A1]) And [A6] <> "" Then
        NomDossier = Application.InputBox("Nom du dossier", "Création du dossier", "Entrer le nom du dossier")
        If NomDossier <> "" Then
            Chemin = ThisWorkbook.Path & "\" & NomDossier & "\"
            If Dir(Chemin, vbDirectory) = "" Then MkDir Chemin 'création du dossier s'il n'existe pas
            Fic = Chemin & Format([A1], "mm-yyyy ") & [A6] & ".pdf"
            Worksheets(Array("BESNARD Olivier", "PERDREAU Bruno", "EGEA Florian")).Select
            On Error Resume Next
                ActiveSheet.ExportAsFixedFormat xlTypePDF, Fic
                If Not Err Then
                    MsgBox "Le fichier " & Fic & " a été créé ou remplacé"
                Else
                    MsgBox "Erreur: " & Fic & vbLf & Err.Description
                End If
            On Error GoTo 0
        End If
    End If

End Sub
Toutefois, je vous conseille de réfléchir au nom à donner au fichier Pdf car les 3 feuilles ont les cellules A1 et A6.
 

Discussions similaires

Statistiques des forums

Discussions
312 183
Messages
2 086 005
Membres
103 087
dernier inscrit
sarah.caneri