Copier/Coller un tableau en image dans un coprs de texte HTML (VBA)

Bonjour à tous,

Tout d'abord, mes excuses si ce sujet existe déja ! J'ai pourtant réalisé pas mal de recherches mais je n'ai pas trouvé de solution qui pourrait correspondre à mon problème.

Je vous explique. J'ai fait une macro qui copie une plage de cellule excel, puis envoie un mail avec un champs texte, des destinataires ect... et le fichier excel est joint. Le problème étant qu'il copie le tableau en valeurs et non pas avec le mise ou forme source ou en image comme souhaité.

Je ne vois pas trop comment faire, ne connaisant que peu HTML pour modifier le tableau ou encore copier avec la mise en forme/image (En gras le code qui copie/colle mon tableau)

Merci d'avance pour votre aide et bonne journée !

"Sub Envoi_Mail()

Dim olApp As Outlook.Application

Dim olMail As MailItem

Dim strHTML As String

Dim myAttachments

Set olApp = CreateObject("Outlook.Application")

Set olMail = olApp.CreateItem(olMailItem)

'Set myAttachments = myItem.Attachments

Windows("Mondocument.xlsm").Activate

Sheets("Ma page").Activate

strHTML = ""

strHTML = strHTML & "<HEAD>"

strHTML = strHTML & "<BODY>"

strHTML = strHTML & "Hello All, <BR> <BR> Please find attached **************** <BR><BR>"

strHTML = strHTML & "<TABLE BORDER>"

myAttachments = ("C:\Users\UT2LR2\Documents\Mon fichier")

For i = 2 To 12 'nombre de lignes (exemple plage A1:I32)

strHTML = strHTML & "<TR halign='middle'nowrap>"

For j = 1 To 9 'nombre de colonnes

strHTML = strHTML & "<TD bgcolor='white'align='center'><FONT COLOR='black'SIZE=3>" _

& Cells(i, j) & "</FONT></TD>"

Next j

strHTML = strHTML & "</TR>"

Next i

strHTML = strHTML & "</TABLE>"

strHTML = strHTML & "<BR><BR>The above table displays ********************. <BR> <BR> Regards, <BR> <BR>" &Application.UserName

strHTML = strHTML & "</BODY>"

strHTML = strHTML & ""

With olMail

.To = "Mon mail"

.CC = "Collaborateurs"

.Subject = "Daily MC"

.HTMLBody = strHTML

.Attachments.Add myAttachments

.Display

End With

End Sub"

Bonjour,

Désolé de ré-up le sujet mais j'aimerai savoir si quelqu'un pourrait m'aider la dessus s'il vous plait ,

Merci d'avance pour votre aide et très bonne journée

Bonjour Yann_masson,

A voir dans ce topic : https://forum.excel-pratique.com/viewtopic.php?f=2&t=114311

C'était pour le même sujet, vous y trouverez les informations à adapter pour votre demande.

Cordialement,

Bonjour,

Essayer avec ce code :

Sub Envoi_Mail()

    ' Définition des variables
    Dim OL As Object, myItem As Object, wDoc As Object, rng As Object
    Dim fichier As String, plage_mail As Range

    '// assignation des objets
    Set OL = CreateObject("Outlook.Application")
    Set myItem = OL.CreateItem(olMailItem)
    Set wDoc = myItem.GetInspector.WordEditor

    '//mise en variable des entrées du mail
    fichier = Environ("userprofile") & "\Documents\" & "mon_fichier"
    With Workbooks("Mondocument.xlsm").Sheets("Ma page")
        Set plage_mail = .Range("A1:I32")
    End With

    '// Préparation du mail avec adresse des destinataires, objet du mail, corps du mail
    With myItem
        .To = "A@domaine"
        .CC = "CC@domaine"
        .Subject = "Daily MC"
        .Attachments.Add fichier
        .Display

        ' Copie de la plage
        plage_mail.Copy
        Set rng = wDoc.Content
        rng.InsertParagraphBefore
        rng.Move 4, -1
        rng.Paste
        rng.Move 4

        ' Envoi
        .Send
    End With

    '// désassignation des objets
    Set OL = Nothing: Set myItem = Nothing: Set wDoc = Nothing

 End Sub

Bonjour,

Merci énormément pour votre aide, j'ai réussi à générer l'email que je voulais !

Cependant, j'ai un minuscule problème concernant la mise en page :

Quand je rajoute mon texte dans le code, (.body) il apparait après le tableau copié. Comment serait-il possible de la faire apparaitre juste avant ?

Merci beaucoup et bonne journée à vous

Bonjour,

modifier le code comme suit :

Sub Envoi_Mail()

    ' Définition des variables
    Dim OL As Object, myItem As Object, wDoc As Object, rng As Object
    Dim fichier As String, plage_mail As Range

    '// assignation des objets
    Set OL = CreateObject("Outlook.Application")
    Set myItem = OL.CreateItem(olMailItem)
    Set wDoc = myItem.GetInspector.WordEditor

    '//mise en variable des entrées du mail
    fichier = Environ("userprofile") & "\Documents\" & "mon_fichier"
    With Workbooks("Mondocument.xlsm").Sheets("Ma page")
        Set plage_mail = .Range("A1:I32")
    End With

    '// Préparation du mail avec adresse des destinataires, objet du mail, corps du mail
    With myItem
        .To = "A@domaine"
        .CC = "CC@domaine"
        .Subject = "Daily MC"
        .Body = "XXXXXXXXXXXXXXXXXXXXXX"
        .Attachments.Add fichier
        .Display

        ' Copie de la plage
        plage_mail.Copy
        Set rng = wDoc.Content
        rng.InsertParagraphAfter
        rng.Move 4, 1
        rng.Paste
        rng.Move 4

        ' Envoi
        .Send
    End With

    '// désassignation des objets
    Set OL = Nothing: Set myItem = Nothing: Set wDoc = Nothing

 End Sub

Merci beaucoup pour votre aide !

Rechercher des sujets similaires à "copier coller tableau image coprs texte html vba"