Insérer un lien hypertexte dans un mail envoyé par VBA

Bonjour,

J'ai fait plusieurs recherches et plein d'essais mais je n'arrive malheureusement pas à insérer un lien hypertexte dans mon corps de mail qui serait envoyé automatiquement.

J'ai eu soit le chemin d'accès qui se met, soit le nom mais plus le chemin ou alors le chemin et le nom mais pas en lien.

Je suis sûr que c'est une "connerie" mais je bloque….

Pouvez-vous m'aider ?

merci beaucoup

Sub SendMailhyperlink()

Dim lien  As String
Dim csPath1 As String
Dim Myname As String
Dim MonOutlook As Object
Dim MonMessage As Object

    csPath1 = "P:\Finance Department\Finance_Transport\Test_PAS_TOUCHE_LAURENT\"
    Myname = ("ANNEXE_BPOST_MINI_PACK_SCAN") & "_" & Sheets("MAIN MINI PACK SCAN").Range("C4") & "_" & Sheets("Annexe Transport").Range("L5") & "_" & Sheets("Annexe Transport").Range("M5") ' & "_" & Format(Date, "mmmm_yyyy")
    lien = csPath1 & Myname
        

    Set MonOutlook = CreateObject("Outlook.Application")
    Set MonMessage = MonOutlook.CreateItem(0)
    
    MonMessage.BodyFormat = 2
    
    corps = "<HTML><BODY>"
    
    MonMessage.To = "xxx@xxx.com"
    
    MonMessage.cc = ""
    MonMessage.Subject = "Annexe facture"
  
    corps = corps & "Bonjour,"
    corps = corps & "<p>"
    corps = corps & "<p> Ci-dessous le lien vers l'annexe qui a été crée : "".</p>"
    
    corps = corps & "<a href=lien>lien</a></p>"
  
    corps = corps & "</BODY></HTML>"
  
  MonMessage.HTMLBody = corps
  MonMessage.display "true"
  

End Sub<code basic>
</code>

5 réponses

  1. Contributeur Ambassadeur
    bonjour, il me semble que tu n'utilises pas la variable lien.
    as-tu examiné le contenu de la variable corps?
    0
    1. Bonjour,

      merci pour la réponse.

      J'ai modifié le code pour que le corps du message affiche bien le fichier créé mais pas moyen de faire en sorte que le mot "lien" soit sous forme de lien le reflet du fichier indiqué par csPath1 & Myname.

      Merci
      Laurent

      Sub SendMailhyperlink()

      Dim lien As String
      Dim csPath1 As String
      Dim Myname As String
      Dim MonOutlook As Object
      Dim MonMessage As Object

      csPath1 = "P:\Finance Department\Finance_Transport\Test_PAS_TOUCHE_LAURENT\"
      Myname = ("ANNEXE_BPOST_MINI_PACK_SCAN") & "_" & Sheets("MAIN MINI PACK SCAN").Range("C4") & "_" & Sheets("Annexe Transport").Range("L5") & "_" & Sheets("Annexe Transport").Range("M5") ' & "_" & Format(Date, "mmmm_yyyy")
      lien = csPath1 & Myname

      Set MonOutlook = CreateObject("Outlook.Application")
      Set MonMessage = MonOutlook.CreateItem(0)

      MonMessage.BodyFormat = 2

      corps = "<HTML><BODY>"

      MonMessage.To = "xxx@xxx.com"

      MonMessage.cc = ""
      MonMessage.Subject = "Annexe facture"

      corps = corps & "Bonjour,"
      corps = corps & "<p>"
      corps = corps & "<p> Ci-dessous le lien vers l'annexe qui a ?t? cr?e : "".</p>"
      corps = corps & csPath1
      corps = corps & Myname
      lien = csPath1 & Myname
      corps = corps & "<a href=""csPath1 & Myname"">lien</a></p>"

      corps = corps & "</BODY></HTML>"

      MonMessage.HTMLBody = corps
      MonMessage.display "true"

      End Sub
      0
    2. Ho pardon, j'étais persuadé d'avoir utilisé l'onglet code….

      voici ci-dessous ce qui s'affiche :

      Bonjour,
      Ci-dessous le lien vers l'annexe qui a été crée : ".
      P:\Finance Department\Finance_Transport\Test_PAS_TOUCHE_LAURENT\ANNEXE_BPOST_MINI_PACK_SCAN_195103931_12_2019lien

      Sub SendMailhyperlink()
      
      Dim lien  As String
      Dim csPath1 As String
      Dim Myname As String
      Dim MonOutlook As Object
      Dim MonMessage As Object
      
          csPath1 = "P:\Finance Department\Finance_Transport\Test_PAS_TOUCHE_LAURENT\"
          Myname = ("ANNEXE_BPOST_MINI_PACK_SCAN") & "_" & Sheets("MAIN MINI PACK SCAN").Range("C4") & "_" & Sheets("Annexe Transport").Range("L5") & "_" & Sheets("Annexe Transport").Range("M5") ' & "_" & Format(Date, "mmmm_yyyy")
          lien = csPath1 & Myname
              
      
          Set MonOutlook = CreateObject("Outlook.Application")
          Set MonMessage = MonOutlook.CreateItem(0)
          
          MonMessage.BodyFormat = 2
          
          corps = "<HTML><BODY>"
          
          MonMessage.To = "xxx@xxx.com"
          
          MonMessage.cc = ""
          MonMessage.Subject = "Annexe facture"
        
          corps = corps & "Bonjour,"
          corps = corps & "<p>"
          corps = corps & "<p> Ci-dessous le lien vers l'annexe qui a ?t? cr?e : "".</p>"
          corps = corps & csPath1
          corps = corps & Myname
          lien = csPath1 & Myname
          corps = corps & "<a href=""csPath1 & Myname"">lien</a></p>"
        
          corps = corps & "</BODY></HTML>"
        
        MonMessage.HTMLBody = corps
        MonMessage.display "true"
        
      
      End Sub
      0
      1. Contributeur Ambassadeur
        et quand tu cliques sur le lien, que vois-tu?

        pour t'aider à comprendre ce que tu fais, je suggère de remplacer
        corps = corps & "<a href=""csPath1 & Myname"">lien</a></p>"

        par
        dim url as string
        url= "<a href=""csPath1 & Myname"">lien</a>"
        corps = corps & url & "</p>"
        msgbox url

        que vois-tu quand tu exécutes cela?
        0
      2. @yg_beBonsoir,

        J'essayerai cela demain matin et je te reviens dès que je l'aurai intégré à mon code.

        Merci
        Laurent
        0
    3. Bonsoir,

      Voici ce qui s'affiche lorsque j'ai remplacé la partie du code.


      Sub SendMailhyperlink()
      
      Dim lien  As String
      Dim csPath1 As String
      Dim Myname As String
      Dim MonOutlook As Object
      Dim MonMessage As Object
      Dim url As String
      
          csPath1 = "P:\Finance Department\Finance_Transport\Test_PAS_TOUCHE_LAURENT\"
          Myname = ("ANNEXE_BPOST_MINI_PACK_SCAN") & "_" & Sheets("MAIN MINI PACK SCAN").Range("C4") & "_" & Sheets("Annexe Transport").Range("L5") & "_" & Sheets("Annexe Transport").Range("M5") ' & "_" & Format(Date, "mmmm_yyyy")
          'lien = csPath1 & Myname
              
      
          Set MonOutlook = CreateObject("Outlook.Application")
          Set MonMessage = MonOutlook.CreateItem(0)
          
          MonMessage.BodyFormat = 2
          
          corps = "<HTML><BODY>"
          
          MonMessage.To = "xxx@xxx.com"
          
          MonMessage.cc = ""
          MonMessage.Subject = "Annexe facture"
        
          corps = corps & "Bonjour,"
          corps = corps & "<p>"
          corps = corps & "<p> Ci-dessous le lien vers l'annexe qui a ?t? cr?e : "".</p>"
          corps = corps & csPath1
          corps = corps & Myname
          'lien = csPath1 & Myname
          'corps = corps & "<a href= lien & csPath1>""clique ici""</a></p>"
          url = "<a href=""csPath1 & Myname"">lien</a>"
          corps = corps & url & "</p>"
          corps = corps & "</BODY></HTML>"
          MsgBox url
          
        MonMessage.HTMLBody = corps
        MonMessage.Display "true"
        
      
      End Sub
      0
      1. Contributeur Ambassadeur
        ne vois-tu pas que tu n'utilises pas les variables quand tu écris
        url = "<a href=""csPath1 & Myname"">lien</a>"

        il est préférable de faire:
        url = "<a href=" + csPath1 + Myname + ">lien</a>"
        0
    4. Bonsoir,

      Voilà j'ai finalement trouvé pour que tout fonctionne :-)

      Voilà ce que cela donne avant que j'achève de modifier le code pour que le mail s'envoie automatiquement.

      Ci-dessous le code, cela pourra servir.

      Merci de ton aide !

      Laurent



      Sub SendMailhyperlink()
      
      Dim lien  As String
      Dim csPath1 As String
      Dim Myname As String
      Dim MonOutlook As Object
      Dim MonMessage As Object
      Dim url As String
      
      
      csPath1 = "P:\Finance Department\Finance_Transport\Test_PAS_TOUCHE_LAURENT\"
      Myname = ("ANNEXE_BPOST_MINI_PACK_SCAN") & "_" & Sheets("MAIN MINI PACK SCAN").Range("C4") & "_" & Sheets("Annexe Transport").Range("L5") & "_" & Sheets("Annexe Transport").Range("M5") & ".xlsm" ' & "_" & Format(Date, "mmmm_yyyy")
              
      
          Set MonOutlook = CreateObject("Outlook.Application")
          Set MonMessage = MonOutlook.CreateItem(0)
          
          MonMessage.BodyFormat = 2
          
          corps = "<HTML><BODY>"
          
          MonMessage.To = "xxx@xxx.com"
          
          MonMessage.Subject = "Annexe facture    " & Myname
        
          corps = corps & "Bonjour,"
          corps = corps & "<p>"
          corps = corps & "L'annexe ci-apr?s a ?t? cr?? :   " & Myname
          corps = corps & "<p>"
          corps = corps & "Ci-dessous vous trouverez le lien pour y avoir directement acc?s."
          corps = corps & "<p>"
          
          lien = csPath1 & Myname
          
          corps = corps & "<p>"
          corps = corps & "<b><A HREF=""" & lien & """>   lien    </A></b>"
          corps = corps & "<p>"
          corps = corps & "Le fichier s'ouvrira sur votre page Annexe Finance."
          corps = corps & "<p>"
          corps = corps & "Bien ? vous,"
          corps = corps & "<p>"
          corps = corps & "Laurent,"
          corps = corps & "</BODY></HTML>"
             
          MonMessage.HTMLBody = corps
          MonMessage.Display "true"
      0
      1. Contributeur Ambassadeur
        parfait, peux-tu marquer la discussion comme résolue?
        0