Inclure un lien HTLM vers un dossier dans un e-mail

Bonjour,

J'ai voulu créer une Macro à partir d'un tableau excel aujourd'hui alors que je n'y connais absolument rien.

Le but de cette macro était que lorsque l'on enregistre le fichier excel, dès qu'un utilisateur modifie le tableau, un mail est envoyé à tous les utilisateurs pour les avertir d'une modification, et mettre dans le corps de cette e-mail, un lien redirigeant vers le fichier.

J'ai mis ce code dans "ThisWorkBook":

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 Dim strbody As String
Dim ol As Object, monmail As Object
DisplayAlerts = False
Set ol = CreateObject("outlook.application")
Set monmail = ol.CreateItem(olMailItem)
monmail.T0 = "utilisateur1@gmail; utilisateur2@gmail; utilisateur3@gmail"
monmail.Subject = "Modifications"
monmail.HTMLBody = "Bonjour, merci de prendre connaissance des modifications effectuées" & "<a href=""C:\Dossier\Fichier.xlm\""> ici</a>" & " Merci"      

monmail.Send
Set ol = Nothing
End Sub

Le problème c'est que dans mon e-mail, je n'ai aucun lien hypertexte redirigeant vers le fichier. Est-ce que quelqu'un saurait m'aider si je ne suis pas trop loin du but?

Par ailleurs, j'en profite, est-ce qu'il serait possible d'afficher dans le mail le tableau du fichier? j'ai trouvé cette ligne de code sur un autre forum mais comment l'ajouter à mes lignes de codes précédentes? (J'ai copié/collé tel quel le code ci-dessous donc je ne l'ai pas encore adapté à mon cas: texte à rajouter et cellule à modifier).

With oBjMail
       .Display
       '.To = " ***********@gmail" ' le destinataire
       .Subject = Range("A1") & " - modification("E1") & "TR" & Range("E2")
       .HTMLBody = "<html><body>" & "Madame, Monsieur," & _
        "<br>" & "" & "</ br>" & _
        "<br>" & "texte à ajouter" & Range("E1") & "er" & " texte à ajouter" & Range("E2") & "." & "</ br>" & _
        "<br>" & "" & "</ br>" & _
        "<br>" & "texte " & Range("E23").Text & ". " & "</ br>" & _
        "<br>" & "" & "</ br>" & _
        "<table border = 1>" & "<tr>" & "<td colspan = 2>" & Range("A25") & "</td>" & " </tr>" & _
        "<tr>" & "<td>" & Range("A26") & "</td>" & "<td>" & Range("D26").Text & "</td>" & " </tr>" & _
        "<tr>" & "<td>" & Range("A27") & "</td>" & "<td>" & Range("D27").Text & "</td>" & " </tr>" & _
        "<tr>" & "<td>" & Range("A28") & "</td>" & "<td>" & Range("D28").Text & "</td>" & " </tr>" & _
        "<tr>" & "<td>" & Range("A29") & "</td>" & "<td>" & Range("D29") & "</td>" & " </tr>" & _
        "<tr>" & "<td>" & Range("A30") & "</td>" & "<td>" & Range("D30") & "</td>" & " </tr>" & _
        "<tr>" & "<td>" & Range("A31") & "</td>" & "<td>" & Range("D31") & "</td>" & " </tr>" & "</table>" & _
        "<br>" & "texte." & "</ br>" & _
        "<br>" & "" & "</ br>" & _
        "<br>" & "Cordialement," & "</ br>" & _
        "</body></html>" & .HTMLBody

      '.Attachments.Add Nom_Fichier '"C:\Data\essai.txt" ' ou Nomfichier
       '.GetInspector.CommandBars.Item("Insert").Controls("Signature").Controls(1).Execute
       '.Display  '   Ici on peut supprimer pour l'envoyer sans vérification
       '.Send
    End With

Merci d'avance,

Newbiedu62

Bonjour,

regarde l'exemple ici :

Merci beaucoup!

Bbonjour,

j'ai réussi à inclure le lien HTLM grâce à votre aide.

Maintenant je voudrais inclure le tableau qui va de la colonne A1 à B13 dans l'envoi du mail. Comment et où le rajouter dans la ligne de code ci-dessous:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim OutApp As Object
    Dim OutMail As Object
    Dim cell As Range
    Dim strbody, EmailAddr, EmailAddrCC, Subj As String

      EmailAddr = Sheets("Feuil1").Range("H8")
      EmailAddrCC = Sheets("Feuil1").Range("H9")
      Subj = Sheets("Feuil1").Range("H11")

       Sheets("Feuil1").Select

    If ActiveWorkbook.Path <> "" Then
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)

        strbody = "<font size=""3"" face=""Calibri"">" & _
                  "Bonjour,<br><br>" & _
                  "Merci de consulter :<br><B>" & _
                  ActiveWorkbook.Name & "</B>qui a été modifié.<br>" & _
                  "Cliquez sur ce lien pour ouvrir le fichier : " & _
                  "<A HREF=""file://..." & _
                  """>nom du fichier</A>" & _
                  "<br><br>Cordialement</font>"

        On Error Resume Next
        With OutMail
            .To = EmailAddr
            .CC = EmailAddrCC
            .BCC = ""
            .Subject = Subj
            .HTMLBody = strbody
            .Display   'or use .Send
        End With
        On Error GoTo 0

        Set OutMail = Nothing
        Set OutApp = Nothing
    Else
        MsgBox "The ActiveWorkbook does not have a path, Save the file first."
    End If
End Sub

Maintenant je voudrais inclure le tableau qui va de la colonne A1 à B13 dans l'envoi du mail. Comment et où le rajouter dans la

en pièce jointe ou dans le corps du message ?

Dans le corps du message

re,

voici un exemple

Sub test()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim cell As Range
    Dim strbody, EmailAddr, EmailAddrCC, Subj As String

      EmailAddr = Sheets("Feuil1").Range("H8")
      EmailAddrCC = Sheets("Feuil1").Range("H9")
      Subj = Sheets("Feuil1").Range("H11")

       Sheets("Feuil1").Select

    If ActiveWorkbook.Path <> "" Then
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)

        strbodyT = tableauhtml(Range("A1:B13"))

        strbody = "<font size=""3"" face=""Calibri"">" & _
                  "Bonjour,<br><br>" & _
                  "Merci de consulter :<br><B>" & strbodyT & _
                  ActiveWorkbook.Name & "</B>qui a été modifié.<br>" & _
                  "Cliquez sur ce lien pour ouvrir le fichier : " & _
                  "<A HREF=""file://..." & _
                  """>nom du fichier</A>" & _
                  "<br><br>Cordialement</font>"

        On Error Resume Next
        With OutMail
            .To = EmailAddr
            .CC = EmailAddrCC
            .BCC = ""
            .Subject = Subj
            .HTMLBody = strbody
            .Display   'or use .Send
        End With
        On Error GoTo 0

        Set OutMail = Nothing
        Set OutApp = Nothing
    Else
        MsgBox "The ActiveWorkbook does not have a path, Save the file first."
    End If
End Sub

Function tableauhtml(Plage As Range) As String
Dim cel As Range
Set cel = Plage.Cells(1, 1)
    tableauhtml = "<table>"
    For i = 1 To Plage.Rows.Count
        tableauhtml = tableauhtml & "<tr>"
        For j = 1 To Plage.Columns.Count
            tableauhtml = tableauhtml & "<td>" & texthtml(cel.Offset(i - 1, j - 1).Value) & "</td>"
        Next
        tableauhtml = tableauhtml & "</tr>"
    Next
    tableauhtml = tableauhtml & "</table>"
End Function

Function texthtml(texte As String)
    texthtml = ""
    For i = 1 To Len(texte)
        Select Case Asc(Mid(texte, i, 1))
        Case Is = 10
            texthtml = texthtml & "<br/>"
        Case Is = 39
            texthtml = texthtml & "&#" & Application.Trim(Str(Asc(Mid(texte, i, 1)))) & ";"
        Case Is > 127
            texthtml = texthtml & "&#" & Application.Trim(Str(Asc(Mid(texte, i, 1)))) & ";"
        Case Else
            texthtml = texthtml & Mid(texte, i, 1)
        End Select
    Next
End Function

Bonjour, merci beaucoup pour votre réponse.

Par contre, cela ne fonctionne pas chez moi. Je n'ai pas d'erreur dans la macro mais le tableau ne s'affiche pas dans le corps du mail.

En fait, avec ma macro initial, lorsqu'un utilisateur enregistre le fichier, une fenêtre outlook s'ouvre et un e-mail pré-rédigée s'écrit.

Cela fonctionne bien, mais je souhaiterais aussi inclure dans le corps du message le tableau Excel. Après je pense aussi que ma Macro n'est pas très propre car j'ai pris des morceaux à droite et à gauche et j'ai tout mis dans la fenêtre "ThisWorkbook", donc c'est peut-être ça qui bug aussi.

Merci pour votre aide en tout cas,

Bonne journée

Rechercher des sujets similaires à "inclure lien htlm dossier mail"