Insérer tableau dans email
GDX
Messages postés
239
Statut
Membre
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je souhaite insérer un tableau (range) dans un mail en conservant ses propriétés de forme.
Il existe déjà une fonction pour faire cela à l'adresse suivante :
https://www.developpez.net/forums/d1554308-2/logiciels/microsoft-office/excel/macros-vba-excel/envoi-plusieurs-fichiers-mail-via-macro/#post11002156
Il s'agit de la fonction RetournTable de Partick. Je le remercie pour ce travail.
Je l'ai copé ci-dessous
J'ai implémenté cette fonction dans mon code et cela fonctionne très bien.
Voilà ce que j'ai fait.
J'ouvre un fichier .msg dont je me sers comme modèle.
Je remplace un mot clé (ici "Tableau") par mon Range avec la fonction de Patrick.
Ensuite, j'affiche mon mail.
Lorsque le mail s'affiche, je retrouve bien mon modèle test.msg avec mon range inséré au bon emplacement.
Par contre sur les premières ligne, je retrouve au format texte le contenu de mon tableau avec des élément de mise en forme.
Pouvez-vous m'expliquer pourquoi ?
Savez-vous comment ne pas afficher ces premières lignes et à défaut, pouvez-vous me dire comment les supprimer après coup ?
Je vous remercie par avance,
Je souhaite insérer un tableau (range) dans un mail en conservant ses propriétés de forme.
Il existe déjà une fonction pour faire cela à l'adresse suivante :
https://www.developpez.net/forums/d1554308-2/logiciels/microsoft-office/excel/macros-vba-excel/envoi-plusieurs-fichiers-mail-via-macro/#post11002156
Il s'agit de la fonction RetournTable de Partick. Je le remercie pour ce travail.
Je l'ai copé ci-dessous
Function RetournTable(R As Range) As String
Dim L As Integer, C As Integer, Styl As String, elem As Object
For L = 1 To R.Rows.Count
code = code & "<tr id=ligne" & L & " > " & vbCrLf
For C = 1 To R.Columns.Count
code = code & "<td id=" & R(L, C).Address & ">" & R(L, C).Value & "</td>" & vbCrLf
Next
code = code & "</tr>" & vbCrLf
Next
With CreateObject("htmlfile")
.write "<table>" & vbCrLf & code & "</table>"
'ON VA STYLER LES CELLULES HTML IDENTIQUEMENT A CELLE DU SHEETS
For Each elem In .all
If elem.TAGNAME = "TABLE" Then
elem.cellspacing = 0: elem.Style.Width = R.Width * (96 / 72): elem.Style.Height = R.Height * (96 / 72): elem.Style.bordercollapse = "collapse"
End If
If elem.TAGNAME = "TD" Then
elem.Style.Border = "1px solid " & coul_XL_to_coul_HTMLX(15853019)
elem.Style.backgroundcolor = coul_XL_to_coul_HTMLX(Range(elem.ID).Interior.Color)
elem.Style.Color = coul_XL_to_coul_HTMLX(Range(elem.ID).Font.Color)
elem.Style.fontWeight = IIf(Range(elem.ID).Font.Bold, "bold", "")
elem.Style.FontStyle = IIf(Range(elem.ID).Font.Italic, "italic", "")
elem.Style.Width = Range(elem.ID).Width * (96 / 72)
elem.Style.Height = Range(elem.ID).Height * (96 / 72)
End If
Next
RetournTable = "<Div align='center'>" & .body.innerhtml & "</Div>"
End With
End Function
Function coul_XL_to_coul_HTMLX(couleur)
Dim str0 As String, str As String
If couleur = 16777215 Then couleur = vbWhite
str0 = Right("000000" & Hex(couleur), 6)
str = Right(str0, 2) & Mid(str0, 3, 2) & Left(str0, 2)
coul_XL_to_coul_HTMLX = "#" & str & ""
End Function
J'ai implémenté cette fonction dans mon code et cela fonctionne très bien.
Voilà ce que j'ai fait.
J'ouvre un fichier .msg dont je me sers comme modèle.
Je remplace un mot clé (ici "Tableau") par mon Range avec la fonction de Patrick.
Ensuite, j'affiche mon mail.
Dim myolapp As Object
Dim MyItem As Object
Set myolapp = CreateObject("Outlook.Application")
Set MyItem = myolapp.CreateItemFromTemplate("C:\Temp\test.msg")
MyItem.To = "toto@gmail.com"
MyItem.Subject = "Nouveau mail"
MyItem.HTMLBody = Replace(MyItem.HTMLBody, "Tableau", RetournTable(Sheets("Recap").Range("recapTab[#ALL]")))
MyItem.Display
Lorsque le mail s'affiche, je retrouve bien mon modèle test.msg avec mon range inséré au bon emplacement.
Par contre sur les premières ligne, je retrouve au format texte le contenu de mon tableau avec des élément de mise en forme.
Pouvez-vous m'expliquer pourquoi ?
Savez-vous comment ne pas afficher ces premières lignes et à défaut, pouvez-vous me dire comment les supprimer après coup ?
Je vous remercie par avance,
A voir également:
- Insérer tableau dans email
- Tableau word - Guide
- Insérer vidéo dans powerpoint - Guide
- Tableau ascii - Guide
- Insérer signature word - Guide
- Trier un tableau excel - Guide
2 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour, veux-tu dire que tout va bien à part que tu as quelques lignes superflues avec des informations de mise en forme?
si oui, peut-être utile de nous montrer ces informations de mise en forme, ou même l'ensemble du contenu html du mail..
je pense comprendre que la fonction RetournTable te renvoie un texte formaté html. Tu ne nous montres pas ce que tu en fais: où se trouve Tableau dans ton modèle? en d'autres mots, ton modèle est-il prévu pour y ajouter un tableau html?
pour tester, tu pourrais envoyer un mail avec, comme contenu, uniquement le texte fourni par RetournTable: cela donne quoi?
si oui, peut-être utile de nous montrer ces informations de mise en forme, ou même l'ensemble du contenu html du mail..
je pense comprendre que la fonction RetournTable te renvoie un texte formaté html. Tu ne nous montres pas ce que tu en fais: où se trouve Tableau dans ton modèle? en d'autres mots, ton modèle est-il prévu pour y ajouter un tableau html?
pour tester, tu pourrais envoyer un mail avec, comme contenu, uniquement le texte fourni par RetournTable: cela donne quoi?