Macro envoi mail Excel Outlook en 4 niveaux de difficulté
4 niveaux pour créer une macro envoi mail Excel Outlook. Automatiser envoi mail Excel.
Sommaire
Recevez gratuitement le Notion avec toutes les macros VBA Outlook
Hop ! C'est envoyé.
1. Niveau débutant - utilise cette macro simple pour envoyer un mail Outlook à partir d'Excel.
Tu veux pouvoir automatiquement envoyer un mail Outlook depuis Excel ? Suis le code super simple ci-dessous :
2. Niveau Intermédiaire - formate le mail (gras, souligné, italique, couleurs, coupures) avec du HTML simple.
Grâce à HTML, tu peux facilement :
- Mettre en forme le texte de ton mail
- Mettre ton texte en italique, en gras, souligné, en rouge, etc.
- Pour plus d’options de formatage de texte HTML, consulte ce site – les possibilités sont immenses !
3. Niveau Avancé - Mail Outlook avec plage de données Excel dans le corps du mail à l'aide d'une fonction
En utilisant une fonction (très simple), tu peux intégrer un tableau ou une série de données dans le corps de ton mail.
Pour que cette macro fonctionne, tu dois ajouter la fonction ci-dessous dans le même module :
Public Function RangetoHTML(rng_mail As Range)
Dim fso As Object 'Déclare l'objet système de fichiers
Dim ts As Object 'Déclare l'objet flux de texte
Dim TempFile As String 'Déclare la variable de chaîne pour le fichier temporaire
Dim TempWB As Workbook 'Déclare le classeur temporaire
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm" 'Définit le chemin du fichier temporaire
'Copie la plage et crée un nouveau classeur pour coller les données
rng_mail.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Excel.Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
'Publie la feuille dans un fichier htm
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
'Lit toutes les données du fichier htm dans RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
'Ferme TempWB
TempWB.Close savechanges:=False
'Supprime le fichier htm que nous avons utilisé dans cette fonction
Kill TempFile
Set ts = Nothing 'Nettoie l'objet flux de texte
Set fso = Nothing 'Nettoie l'objet système de fichiers
Set TempWB = Nothing 'Nettoie le classeur temporaire
End Function
4. Niveau Avancé 2 - Mail Outlook avec graphique en pièce jointe
Ajoute un graphique en pièce jointe au mail Outlook.
5. Niveau Expert - Mail Outlook avec tableau et graphique dans le corps du mail
Ajoute un tableau et un graphique dans le corps du mail Outlook.
Pour que cette macro fonctionne, tu dois ajouter la fonction ci-dessous dans le même module :
Function ConvertRangeToHTML(rng As Range) As String
Dim htmlTable As String 'Déclare la variable de chaîne pour le tableau HTML
Dim row As Range 'Déclare l'objet de plage pour la ligne
Dim cell As Range 'Déclare l'objet de plage pour la cellule
'Début du tableau HTML
htmlTable = ""
For Each cell In rng.Rows(1).Cells
htmlTable = htmlTable & "" & cell.Value & " " 'Ajoute chaque cellule de la première ligne de la plage à l'en-tête du tableau
Next cell
htmlTable = htmlTable & " "
'Ajoute les lignes et les cellules au tableau
For Each row In rng.Rows
htmlTable = htmlTable & ""
For Each cell In row.Cells
htmlTable = htmlTable & "" & cell.Value & " " 'Ajoute chaque cellule de la ligne aux données du tableau
Next cell
htmlTable = htmlTable & " "
Next row
'Fin du tableau HTML
htmlTable = htmlTable & ""
ConvertRangeToHTML = htmlTable 'Renvoie le tableau HTML
End Function
Recevez gratuitement le Notion avec toutes les macros VBA Outlook