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 :

Envoi pdf par Outlook avec macro Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2022
    Messages : 11
    Par défaut Envoi pdf par Outlook avec macro Excel
    Bonjour,

    Malgré les nombreux messages traitant ce sujet, j'ai un problème avec la fonction.

    Lorsque j'enregistre une macro, via l'enregistreur de macro Excel, cela fonctionne très bien (Fichier, Partager, sélection pdf).
    Par contre lorsque je lance la macro il me joint le fichier Excel et non le pdf.
    Ci-dessous le code généré par l'enregistreur de macro.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            "C:\Users\esnfrbyx\AppData\Local\Temp\Quote Direction Sheet - Vx.pdf", Quality _
            :=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False _
            , OpenAfterPublish:=False   
        Application.Dialogs(xlDialogSendMail).Show
    Le pdf est bien créé dans le répertoire.
    Je suis sous 365.
    La librairie est bien active.

    Quelqu'un a t'il une idée de mon problème ?

    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
    Bonjour,

    l'enregistreur de macro ne capture pas les séquence où c'est le pdf qui est attaché au mail.

    Il faut donc traiter en deux étapes : la tienne (sans l'ouverture de la boite de dialogue d'envoi de mail) + une partie pour créer le mail et y attacher le pdf

    par exemple :

    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
    Sub Toto()
     
    ' ton code de création du pdf
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\Users\esnfrbyx\AppData\Local\Temp\Quote Direction Sheet - Vx.pdf", Quality _
    :=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False _
    , OpenAfterPublish:=False
     
     
    ' la partie qui crée le mail
    With CreateObject("Outlook.Application")
        With .CreateItem(0)
            .To = "Adresse du destinataire"
            .Subject = "Sujet du mail"
            .attachments.Add "C:\Users\esnfrbyx\AppData\Local\Temp\Quote Direction Sheet - Vx.pdf"
            .display
        End With
    End With
     
    End Sub

  3. #3
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 287
    Par défaut
    Salut
    La méthode que vous utilisez pour envoyer un mail permet d'envoyer en attache le classeur en cours.

  4. #4
    Membre régulier
    Homme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2022
    Messages : 11
    Par défaut Envoi pdf + Outlook suite
    Merci pour vos réponses.

    J'ai déjà essayer de de dissocier la création du pdf et de l'envoi, mais à chaque fois j'ai un problème avec "CreateObject("Outlook.Application")".

    J'ai une erreur d'exécution 429. Un composant ActiveX ne peut pas créer d'objet.

  5. #5
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 287
    Par défaut
    re,
    Sans le code global ...
    Un exemple de code fonctionnel
    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
    Sub EnvoyerMail()
    'early binding
    'Microsoft Outkook xx.x Object Library
    Dim xlWbk As Workbook
    Dim xlWsh As Worksheet
    Dim rngPlanning As Range
    Dim strFilePath As String, strFolder As String, strPdfFile As String
    Dim outApp As Outlook.Application
    Dim outMail As Outlook.MailItem
    Dim outAtt As Outlook.Attachment
     
    Set xlWbk = ThisWorkbook
    Set xlWsh = xlWbk.Worksheets("Mail")
    Set rngPlanning = xlWsh.Range("D1:BF24")
     
    strFilePath = ActiveWorkbook.Path & Application.PathSeparator
    strFolder = "planning\"
    strFilePath = strFilePath & strFolder
     
    strPdfFile = Format(Now(), "yyyymmdd") & "_" & "Planning" & "_" & xlWsh.Range("BI6").Value & ".pdf"
     
    rngPlanning.ExportAsFixedFormat Type:=xlTypePDF, _
                                    Filename:=strFilePath & strPdfFile, _
                                    Quality:=xlQualityStandard, _
                                    IncludeDocProperties:=True, _
                                    IgnorePrintAreas:=False, _
                                    OpenAfterPublish:=False
     
    Debug.Print strFilePath & strPdfFile
    Set outApp = New Outlook.Application
    Set outMail = outApp.CreateItem(olMailItem)
     
    With outMail
        .BodyFormat = olFormatHTML
        .Display
        .HTMLBody = "Bonjour " & xlWsh.Range("BI6").Value & "<br>" & "<br>" & _
                    "Vous trouverez votre planning en attache." & "<br>" & "<br>" & _
                    "Bonne réception."
        .To = xlWsh.Range("BK5").Value
        .Subject = "Planning de la semaine n° " & xlWsh.Range("V3").Value
        .Attachments.Add strFilePath & strPdfFile
        .Display '.Send
    End With
     
    Set outMail = Nothing
    Set outApp = Nothing
    End Sub

  6. #6
    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
    La méthode d'hypérion, en early binding, nécessite de cocher la bonne référence Outlook, qui variera d'une version à l'autre.
    Ce qui limite le portage d'une machine à l'autre.

    Ton erreur provient vraisemblablement du fait que tu as déjà une instance outlook ouverte.

    Il suffit donc de tester si on peut "capter" une instance Outlook, si ce n'est pas le cas, c'est qu'il est fermé ==> alors on l'ouvre

    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
    Sub Toto()
    Dim OlApp As Object
     
    ' ton code de création du pdf
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\Users\esnfrbyx\AppData\Local\Temp\Quote Direction Sheet - Vx.pdf", Quality _
    :=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False _
    , OpenAfterPublish:=False
     
    ' on tente de récupérer une instance Outlook ouverte
    On Error Resume Next
        Set OlApp = GetObject(, "Outlook.Application")
    On Error GoTo 0
     
    ' si on a rien récupéré, on en ouvre une
    If OlApp Is Nothing Then Set OlApp = CreateObject("Outlook.Application")
     
    ' la partie qui crée le mail
    With OlApp
        With .CreateItem(0)
            .To = "Adresse du destinataire"
            .Subject = "Sujet du mail"
            .attachments.Add "C:\Users\esnfrbyx\AppData\Local\Temp\Quote Direction Sheet - Vx.pdf"
            .display
        End With
    End With
     
    Set OlApp = Nothing
     
    End Sub

  7. #7
    Membre régulier
    Homme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2022
    Messages : 11
    Par défaut
    re,

    Cela bloque toujours sur la même commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set OlApp = CreateObject("Outlook.Application")

Discussions similaires

  1. Macro pour envoi PDF par courriel
    Par Ambrocbt dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/10/2011, 10h34
  2. Envoi d'une pièce jointe par email (OUTLOOK) avec macro excel
    Par francky74 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/08/2011, 11h20
  3. [XL-2007] Macro pour envoi PDF par courriel
    Par Klode784 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/01/2011, 04h10
  4. envoi mail outlook avec vba excel
    Par momolamoto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/09/2010, 10h45
  5. [XL-2003] envoie mail outlook avec donnée Excel
    Par xoum89 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/07/2010, 15h48

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