IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Exportation d'un onglet en pdf avec mot de passe.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Comptable
    Inscrit en
    Novembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Novembre 2020
    Messages : 7
    Par défaut Exportation d'un onglet en pdf avec mot de passe.
    Bonjour à tous,

    Je tiens tout d'abord à remercier tous les gens qui prennent gentiment le temps de répondre aux néophytes que nous sommes ! Grâce à vous, nous apprenons et améliorons notre travail continuellement!

    Voici mon problème : mon logiciel de comptabilité crée un fichier PDF contenant des talons de paie avec une seule ligne de détail, soit "rémunération". J'ai un fichier Excel qui détaille la rémunération.

    Je crée donc par macro un fichier PDF en utilisant la page 1 de mon onglet Excel et la page 1 de mon fichier PDF. Ensuite, je joins mon nouveau fichier créé par courriel. Mon souci est que ce document est sensible puisqu'il contient des informations sur les paies et que toutes les boîtes courriel ne sont pas nécessairement sécurisées. C'est pourquoi j'aimerais mettre un mot de passe sur mon fichier PDF avant de l'envoyer par courriel.

    Voici mon code actuel. Il n'est peut-être pas optimal, mais il fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    Option Explicit
    Sub Merge_bordereau_talon2()
        Dim acroApp As Acrobat.CAcroApp
        Dim Part1Document As Acrobat.CAcroPDDoc
        Dim Part2Document As Acrobat.CAcroPDDoc
        Dim cell As Range
        Dim OutObj As Object
        Dim OutMail As Object
        Dim DernLigne As Long
        Dim p As Byte
        Dim j As Integer
        Dim dossier As String
     
        Set acroApp = CreateObject("AcroExch.App")
        Set OutObj = CreateObject("Outlook.Application")
        p = 1
        dossier = ThisWorkbook.Path
        DernLigne = Range("A" & Rows.Count).End(xlUp).Row
        Set Part1Document = CreateObject("AcroExch.PDDoc")
        Set Part2Document = CreateObject("AcroExch.PDDoc")
     
    'Ouvre le pdf contenant les talons de paie
        Part2Document.Open (ThisWorkbook.Path & "\Talon.pdf")
    'Regarde dans l'onglet référence si le maire a une rémunération
        For Each cell In Range("E2:E" & DernLigne)
    'Si la cellule est vide ne fait rien, sinon
        If cell Is Nothing Then
            Else
    'Imprime la page x de l'onglet bordereau en pdf
               Sheets("bordereaux").ExportAsFixedFormat From:=p, To:=p, Type:=xlTypePDF, Filename:=dossier & "\Détail.pdf", Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    'Ouvre le nouveau pdf
                Part1Document.Open (ThisWorkbook.Path & "\Détail.pdf")
    'Insère la page x du fichier talon de paie dans le fichier détail
                j = Part1Document.InsertPages(0, Part2Document, p - 1, 1, 0)
    'Enregistre le nouveau document sous le nom du maire
                j = Part1Document.Save(PDSaveFull, ThisWorkbook.Path & "\" & Cells(cell.Row, 2).Value & ".pdf")
    'Incrémente le numéro de page
                p = p + 1
    'Ferme le pdf
                Part1Document.Close
    'Informe le programme que nous voulons envoyer un mail
                Set OutMail = OutObj.CreateItem(0)
    'Prépare le courriel
                OutMail.display
                With OutMail
    'Adresses courriel
                    .To = Cells(cell.Row, 3).Value
    'Sujet de l'eMail
                    .Subject = "Talon de paie"
    'Joint le talon de paie
                    .Attachments.Add dossier & "\" & Cells(cell.Row, 2).Value & ".pdf"
    'Corps du mail
                     .HtmlBody = "<font size =""3"">Bonjour,<BR><BR>Vous trouverez ci-joint votre talon de paie ainsi que le détail des comités" _
                     & " auxquels vous avez participer durant le dernier mois.<BR><BR>" _
                     & "Cordiales salutations" & .HtmlBody
                    .display
                End With
    'Vide les variables
                Set OutMail = Nothing
    'Fin de la condition
        End If
    'Cellule suivante
        Next cell
    'Lorsque terminer, ferme le document
        Part2Document.Close
    'Vide les variables
        Set acroApp = Nothing
        Set OutObj = Nothing
        Set Part1Document = Nothing
        Set Part2Document = Nothing
     
        msgbox "Terminé"
    End Sub
    Si quelqu'un avait la gentillesse de me dire si c'est possible à un moment dans mon processus de mettre un mot de passe, cela serait grandement apprécié!

    Un immense merci!

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, j'ai trouvé des infos et un bout de code (dont je ne suis pas l'auteur) que je ne peux tester car je n'ai pas Acrobat.
    Je vous le livre tel quel, ce peut être une piste de recherche.
    Après avoir créé votre fichier PDF à partir de l'onglet Excel, utilisez la méthode SetSecurityHandler pour ajouter un gestionnaire de sécurité à votre document PDF :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Crée un objet de gestionnaire de sécurité pour le PDF
    Dim securityHandler As Object
    Set securityHandler = CreateObject("AcroExch.PDDoc")
     
    'Attribue un mot de passe au document PDF
    securityHandler.SetSecurityHandler "password", "", "owner_password"
     
    'Applique le gestionnaire de sécurité au document PDF
    Part1Document.SetSecurityHandler securityHandler
    Dans cet exemple, "password" est le mot de passe que vous souhaitez attribuer au document, et "owner_password" est le mot de passe de propriétaire. Le mot de passe de propriétaire permettra à l'utilisateur de modifier les permissions du document, telles que l'impression ou la copie de texte.

    Enregistrez le fichier PDF avec le mot de passe attribué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Enregistre le nouveau document  avec mot de passe
    j = Part1Document.Save(PDSaveFull, ThisWorkbook.Path & "\" & Cells(cell.Row, 2).Value & ".pdf")
    Ces modifications doivent être effectuées avant l'envoi du courriel pour que le fichier PDF soit bien protégé.

    N'oubliez pas de tester soigneusement ces modifications avant de les utiliser en production.

  3. #3
    Membre du Club
    Femme Profil pro
    Comptable
    Inscrit en
    Novembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Novembre 2020
    Messages : 7
    Par défaut
    Bonjour Franc,

    Un très grand merci à vous d'avoir pris le temps de vous pencher sur ma problématique. Cependant, lorsque j'essaie de tester le code, j'obtiens une erreur de compilation à la ligne "Part1Document.SetSecurityHandler securityHandler".

    D'après mes recherches, cette erreur peut être causée par une référence ou bibliothèque nécessaire qui n'est pas correctement définie dans le projet. J'ai vérifié et la référence "Adobe Acrobat 10.0 Type Library" est bien cochée (j'utilise Adobe PRO 2020).

    Est-ce que quelqu'un aurait une piste pour m'aider à comprendre pourquoi j'obtiens cette erreur ?

    Merci à l'avance!

Discussions similaires

  1. Ouvrir en état filtré en PDF avec mot de passe
    Par stephi222 dans le forum IHM
    Réponses: 13
    Dernier message: 22/10/2015, 06h31
  2. Réponses: 3
    Dernier message: 05/02/2013, 21h08
  3. [Débutant] Ouverture Pdf avec mot de passe
    Par bluehangel dans le forum C#
    Réponses: 1
    Dernier message: 01/10/2011, 15h14
  4. Imprimer en pdf avec mot de passe
    Par Hokutoki dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/03/2011, 17h46
  5. Réponses: 2
    Dernier message: 15/04/2005, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo