XL 2016 Générer et enregistrer PDF automatiquement d'une feuille excel

angelusr71

XLDnaute Nouveau
Bonjour à tous,

Grace à l'aide précieuse de Sylvanu, je suis parvenu à obtenir pratiquement le fichier que je veux.

Mon objectif est d'avoir un listing de l'ensemble des employés, avec les informations de ceux-ci.
Je voulais qu'à chaque ligne complétée et en utilisant un bouton "général", qu'une feuille (basée sur un modèle) soit créée automatiquement en utilisant les informations de chacune des lignes. Ca c'est bon, ça fonctionne.

Maintenant, ce que je souhaite c'est que grâce à un bouton "PDF", je puisse générer et enregistrer chaque feuille sélectionnée en format pdf dans un dossier de mon ordinateur. Et le top du top serait que ce fichier s'enregistre avec le nom de la feuille.

Par exemple, si l'employé 1 change d'adresse, en changeant l'adresse dans le listing, celle-ci va automatiquement changer dans sa feuille. J'aimerais qu'en sélectionnant une cellule de la ligne de l'employé 1 et en cliquant sur le bouton pdf, qu'un fichier pdf intitulé "Employé 1" soit généré et enregistré dans un dossier choisit.

Idéalement, comme il risque d'y avoir des changements réguliers, ce serait bien aussi que si le fichier pdf existe déjà, qu'il puisse être écrasé.

J'espère que ma demande est assez claire et que vous pourrez m'apporter un peu d'aide...

Merci beaucoup.
 

Pièces jointes

  • test (14)1.xlsm
    107.7 KB · Affichages: 35

angelusr71

XLDnaute Nouveau
Re, comme je dis tjs pas de bras ... pas de chocolat
Merci quand même mais malheureusement tout ça pour moi ne veut pas dire grand chose. Je ne souhaite pas ajouter une case où mettre un X, et je n'ai pas besoin de vérification de doublon ou de fusion.

Quelles sont les parties de la macro dont je n'ai sur pas besoin afin que je puisse réussir à trouver quelque chose quand même...?

Même si une base énorme, comme je n'y comprends pas grand chose...
 

Carlich

XLDnaute Junior
Bonjour tout le monde,

J'ai une macro qui permet d'enregistrer un graphique dans un endroit souhaité avec le nom qu'on désire lui donner, je la met a dessous tu n'as qu'a essayer de l'adapter dans ta situation, je pense que ce n'est pas compliqué dis moi ce que tu en penses.

La macro est fonctionnelle pour moi elle fait le taff, elle ne doit pas etre parfaite j'en suis sur mais elle fait ce qu'on lui demande :)

VB:
Sub SaveGraphPDF()

On Error Resume Next
'On déclare la variable sauvegarde pour plus tard
Dim Sauvegarde As Variant
'Sert a enlever les messages d'alerts et a rendre la macro plus fluide
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'On active le graphique(ChartObjects)sur la feuille active(CàD sur laquelle on est)
ActiveSheet.ChartObjects(1).Activate
'Permet de créer la sauvegarde en PDF
Sauvegarde = Application.GetSaveAsFilename(FileFilter:=" PDF Files (*.pdf), *.pdf")
'Si un fichier n'existe pas déjà, on créé le fichier PDF dans l'emplacement désiré
If Sauvegarde = False Then
Exit Sub
Else

    If Dir(Sauvegarde) = "" Then
    
        ActiveChart.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=Sauvegarde, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
        'Si un fichier existe déja,
        Else
         If MsgBox("Un fichier existant porte déjà ce nom, voulez le remplacer?", vbYesNo + vbExclamation, "demande de confirmation") = vbYes Then
        
         ActiveChart.ExportAsFixedFormat Type:=xlTypePDF, _
         Filename:=Sauvegarde, Quality:=xlQualityStandard, _
         IncludeDocProperties:=True, IgnorePrintAreas:=False, _
         OpenAfterPublish:=False
        
        Else: MsgBox ("Veuillez renommer le fichier")
        
Application.ScreenUpdating = True
Application.DisplayAlerts = True

        Exit Sub
        
        End If
    End If
    End If

MsgBox ("Fichier enregistré avec succès")

End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Angelusr, Kiki, Carlich, le fil,
En PJ un essai au plus simple avec :
VB:
Sub ExportFeuilleEnPdf()
Dim LHeure$, LaDate$, Chemin$, NomFichier$, NomFeuille$
LHeure = Format(Time, "HH.MM")
LaDate = Format(Date, "dd" & "." & "mm" & "." & "yyyy")
Chemin = ThisWorkbook.Path & "\"
NomFichier = Split(ThisWorkbook.Name, ".")(0)
NomFeuille = ActiveSheet.Name
' Construction du chemin complet
CheminComplet = Chemin & NomFichier & " " & NomFeuille & " " & LaDate & " " & LHeure & ".pdf"
' Création fichier PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminComplet, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False
' Message de confirmation
MsgBox ("Création du fichier PDF effectué" & vbCrLf & vbCrLf & CheminComplet)
End Sub
 

Pièces jointes

  • EssaiPDF.xlsm
    33.2 KB · Affichages: 36

angelusr71

XLDnaute Nouveau
Bonjour tout le monde,

J'ai une macro qui permet d'enregistrer un graphique dans un endroit souhaité avec le nom qu'on désire lui donner, je la met a dessous tu n'as qu'a essayer de l'adapter dans ta situation, je pense que ce n'est pas compliqué dis moi ce que tu en penses.

La macro est fonctionnelle pour moi elle fait le taff, elle ne doit pas etre parfaite j'en suis sur mais elle fait ce qu'on lui demande :)

VB:
Sub SaveGraphPDF()

On Error Resume Next
'On déclare la variable sauvegarde pour plus tard
Dim Sauvegarde As Variant
'Sert a enlever les messages d'alerts et a rendre la macro plus fluide
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'On active le graphique(ChartObjects)sur la feuille active(CàD sur laquelle on est)
ActiveSheet.ChartObjects(1).Activate
'Permet de créer la sauvegarde en PDF
Sauvegarde = Application.GetSaveAsFilename(FileFilter:=" PDF Files (*.pdf), *.pdf")
'Si un fichier n'existe pas déjà, on créé le fichier PDF dans l'emplacement désiré
If Sauvegarde = False Then
Exit Sub
Else

    If Dir(Sauvegarde) = "" Then
   
        ActiveChart.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=Sauvegarde, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
        'Si un fichier existe déja,
        Else
         If MsgBox("Un fichier existant porte déjà ce nom, voulez le remplacer?", vbYesNo + vbExclamation, "demande de confirmation") = vbYes Then
       
         ActiveChart.ExportAsFixedFormat Type:=xlTypePDF, _
         Filename:=Sauvegarde, Quality:=xlQualityStandard, _
         IncludeDocProperties:=True, IgnorePrintAreas:=False, _
         OpenAfterPublish:=False
       
        Else: MsgBox ("Veuillez renommer le fichier")
       
Application.ScreenUpdating = True
Application.DisplayAlerts = True

        Exit Sub
       
        End If
    End If
    End If

MsgBox ("Fichier enregistré avec succès")

End Sub
Merci Carlich mais je ne crois pas que ça corresponde. Je voudrais qu'un seul bouton permette d'enregistrer une seule feuille en pdf avec le nom que porte la feuille. Je vais avoir régulièrement des changements à faire et je souhaite gagner un maximum de temps.

J'ai un peu réussi à adapter la solution de kiki mais ça ne correspond pas encore complètement à ce que je souhaite. Je souhaite vraiment un clic sur la ligne qui fait référence à la feuille que je souhaite exporter en pdf, puis un clic sur le bouton pdf...et terminé.

Cocher des cases, ou choisir une fusion, etc, n'est pas efficient pour ce projet.

Merci en tout cas de ton retour. Je vais tout de même taché de m'en inspirer !
 

angelusr71

XLDnaute Nouveau
Bonsoir Angelusr, Kiki, Carlich, le fil,
En PJ un essai au plus simple avec :
VB:
Sub ExportFeuilleEnPdf()
Dim LHeure$, LaDate$, Chemin$, NomFichier$, NomFeuille$
LHeure = Format(Time, "HH.MM")
LaDate = Format(Date, "dd" & "." & "mm" & "." & "yyyy")
Chemin = ThisWorkbook.Path & "\"
NomFichier = Split(ThisWorkbook.Name, ".")(0)
NomFeuille = ActiveSheet.Name
' Construction du chemin complet
CheminComplet = Chemin & NomFichier & " " & NomFeuille & " " & LaDate & " " & LHeure & ".pdf"
' Création fichier PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminComplet, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False
' Message de confirmation
MsgBox ("Création du fichier PDF effectué" & vbCrLf & vbCrLf & CheminComplet)
End Sub
Merci Sylvanu,
Sur le principe du clic et générer c'est exactement ça !

Par contre, au même titre qu'en sélectionnant une cellule dans mon document et en cliquant sur le bouton créer la feuille, je souhaiterais si possible, qu'en sélectionnant la cellule d'une ligne, puis en cliquant sur le bouton PDF, que le PDF soit enregistré avec le nom de la feuille.

J'espère que cela est possible...
Encore merci!!!
 

Pièces jointes

  • test (14)2.xlsm
    128.5 KB · Affichages: 17

Discussions similaires

Réponses
8
Affichages
348