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 :

Fusionner deux macros


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Par défaut Fusionner deux macros
    Bonjour la famille,
    Dans un fichier Excel, j'ai deux macros: celle qui transforme une feuille Excel en PDF et l'envoie et celle qui crypte le fichier avec un mot de passe.
    Maintenant je voudrais fusionner les deux macros.
    Besoins de votre aide SVP.
    Le code ci-dessous

    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
    75
    76
    77
    78
    79
    80
    81
    82
     
    Option Explicit
     
    Sub Mail()
    Dim Destinataire As String
    Dim sNomPdf As String
    Dim sDossier As String
    Dim sNomCrypt As String
    Dim objApp As Object
    Dim File As Object
    Dim OutApp As Object
    Dim objMessage As Object
     
    Dim EmailApp As Outlook.Application
    Dim Source As String
    Set EmailApp = New Outlook.Application
     
        sDossier = ThisWorkbook.Path
     
        Destinataire = "monmail@outlook.com"
        sNomPdf = sDossier & "\" & "Test.pdf"
     
        Feuil1.ExportAsFixedFormat _
                Type:=xlTypePDF, _
                Filename:=sNomPdf, _
                Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, _
                OpenAfterPublish:=False
     
        sNomCrypt = sDossier & "\" & "Tempo.pdf"
        EncryptPDFUsingPdfforgeDll sNomPdf, sNomCrypt
     
        Kill sNomPdf
        Name sNomCrypt As sNomPdf
     
        Dim EmailItem As Outlook.MailItem
        Set EmailItem = EmailApp.CreateItem(0)
     
        EmailItem.To = Destinataire
        EmailItem.CC = ""
        EmailItem.BCC = ""
        EmailItem.Subject = "Test"
        EmailItem.HTMLBody = "Bonjour," & vbNewLine & vbNewLine & "Veuillez trouvez ci-joint votre Document. Votre mot de passe est ." & _
        vbNewLine & vbNewLine & _
        "Cordialement!," & vbNewLine & _
        "Contact"
        Source = ThisWorkbook.FullName
        EmailItem.Attachments.Add ("C:\Users\bc00T349\Desktop\Test.pdf")
        EmailItem.Send
     
        Set objApp = Nothing
     
        Set objMessage = Nothing
    End Sub
     
    Private Sub EncryptPDFUsingPdfforgeDll(sNomFichier As String, sOutputCrypt As String)
    Dim Pdf As Object, Crypt As Object
     
        Set Crypt = CreateObject("pdfforge.pdf.PDFEncryptor")
     
        With Crypt
            .AllowAssembly = False
            .AllowCopy = False
            .AllowFillIn = False
            .AllowModifyAnnotations = False
            .AllowModifyContents = False
            .AllowPrinting = True
            .AllowPrintingHighResolution = True
            .AllowScreenReaders = False
            .EncryptionMethod = 2
     
            .OwnerPassword = "master"
            .UserPassword = "master"
        End With
     
        Set Pdf = CreateObject("pdfforge.pdf.pdf")
        Pdf.EncryptPDFFile sNomFichier, sOutputCrypt, Crypt
        Set Pdf = Nothing
     
        Set Crypt = Nothing
    End Sub
    Je mets en PJ le fichier Excel
    Pièce jointe 585718

    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    A part une vocation didactique (cours, études), il n'y a que des inconvénients à fusionner tes procédures.

    Le bon sens c'est justement de découper en mini-procédures/mini-fonctions chaque étape (plus facile de débugguer, de faire évolution, de réutiliser dans d'autres contextes). Dans l'idéal chaque procédure est dédiée à une action, et une procédure maître se charge de faire les appels de traitement.

    Quel est la finalité souhaitées de ce fait ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Par défaut Réponse
    Citation Envoyé par joe.levrai Voir le message
    A part une vocation didactique (cours, études), il n'y a que des inconvénients à fusionner tes procédures.

    Le bon sens c'est justement de découper en mini-procédures/mini-fonctions chaque étape (plus facile de débugguer, de faire évolution, de réutiliser dans d'autres contextes). Dans l'idéal chaque procédure est dédiée à une action, et une procédure maître se charge de faire les appels de traitement.

    Quel est la finalité souhaitées de ce fait ?
    Merci pour les enseignements.
    EN fait je voudrais intégrer cette nouvelle macro fusionnée dans macro d'envoi de mail en boucle. Et d'après ma compréhension, ces deux macros doivent être fusionner pour que l'envoi de mail se fasse en boucle.
    Cordialement

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je rejoins Joe , que je salue au passage, par rapport à sa réponse.
    Plus on découpe ses procédures, plus on a des chances d'avoir une application facile à développer et surtout à maintenir.

    ces deux macros doivent être fusionner pour que l'envoi de mail se fasse en boucle
    Sans entrer dans le détail, la boucle devrait invoquer la où les procédures intervenant dans l'envoi du mail en lui passant des arguments.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Par défaut Réponse
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Je rejoins Joe, que je salue au passage, par rapport à sa réponse.
    Plus on découpe ces procédures, plus on a des chances d'avoir une application facile à développer et surtout à maintenir.


    Sans entrer dans le détail, la boucle devrait invoquer la où les procédures intervenant dans l'envoi du mail en lui passant des arguments.
    Bonjour Philippe,
    Merci pour ces éclaircissements. Je crois donc que c'est moi qui n'ai pas compris la démarche que je devais suivre pour apporter une solution à mon problème.

    Pour ne pas tirer en longueur, je mets, en pj, test-mail.xlsm le fichier Excel sur lequel je travaille et la macro que j'ai trouvée, à travers mes recherches, et qui devait me permettre de crypter les PDF et attribuer un mot de passe.


    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
     
    Option Explicit
     
    Sub Mail()
    Dim Destinataire As String
    Dim sNomPdf As String
    Dim sDossier As String
    Dim sNomCrypt As String
    Dim objApp As Object
    Dim File As Object
    Dim OutApp As Object
    Dim objMessage As Object
     
    Dim EmailApp As Outlook.Application
    Dim Source As String
    Set EmailApp = New Outlook.Application
     
        sDossier = ThisWorkbook.Path
     
        Destinataire = "monmail@outlook.com"
        sNomPdf = sDossier & "\" & "Test.pdf"
     
        Feuil1.ExportAsFixedFormat _
                Type:=xlTypePDF, _
                Filename:=sNomPdf, _
                Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, _
                OpenAfterPublish:=False
     
        sNomCrypt = sDossier & "\" & "Tempo.pdf"
        EncryptPDFUsingPdfforgeDll sNomPdf, sNomCrypt
     
        Kill sNomPdf
        Name sNomCrypt As sNomPdf
     
        Dim EmailItem As Outlook.MailItem
        Set EmailItem = EmailApp.CreateItem(0)
     
        EmailItem.To = Destinataire
        EmailItem.CC = ""
        EmailItem.BCC = ""
        EmailItem.Subject = "Test"
        EmailItem.HTMLBody = "Bonjour," & vbNewLine & vbNewLine & "Veuillez trouvez ci-joint votre Document. Votre mot de passe est ." & _
        vbNewLine & vbNewLine & _
        "Cordialement!," & vbNewLine & _
        "Contact"
        Source = ThisWorkbook.FullName
        EmailItem.Attachments.Add ("C:\Users\bc00T349\Desktop\Test.pdf")
        EmailItem.Send
     
        Set objApp = Nothing
     
        Set objMessage = Nothing
    End Sub
     
    Private Sub EncryptPDFUsingPdfforgeDll(sNomFichier As String, sOutputCrypt As String)
    Dim Pdf As Object, Crypt As Object
     
        Set Crypt = CreateObject("pdfforge.pdf.PDFEncryptor")
     
        With Crypt
            .AllowAssembly = False
            .AllowCopy = False
            .AllowFillIn = False
            .AllowModifyAnnotations = False
            .AllowModifyContents = False
            .AllowPrinting = True
            .AllowPrintingHighResolution = True
            .AllowScreenReaders = False
            .EncryptionMethod = 2
     
            .OwnerPassword = "master"
            .UserPassword = "master"
        End With
     
        Set Pdf = CreateObject("pdfforge.pdf.pdf")
        Pdf.EncryptPDFFile sNomFichier, sOutputCrypt, Crypt
        Set Pdf = Nothing
     
        Set Crypt = Nothing
    End Sub
    Tout en espérant que cela m'aidera à avancer dans la suite de mon projet, je vous remercie d'avance.
    Mes salutations cordiales.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    [...]
    C'est le genre de réponses que j'apprécie particulièrement. Merci Joe
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. FUSIONNER DEUX COLONNES : est ce posible ?
    Par ePoX dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/12/2005, 20h59
  2. Fusionner deux tables
    Par rdjema dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2005, 18h42
  3. [Debutant] [JTable] Fusionner deux cellules
    Par devil26 dans le forum Composants
    Réponses: 4
    Dernier message: 03/05/2005, 13h39
  4. [TreeMap] comparer et fusionner deux TreeMap
    Par LoLoSS dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 06/09/2004, 11h49

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