Macro envoi mail Excel Outlook en 4 niveaux de difficulté

Macro Excel VBA envoie mail Outlook(3)

4 niveaux pour créer une macro envoi mail Excel Outlook. Automatiser envoi mail Excel.

Sommaire

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 :

mail_vba_debutant

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 !
mail_vba_intermediaire

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.

mail_vba_avance

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.

mail_vba_expert

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 = "<thead><tr>"
For Each cell In rng.Rows(1).Cells
    htmlTable = htmlTable & "<th>" & cell.Value & "</th>" 'Ajoute chaque cellule de la première ligne de la plage à l'en-tête du tableau
Next cell
htmlTable = htmlTable & "</tr></thead><tbody>"

'Ajoute les lignes et les cellules au tableau
For Each row In rng.Rows
    htmlTable = htmlTable & "<tr>"
    For Each cell In row.Cells
        htmlTable = htmlTable & "<td>" & cell.Value & "</td>" 'Ajoute chaque cellule de la ligne aux données du tableau
    Next cell
    htmlTable = htmlTable & "</tr>"
Next row

'Fin du tableau HTML
htmlTable = htmlTable & "</tbody>"

ConvertRangeToHTML = htmlTable 'Renvoie le tableau HTML


End Function
				
			

Articles liés

Macros SAP GUI SANS CODER ?

Apprenez à enregistrer vos propres Macros SAP GUI en 3 étapes simples et SANS CODER Fonctionne quelle que soit votre version de SAP (tant que…