Lien hypertexte en VBA

Bonjour,

J'ai une macro qui me permets de préparer un mail avec une pièce jointe en PDF à partir d'un fichier Excel.

Dans le corps de mon message, je voudrai mettre un lien hypertexte, mais je ne sais pas comment mettre dans la macro.

Pourriez-vous m'aider, s'il vous plaît ?

En vous remerciant de votre aide.

Je vous joints le fichier. Le lien hypertexte se trouve à la cellule A8.

Sub Envoi_Mail()
   ChDir ActiveWorkbook.Path
    répertoireAppli = ActiveWorkbook.Path   ' Penser à Outils/Références Outlook
   '---  Envoi par mail
   Dim olapp As Outlook.Application
    Sheets("Mail Reporting Direction Pdf").Select
    [A13].Select
    Do While Not IsEmpty(ActiveCell)
      MsgTo = MsgTo & ActiveCell & ";"
    [A14].Select
      MsgCC = MsgCC & ActiveCell & ";"
    [A15].Select
      MsgBCC = MsgBCC & ActiveCell & ";"
      ActiveCell.Offset(1, 0).Select
    Loop
    Dim msg As MailItem
    Set olapp = New Outlook.Application
    Set msg = olapp.CreateItem(olMailItem)
    msg.To = MsgTo
    msg.CC = MsgCC
    msg.BCC = MsgBCC
    msg.Subject = [A2]
    msg.Body = [A5] & Chr(13) & Chr(13) & [A6] & Chr(13) & [A7] & Chr(13) & [A8] & Chr(13) & Chr(13) & [A10].Value & Chr(13) & Chr(13) & [A11].Value & Chr(13)
    '-- pj
    [C10].Select

        Do While Not IsEmpty(ActiveCell)
      nf = ActiveWorkbook.Path & "\Report NJ Pdf\" & ActiveCell.Value
      Fich = Dir(nf)
      msg.Attachments.Add ActiveWorkbook.Path & "\Report NJ Pdf\" & Fich
      ActiveCell.Offset(1, 0).Select
    Loop

    msg.Display

End Sub
31envoi-mail.xlsm (32.91 Ko)
msg.HTMLBody = "<a href='http://forum.excel-pratique.com/post431573.html#p431573'>Lien hypertexte en VBA</a>"

remplace aussi Chr(13) par <br/>qui est la balise html pour retour à la ligne

Bonjour Steelson,

Merci beaucoup pour ta réponse, si je mets ton code, comme ceci, j'ai dans mon corps de message Outlook uniquement que le lien hpertexte mais je n'ai pas les messages des celulles A5, A6, A7 et A10 et A11. Il manque une partie de mon message.

Cordialement.

 msg.To = MsgTo
    msg.CC = MsgCC
    msg.BCC = MsgBCC
    msg.Subject = [A2]
    msg.Body = [A5] & Chr(13) & Chr(13) & [A6] & Chr(13) & [A7] & Chr(13) & [A8] & Chr(13) & Chr(13) & [A10].Value & Chr(13) & Chr(13) & [A11].Value & Chr(13)
    msg.HTMLBody = "<a href='http://forum.excel-pratique.com/post431573.html#p431573'>Lien hypertexte en VBA</a>"
 
 msg.To = MsgTo
    msg.CC = MsgCC
    msg.BCC = MsgBCC
    msg.Subject = [A2]
    msg.HTMLBody = [A5] & "<br/>" & "<br/>" & [A6] & "<br/>" & [A7] & "<br/>" & [A8] & "<br/>" & "<br/>" & [A10].Value & "<br/>" & "<br/>" & [A11].Value & "<br/>" & "<a href='http://forum.excel-pratique.com/post431573.html#p431573'>Lien hypertexte en VBA</a>"
 

texte à adapter !

ou bien c'est body, ou bien HTMLbody, pas les 2 !

comme j'ai dit plus haut : dans ce cas le Chr(13) est remplacé par "<br/>"

Bonjour,

J'ai essayé d'adapter cela de la manière suivante:

[.....]

Dim Adresse as string

[.....]

Adresse = ActiveWorkbook.path

[.....]

msg.HTMLBody = "<a href=" & Adresse & ">" & Adresse & "</a><br>"

end sub

Cependant, mon classeur étant sur un emplacement réseau, la variable Adresse est assez longue.

Lorsque j'affiche le mail, la variable adresse est bien affichée au complet mais le lien hypertexte qui lui est associé semble tronqué. Ainsi, lorsque l'on clique sur le lien, impossible d'ouvrir le bon répertoire...

Quelqu'un pourrait-il m'aider?

D'avance merci de votre aide!

Bonjour,

Peut-on avoir la valeur de Adresse ?

As-tu essayé avec une adresse simple, comme :

http://www.excel-pratique.com/fr/index.php

Bonjour,

La valeur Adresse est: "\\Abysses\2-qualite\1- Documents applicables\3-Formulaires\F 008-061-065 - PV d'essais type".

J'ai essayé avec:

msg.HTMLBody = "<a href=" & "\\Abysses\2-qualite\1- Documents applicables\3-Formulaires\F 008-061-065 - PV d'essais type" & ">" & Adresse & "</a><br>"

et j'obtiens:

" \\Abysses\2-qualite\1- Documents applicables\3-Formulaires\F 008-061-065 - PV d'essais type " qui a pour adresse cible affectée: "\\Abysses\2-qualite\1-"

Y a-t-il une limitation dans le nombre de caractère que peut contenir un lien hypertexte?

Je viens de comprendre mon problème.

C'est qu'en fait le lien hypertexte se coupe au premier caractère "espace".

Ma problématique devient donc:

Comment faire pour que l'adresse du lien hypertexte puisse contenir des espaces?

J'ai trouvé une solution sur le site de microsoft:

https://support.office.com/fr-fr/article/Ajouter-des-liens-contenant-des-espaces-%C3%A0-un-message-%C3%A9lectronique-65e3086b-8f1c-4e4c-88ab-7489b3c823b1

Cependant, une nouvelle problématique se présente:

Si le lien contient le caractère " ' ", le lien se retrouve tronqué à ce niveau...

Ca semble plutôt la galère..

Mais non ce n'est pas la galère ...

Essaie cette fonction, à adapter sans doute :

Function texthtml(texte As String) As String
Dim i
texthtml = ""

    For i = 1 To Len(texte)
        If Asc(Mid(texte, i, 1)) > 127 Or Asc(Mid(texte, i, 1)) = 39 Then
            texthtml = texthtml + "&#" + Application.Trim(Str(Asc(Mid(texte, i, 1)))) + ";"
        Else
            texthtml = texthtml + Mid(texte, i, 1)
        End If
    Next

End Function

Enfin, j'ai ceci sous la main (les caractères exotiques sont transformés en &xxx;)

si cela ne fonctionne pas, il faudra les transformer en %yy dans le même esprit ...

Je pense que cette fonction est plus appropriée ...

Function escape(ByVal StringToEncode As String) As String
    Dim i As Integer
    Dim acode As Integer
    Dim char As String

    escape= StringToEncode

    For i = Len(escape) To 1 Step -1
        acode = Asc(Mid$(escape, i, 1))
        Select Case acode
            Case 48 To 57, 65 To 90, 97 To 122
                ' ne rien faire pour caracteres alphanumeriques

            Case 32
                ' remplace espace
                escape= Left$(escape, i - 1) & "%20" & Mid$(escape, i + 1)

            Case Else
                ' remplace ponctuation avec "%hex"
                char = Hex$(acode)
                If Len(char) = 1 Then
                    char = "0" & char
                End If
                escape= Left$(escape, i - 1) & "%" & char & Mid$(escape, i + 1)
        End Select
    Next
End Function

Bonjour,

je reviens sur un ancien sujet qui vas m'aider.

Mais est-il possible de le faire avec un lien hypertexte en format adresse mail qui en cliquant dessue édite un mail avec la dite adresse mail ?

Cordialement

Bonjour Stanley

Je te propose d'ouvrir un autre post.

Oui c'est possible par une procédure événementielle.

Faute de temps et en l'absence maintenant d'outlook sur mon post, je ne serai pas le mieux placé pour te répondre ... mais tu auras des contributeurs, sinon alerte moi par mp.

Rechercher des sujets similaires à "lien hypertexte vba"