VBA Excel envoi emails et corps de message format texte & tableau

Bonjour à tous et meilleurs vœux,

J'espère résoudre mon problème avec votre aide, en effet je connais certes parfaitement les formules Excel et de simple code vba mais là le niveau est trop difficile pour moi, je le reconnais.

En effet j'ai un fichier liée a une base de donnée qui peut contenir + de 1000 lignes. je perds donc un temps précieux a tous envoyer 1 par 1

Voilà ce que j'aimerais faire ( je suis sous Excel 2016 et Outlook pour les email )

J’aimerais pour m'économiser du temps (car personnellement on me demande tout et n'importe quoi.)

Que:

pour chaque destinataire ( colonne A ) un email soit envoyer avec l'objet ( colonne B) et en texte et tableau du mail 4 lignes écrite comme ceux-ci

ligne 1: Tableau1 (colonne C )

ligne 2: TEXT3 ( colonne D )

ligne 3 TEXTE 4 ( colonne E)

comme vous pouvez le voir les texte sont diffèrent pour chaque destinataire

Est ce que quelqu'un pourrait me faire un code VBA? vraiment voilà plusieurs jours que je parcours les forum a la recherche de code , regarder des vidéos etc...impossible , j'avoue que je n'ai pas assez de compétence

Merci à tous pour votre aide

31test-envoie.xlsm (10.08 Ko)

bonjour,

une proposition

Function tableHTML(plage As Range) As String
    tableHTML = "<head><style> table, td {border: 1px solid black; border-collapse:collapse;}</style></head><TABLE width=" & plage.Columns.Width & ">"
    If plage.Rows.Count > 1 Then
        For i = 1 To plage.Rows.Count
            tableHTML = tableHTML & "<TR>"
            For j = 1 To plage.Columns.Count
                tableHTML = tableHTML & "<TD>" & plage.Cells(i, j) & "</TD>"
            Next j
            tableHTML = tableHTML & "</TR>"
        Next i
    End If
    tableHTML = tableHTML & "</TABLE>"
End Function

Sub aargh()
    With Sheets("emails")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        Set ol = CreateObject("outlook.application")
        For i = 6 To dl
            Set mail = ol.createitem(0)
            mail.To = .Cells(i, 1)
            mail.htmlbody = .Cells(i, 2) & "<br>" & tableHTML(Range(.Cells(i, 3).Value)) & "<br><br>" & .Cells(i, 4) & "<br>" & .Cells(i, 5) & "<br>"
            mail.display 'mettre en commentaire ' en début de ligne pour ne pas afficher le message
            'mail.send 'enlever le commentaire ' pour l'envoi automatique du mail
        Next i
    End With
End Sub

Merciiii !!!

C'est presque parfait, est il possible d'avoir la modification suivante:

le TEXT1 dans l'objet du mail,

Le petit hic est que la macro fonctionne pour le 1er email à envoyer, elle ne passe pas au emails suivant à envoyer.

Encore merci pour toute votre aide

bonjour

code adapté

Function tableHTML(plage As Range) As String
    tableHTML = "<head><style> table, td {border: 1px solid black; border-collapse:collapse;}</style></head><TABLE width=" & plage.Columns.Width & ">"
    If plage.Rows.Count > 1 Then
        For i = 1 To plage.Rows.Count
            tableHTML = tableHTML & "<TR>"
            For j = 1 To plage.Columns.Count
                tableHTML = tableHTML & "<TD>" & plage.Cells(i, j) & "</TD>"
            Next j
            tableHTML = tableHTML & "</TR>"
        Next i
    End If
    tableHTML = tableHTML & "</TABLE>"
End Function

Sub aargh()
    With Sheets("emails")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        Set ol = CreateObject("outlook.application")
        For i = 6 To dl
            Set mail = ol.createitem(0)
            mail.To = .Cells(i, 1)
            mail.Subject = .Cells(i, 2)
            mail.htmlbody = tableHTML(Range(.Cells(i, 3).Value)) & "<br><br>" & .Cells(i, 4) & "<br>" & .Cells(i, 5) & "<br>"
            mail.display 'mettre en commentaire ' en début de ligne pour ne pas afficher le message
            'mail.send 'enlever le commentaire ' pour l'envoi automatique du mail
        Next i
    End With
End Sub

Bravo!! ça marche à la perfection. Trop merciiii!

J'adore Excel, je suis plutôt bon pour ce qui concerne les TCD et fonctions, en revanche je débute en VBA, auriez vous des pistes où me former (je sais que c'est pas 1 formation qui suffira)?

Encore merci pour votre aide

Rechercher des sujets similaires à "vba envoi emails corps message format texte tableau"