Inserer tableau dans un mail avec VBA
Bonsoir,
Novice en VBA, je souhaite intégrer le tableau des références situées dans la plage (A19:C28) du fichier en copie, dans le corps du mail envoyé.
Aujourd'hui j'ai réussi à créer le tableau (ligne par ligne) mais je voudrai que ce soit fait de manière automatique, et que cela sélectionne seulement les lignes non vides du tableau.
Merci d'avance pour votre aide.
C'est exactement ce que je cherchais à obtenir depuis ce matin.
Même si le résultat est la je vais étudier votre solution pour bien la comprendre.
Merci pour votre aide.
re-bonjour,
avec quelques commentaires et une correction cosmétique du code HTML (j'avais oublié le </tr> à la fin de chaque ligne)
Private Sub Envoyer_Mail()
Dim LeMail As Variant
Dim Ligne As Integer
Dim html As String
Set LeMail = CreateObject("Outlook.Application") 'Si Outlook n'était pas ouvert, l'instruction aura eu pour conséquence de démarrer Outlook
For Ligne = 3 To 12 'sélection des destinatires
If Range("b" & Ligne) <> "" Then 'ne sélectionner que ligne destinataire avec contenu
With LeMail.CreateItem(olMailItem)
.Subject = Range("b16")
.To = Range("c" & Ligne)
.CC = Range("b14")
' html variable qui contient le code html
html = "<html><p>" & _
"<font style='font-family: Vinci Sans;font-size: 12pt ;" & "' color=#000000>" & _
"Bonjour," & "<br />" & "<br />" & "Pour notre agence en " & Range("d16") & _
", merci de bien vouloir nous faire votre meilleure offre pour les articles suivants :" & "<br />" & _
"<table border = 1>" & _
"<font style='font-family: Vinci Sans;font-size: 12pt ;" & "' color=#000000>"
dl = Range("A20").End(xlDown).Row 'dernière ligne non vide du tableau
For i = 19 To dl 'pour chaque ligne
If i = 19 Then html = html & "<b>" 'ligne titre en bold
html = html & "<tr>" ' tag pour ligne de tableau
For j = 1 To 3 'pour chaque colonne de la ligne
html = html & "<td>" & Cells(i, j).Text & "</td>" ' on insère l'élement du tableau avec ses tags
Next j
html = html & "</tr>" 'tag de fin de ligne de tableau
If i = 19 Then html = html & "</b>" ' fin de bold pour la ligne titre
Next i
html = html & "</font>" & _
"</table>" & _
Range("b17") & "<br />" & Range("d17") & "<br />" & "<br />" & _
"Merci d'avance pour votre retour rapide" & "<br />" & "<br />" & "Alberic CHAVERON" & _
"</font>" & _
"</p></html>"
.htmlbody = html 'mettre le code html dans htmlbody
.Display
End With
End If
Next Ligne
End SubBonjour,
Effectivement c'est plus simple à comprendre.
Pour aller plus loin, je voudrai enregistrer certaines données à chaque envoi dans l'onglet "DONNEES".
=> Création d'une nouvelle ligne à chaque envoi de mail lorsqu'on clique sur le bouton.
=> Cette ligne vient s'ajouter au dessus de la dernière ligne enregistrée.
Merc d'avance