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,
- Messages
- 4'092
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
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
- Messages
- 4'092
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
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 !