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 de mail avec signature par VBA


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 69
    Points : 33
    Points
    33
    Par défaut Envoi de mail avec signature par VBA
    Bonjour à tous du forum, j'aimerais inclure ma signature dans un e-mail que j'envoie par VBA dans Excel. J'ai essayé une méthode que j'ai trouvé chez Ron Debruin, mais cela ne fonctionne pas. J'ai suivi les instructions, et j'ai adapté le code selon mes besoins, mais j'ai peut-être manqué quelque chose. Ou si quelqu'un a une autre méthode, je serais preneur. Si besoin est, je joindrai la partie du code pour mieux comprendre.

    Merci à l'avance de votre aide,

    Claude

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 46
    Points : 67
    Points
    67
    Par défaut
    Voici ma méthode (qui marche chez moi) et qui me paraît très (trop?) proche de celle de Debruin:

    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 EnvoiMail()
     
        Dim OutlookApp As Object
        Dim Mail As Object
     
        Set OutlookApp = CreateObject("Outlook.Application")
        Set Mail = OutlookApp.CreateItem(0)
     
        With Mail
            .To = "mon destinataire"
            .CC = "mes copies"
            .Subject = "Sujet"
            .BodyFormat = olFormatHTML
            .HTMLBody = "Bonjour,<br><br>" & GetBoiler("C:\Documents and Settings\ma_signature.htm")
            .Send
        End With
     
        Set Mail = Nothing
        Set OutlookApp = Nothing
     
    End Sub
     
    Function GetBoiler(ByVal sFile As String) As String
        Dim fso As Object
        Dim ts As Object
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
        GetBoiler = ts.readall
        ts.Close
    End Function

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 69
    Points : 33
    Points
    33
    Par défaut
    Merci Groslou2 pour ta réponse, je vois que tu as mis GetBoiler dans ta feuille alors que je l'ai mis dans un module standard tel que spécifié dans le site de Ron Debruin. Je vais essayer ta méthode et revenir pour le résultat.

    Après avoir fait quelques ajustements à mon code, tout fonctionne très bien.

    Merci beaucoup de ton aide,

    Claude

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 69
    Points : 33
    Points
    33
    Par défaut
    Bonjour à tous, j'ai un petit souci pour ma signature. Je dois dire que j'ai dans ma signature une image avec ma carte d'affaire. En faisant des tests, j'ai découvert que si Outlook est déjà ouvert, il s'ouvre une seconde fois (c'est ainsi fait dans le code), et l'image de ma carte est visible. Par contre, si Outlook n'est pas déjà ouvert, l'image de ma carte n'est pas visible. On voit bien qu'il y a quelque chose, mais il y a un X rouge et cela me dit qu'il y a un problème avec l'image. Quelqu'un a peut-être une solution à me proposer...

    Merci,

    Claude

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 46
    Points : 67
    Points
    67
    Par défaut
    La signature est un .html?
    Si oui, à quoi ressemble la balise image <img> associée à la signature? En particulier, est-ce qu'un chemin absolu ("C:\...") et non relatif est spécifié pour la source (src=...)? Pour voir tout ça il faut ouvrir le fichier signature avec le bloc-note par exemple.

  6. #6
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 836
    Points : 9 217
    Points
    9 217
    Par défaut
    vous pouvez consulter ce lien pour avoir plus d'idées
    Cordialement !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 69
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par groslou2 Voir le message
    La signature est un .html?
    Si oui, à quoi ressemble la balise image <img> associée à la signature? En particulier, est-ce qu'un chemin absolu ("C:\...") et non relatif est spécifié pour la source (src=...)? Pour voir tout ça il faut ouvrir le fichier signature avec le bloc-note par exemple.
    Bonjour groslou2, j'ai ouvert le fichier signature.htm et vers la fin il y a ceci:
    src="Skyport_fichiers/image001.jpg" v:shapes="_x0000_i1025"><![endif]><o:p></o:p></p>.

    J'imagine que c'est ce dont tu parles?

    Merci,

    Claude

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 46
    Points : 67
    Points
    67
    Par défaut
    Essaie en remplaçant src="Skyport_fichiers/image001.jpg" par le chemin absolu de ton image, du genre: src="C:/...../Skyport_fichiers/image001.jpg" puis en enregistrant les modifs.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 69
    Points : 33
    Points
    33
    Par défaut
    Bonjour groslou2, j'ai essayé ta solution mais ça ne fonctionne pas. Aurais-tu une autre idée, ou si quelqu'un d'autre peut proposer son idée, j'en ferai l'essai.

    Merci,

    Claude

  10. #10
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 836
    Points : 9 217
    Points
    9 217
    Par défaut
    Citation Envoyé par Klode784 Voir le message
    Bonjour groslou2, j'ai essayé ta solution mais ça ne fonctionne pas. Aurais-tu une autre idée, ou si quelqu'un d'autre peut proposer son idée, j'en ferai l'essai.
    Merci,
    Claude
    je ne sais pas si avec cette méthode vous pouvez résoudre votre problème de signature en HTML ou non ?
    Lisez ces deux discussions:
    Discussion 1
    Discussion 2
    Cordialement

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 69
    Points : 33
    Points
    33
    Par défaut
    Bonjour à tous du forum, j'ai essayé diverses solutions mais ça ne fonctionne toujours pas. J'ai bien trouvé une solution temporaire en indiquant dans le code display au lieu de send et je dois inclure ma signature manuellement. J'aimerais bien trouver une solution pour que ça fonctionne à chaque fois afin de pouvoir envoyer le mail automatiquement.

    Merci,

    Claude

  12. #12
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut image signatire
    Bonsoir,

    Tu peux lever ce problème en te créant une image temporaire à partir d'un champ comprenanr ta signature, du texte, une image...., puis en collant cette image en fin de mail.

    4 étapes

    En-tête de module

    Const Img_temp As String = "monrépertoire\monimage.jpg"

    Dans la partie du code relative à ton mail (J'ai volontairement édité à partie de End With)

    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
     
     
        End With
     
        'copie du corps de texte dans le corps de message
        Call Plage_Mail
     
    Application.wait (Now + TimeValue("0:00:01"))
        AppActivate Objet_Mail & " - Message", 0   ' Active Outlook
        Application.wait (Now + TimeValue("0:00:01"))
        SendKeys "^v", True  ' coller
        Application.wait (Now + TimeValue("0:00:01"))
        SendKeys "%v", True  ' Envoi du message
        Application.CutCopyMode = False
     
        Set Applic_Outlook = Nothing

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  13. #13
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    (mauvaise manipulation, excusez-moi)

    Ici, l'instruction avant est pour ne pas envoyer le mail.

    Etape 3 : création de l'image appeléev dans la macro du mail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Plage_Mail()
    Call Image_Temporaire
    End Sub
    Etape 4 : Définition de l'image

    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
    Sub Image_Temporaire(Optional dummy As Byte)
    Dim cellule_corp As Range
    Dim image_chart As ChartObject
    On Error Resume Next
    For Each Image In ActiveSheet.Charts
        Image.Delete
    Next
    On Error GoTo 0
    'à adapter ==> il s'agit du champ comprtant la signature 
    Set cellule_corp = Range("corps_2")
    cellule_corp.CopyPicture xlScreen, xlBitmap
    With cellule_corp
      Set image_chart = ActiveSheet.ChartObjects.Add( _
        .Left, .Top, .Width + 5, .Height + 5)
    End With
    With image_chart.Chart
      .Paste
      .Export filename:=Img_temp
    End With
    image_chart.Delete
    Set image_chart = Nothing
    Set cellule_corp = Nothing
    End Sub

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  14. #14
    Membre actif
    Inscrit en
    Août 2005
    Messages
    697
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 697
    Points : 247
    Points
    247
    Par défaut
    Bonjour,

    Est-il possible d'utiliser la signature "automatique" déjà présente dans outlook ? (via VBA excel)
    L'idée est que la signature ajoutée via ma macro serait celle de la personne qui lance la macro.

    Merci à tous,

  15. #15
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour, Bonjour au Forum,

    Si tu considères le processus proposé, la signature du mail sera celle par défaut de la messagerie Outlook.
    C'est donc la signature du collaborateur à l'origine du mail qui sera prise en compte.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  16. #16
    Membre actif
    Inscrit en
    Août 2005
    Messages
    697
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 697
    Points : 247
    Points
    247
    Par défaut
    Bonsoir,

    J'ai le code ci-dessous qui fonctionne très bien pour l'envoi de mail, par contre comme je débute, je n'arrive pas à voir ou et comment je peux ajouter les intructions de signature.
    Faut-il ajouter & GetBoiler("C:\Documents and Settings\ma_signature.htm") après le corps du message ?

    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
     
    Dim appOutlook As Outlook.Application
        Set appOutlook = Outlook.Application
        Dim MESSAGE As Outlook.MailItem
        Dim objRecipient As Outlook.Recipient
     
        Set MESSAGE = appOutlook.CreateItem(olMailItem)
        With MESSAGE
            .Subject = "[Création] " & ActiveCell.Value
     
            ' Corps en HTML
            .BodyFormat = olFormatHTML
            .HTMLBody = "<html><body> <font face=""calibri""><p>Bonjour,</p><p>Test.</p>" 
     
            ' Destinataire principal
            Set objRecipient = .Recipients.Add("ABC@free.fr")
            objRecipient.Type = olTo    'olBCC, olCC, olOriginator ou olTo.
            objRecipient.Resolve
     
            ' Destinataire en copie
            Set objRecipient = .Recipients.Add(Variable_contact)
            objRecipient.Type = olCC    'olBCC, olCC, olOriginator ou olTo.
            objRecipient.Resolve
            '
            'Ajout d 'une PJ
            Dim PJ
            PJ = Rep_Projet & "\[Création] " & ActiveCell.Value & ".xlsx"
            'on verifie d'abord qu'elle existe.
            If Dir(PJ) <> "" Then
                .Attachments.Add PJ
            End If
     
            'ajout AR lecture
            .ReadReceiptRequested = False
     
            'Afficher le mail
            .Display
            'Envoyer le mail automatiquement
            '.Send
     
     
        End With
    Merci à tous,

  17. #17
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Comme je te l'ai mentionné, je ne suis pas familiarisé avec ce type de gestion de mail.

    Au demeurant, si, sur un moteur de recherche connu, tu écris "getboiler vba" alors le retour de l'espace de Rondebruin (une référence) semble retourner des pistes qui pourraient t'être utiles.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  18. #18
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut hypothèse
    Bonjour,

    Peut-être un peu capillero tracté mais admettons.

    Si un mail.display affihe un new mail outlook avec signature
    Ça voudrait donc dire que c'est l injection du .body qui remplace le texte et signature.

    Si on plaçait ce .body du mail "vide" donc uniquement signature dans une variable et venir le réinjecter ?

    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
     
    Dim OApp As Object, OMail As Object, signature As String
    Set OApp = CreateObject("Outlook.Application")
    Set OMail = OApp.CreateItem(0)
        With OMail
        .Display
        End With
            signature = OMail.body
        With OMail
        '.To = "someone@somedomain.com"
        '.Subject = "Type your email subject here"
        '.Attachments.Add
        .body = "ton texte " & vbNewLine & signature
        '.Send
        End With
    Set OMail = Nothing
    Set OApp = Nothing
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

Discussions similaires

  1. Envoi de mail avec signature Outlook.
    Par Richard_35 dans le forum VBA Outlook
    Réponses: 11
    Dernier message: 27/03/2015, 17h19
  2. [XL-2007] envoi e-mail avec outlook en vba
    Par thibautewbank dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2012, 18h27
  3. Envoi de Mail avec Signature HTML
    Par Yaz dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 07/08/2006, 11h44
  4. [VBA-A] Envoi de mail sans passer par Outlook ou autre.
    Par genius99 dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/02/2006, 08h50
  5. Envoi de mail avec pièce attachée par SMTP
    Par yess78 dans le forum IIS
    Réponses: 4
    Dernier message: 09/12/2005, 14h33

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