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.

bonjour,

une proposition

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 Sub

Bonjour,

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

Rechercher des sujets similaires à "inserer tableau mail vba"