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
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 SubMerciiii !!!
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 SubBravo!! ç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