Envoi d'un mail contenant un lien hypertexte

Sly le globe trotter

XLDnaute Occasionnel
Bonjour,

Après des recherches infructueuses sur le forum, je me permets de poser la question directement. Je cherche à envoyer un mail depuis Excel dont le corps de message contiendrait un lien hypertexte vers mon fichier Excel ouvert.

J'ai trouvé la programmation pour envoyer le mail mais je n'arrive pas à ajouter de lien hypertexte vers mon fichier.

Voici mon code
Code:
Sub EnvoiDemande()

If Sheets("Demande").Range("c1") <> "Modèle" Then
    Dim MonOutlook, MonMessage As Object
    Dim Corps As String
    
    Set MonOutlook = CreateObject("Outlook.Application")
    Set MonMessage = MonOutlook.createitem(0)
    
    Corps = "Bonjour," & Chr(13) & Chr(10)
    Corps = Corps & "Voici une nouvelle demande." & Chr(13) & Chr(10)  
      
    MonMessage.to = "toto@toto.com
    MonMessage.Subject = "toto"
    MonMessage.body = Corps
    MonMessage.Send
    MsgBox "Demande envoyée"
    
   Set Raccourci = Nothing
   Set MonOutlook = Nothing
Else
    MsgBox ("Veuillez tout d'abord enregistrer le fichier svp. Merci !")
End If

End Sub

Merci pour votre aide
 

pierrejean

XLDnaute Barbatruc
Re : Envoi d'un mail contenant un lien hypertexte

bonjour Sly

a tester (en supposant le lien hypertexte en A1)

Code:
[LEFT]Sub EnvoiDemande()

If Sheets("Demande").Range("c1") <> "Modèle" Then
    Dim MonOutlook, MonMessage As Object
    Dim Corps As String
    
    Set MonOutlook = CreateObject("Outlook.Application")
    Set MonMessage = MonOutlook.createitem(0)
    
    Corps = "Bonjour," & Chr(13) & Chr(10)
    Corps = Corps & "Voici une nouvelle demande." & Chr(13) & Chr(10)  

    [COLOR=red]Corps = Corps & Range("A1").Hyperlinks(1).Address
[/COLOR]
    MonMessage.to = "toto@toto.com
    MonMessage.Subject = "toto"
    MonMessage.body = Corps
    MonMessage.Send
    MsgBox "Demande envoyée"
    
   Set Raccourci = Nothing
   Set MonOutlook = Nothing
Else
    MsgBox ("Veuillez tout d'abord enregistrer le fichier svp. Merci !")
End If

End Sub
 [/LEFT]
 

Sly le globe trotter

XLDnaute Occasionnel
Re : Envoi d'un mail contenant un lien hypertexte

Bonjour Pierrejean,

Merci pour ton aide.
Je viens de tester ton code. A l'éxécution, l'adresse de mon fichier vient bien se mettre dans le corps de l'email mais pas en lien hypertexte. De plus, je me retrouve avec le chemin complet, je n'arrive pas à afficher de nom pour le lien.

Si tu as une idée, merci beaucoup.

Sly
 

pierrejean

XLDnaute Barbatruc
Re : Envoi d'un mail contenant un lien hypertexte

re

je n'en jurerais pas mais le probleme ne me semble pas concerner Excel mais plutot Outlook

si j'ai bien compris tu souhaites avoir dans le message l'equivalent de ce que tu as dans ta cellule c'est à dire le .value le .hyperlinks avec ses propriétés etc...

il faut donc deja savoir si outlook peut l'accepter ce qui est hors de mes competences
 

MichelXld

XLDnaute Barbatruc
Re : Envoi d'un mail contenant un lien hypertexte

bonjour Sly, bonjour cher Pierre-Jean


Tu n'obtiens pas de lien hypertexte dans le message du destinataire ou dans le mail avant envoi?
Si c'est dans le mail avant envoi c'est normal ...mais le lien est bien créé



Tu peux tester ces deux exemples qui fonctionnent sous WinXP et officeXP


Code:
Sub CreationMailEtLienHypertexte()
    Dim OlApp As Outlook.Application
    Dim OlItem As Outlook.MailItem
    'Nécessite d'activer la référence "Microsoft Outlook xx.x Object Library"
 
    Set OlApp = New Outlook.Application
    Set OlItem = OlApp.CreateItem(olMailItem)
 
    With OlItem
        .To = "[EMAIL="NomPrenom@mail.fr"]NomPrenom@mail.fr[/EMAIL]"
        .Subject = "Le titre du message"
        .Body = "Découvrez Microsoft Office sur le site Developpez" & _
            vbLf & "[URL="http://www.developpez.com"]httt://www.developpez.com[/URL]" & vbLf & vbLf & _
            "Cordialement" & vbLf & "[EMAIL="emetteur@mail.fr"]mailto:emetteur@mail.fr[/EMAIL]"
        .Display
        .Save
        .Send
    End With
 
    Set OlItem = Nothing
    Set OlApp = Nothing
End Sub


Un autre exemple en utilisant la méthode CDO.


Code:
Sub liensDansCorpsDuMessage_CDO()
'adapté de : [URL="http://support.microsoft.com/default.aspx?kbid=286430"]How To Send HTML Formatted Mail Using CDO for Windows 2000 and the Local Pickup Directory[/URL]
Dim iMsg As Object, iConf As Object
Dim strHTML As String
 
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
 
strHTML = ""
strHTML = strHTML & "<HEAD>"
strHTML = strHTML & "<BODY>"
strHTML = strHTML & "Bonjour , <BR>Découvrez Microsoft Office sur le site Developpez<BR><BR>"
strHTML = strHTML & "<A href='http://www.developpez.com'>Cliquez ici.</A>"
 
strHTML = strHTML & "<BR><BR>Cordialement<BR>" & Environ("UserName") & "<BR>"
strHTML = strHTML & "<A href=mailto:emetteur@mail.fr>Mon adresse mail</A>"
strHTML = strHTML & "</BODY>"
strHTML = strHTML & ""
 
With iMsg
    Set .Configuration = iConf
    .To = "[EMAIL="NomPrenom@mail.fr"]NomPrenom@mail.fr[/EMAIL]" 'Renvoie une erreur si l'adresse est non valide
    '.From = "[EMAIL="youralias@yourdomain.com"]youralias@yourdomain.com[/EMAIL]"
    .Subject = "Test Envoi liens par mail"
    .HTMLBody = strHTML
    .Send
End With
End Sub


Bon après midi
MichelXld
 

Sly le globe trotter

XLDnaute Occasionnel
Re : Envoi d'un mail contenant un lien hypertexte

Bonjour MichelXld, Pierre-Jean,

Le lien hypertexte n'apparait ni dans le message du destinataire, ni dans le mail avant envoi. Je vais tester les solutions que tu me proposes et reviendrait commenter les résultats.

Merci ;-)
Sly
 

Sly le globe trotter

XLDnaute Occasionnel
Re : Envoi d'un mail contenant un lien hypertexte

Re,

Je viens de tester la première solution. Cela ne fonctionne pas. Le corps du message est bien crée mais il n'y a pas de lien hypertexte, juste du texte...
Cela doit venir d'un réglage d'Outlook mais je n'ai rien trouvé opur le moment...

Sly
 

Sly le globe trotter

XLDnaute Occasionnel
Re : Envoi d'un mail contenant un lien hypertexte

Re MichelXld, Pierre-Jean,

Je viens de tester la première solution que tu me proposais. Après une tentative infructueuse, je viens de parvenir à afficher un lien vers un site internet. Il me manquait une bibliothèque...

Cependant comment faire pour avoir un lien vers un fichier ?

Merci pour votre aide
Sly
 

MichelXld

XLDnaute Barbatruc
Re : Envoi d'un mail contenant un lien hypertexte

rebonjour

Un exemple qui crée un lien vers un fichier placé sur un serveur

Code:
Sub CreationMailEtLienHypertexte()
Dim OlApp As New Outlook.Application
Dim OlItem As Outlook.MailItem
'testé avec excel XP
' necessite d'activer la reference microsoft outlook 10.0 object library

Set OlItem = OlApp.CreateItem(olMailItem)

With OlItem
    .To = "[EMAIL="destinataire@mail.fr"]destinataire@mail.fr[/EMAIL]"
    .Subject = "Le titre du message"
    '\\FRRCHNT1 nom du serveur hebergeant le fichier lié
    .HTMLBody = "<BODY><A href='\\FRRCHNT1\repertoire\fichier.xls'>Description</A></BODY>"
    .Display
    .Save
    .send
End With

Set OlItem = Nothing
Set OlApp = Nothing

End Sub


Bon après midi
MichelXld
 

Sly le globe trotter

XLDnaute Occasionnel
Re : Envoi d'un mail contenant un lien hypertexte

Re MichelXld,

Une dernière question. ta solution fonctionne à merveille lorsque je saisie manuellement une adresse de fichier.
Quelle serait la ligne de commande à utiliser pour afficher un lien vers un fichier dont je récupère l'adresse via ActiveWorkbook.FullName.

Mille mercis
Sly
 

Discussions similaires

Réponses
2
Affichages
274

Statistiques des forums

Discussions
312 353
Messages
2 087 543
Membres
103 584
dernier inscrit
Serka