Accéder au contenu principal

Tutoriel Excel – Envoyer des e-mails depuis Excel

Author: Siluvia Last Modified: 2025-05-28

Normalement, nous utilisons des clients de messagerie tels que Outlook, Gmail, etc. pour envoyer des e-mails. Cependant, de nombreuses personnes stockent des données dans des classeurs Excel et doivent transférer certaines de ces données à d'autres lorsqu'elles travaillent dessus. Par conséquent, elles ont besoin d'envoyer des e-mails directement depuis le classeur Excel, ce qui permet de gagner du temps en évitant d'utiliser un client de messagerie. Ce tutoriel étape par étape vous montrera comment envoyer des e-mails depuis Excel dans différentes situations.

Remarque : Avant d'appliquer les méthodes suivantes, vous devez configurer un client de messagerie Outlook sur votre ordinateur et le définir comme votre client de messagerie par défaut.

 Table des matières : [ Masquer ]

(Cliquez sur n'importe quel titre dans la table des matières ci-dessous ou à droite pour accéder au chapitre correspondant.)

1. Les bases de l'envoi d'e-mails à partir d'Excel

Cette section présente les bases de l'envoi d'e-mails à partir d'Excel.

1.1 Envoyer des e-mails depuis Excel avec les fonctions intégrées d'Excel

Si vous souhaitez uniquement envoyer des e-mails simples à partir d'Excel, en incluant uniquement les champs À, Objet, Cc et corps du message, les fonctions intégrées d'Excel peuvent vous aider.


1.1.1 Envoyer un e-mail depuis Excel en utilisant une formule

Comme le montre le tableau ci-dessous, pour envoyer différents e-mails depuis Excel en fonction des champs donnés, vous pouvez utiliser les références de cellules des champs donnés pour créer différentes formules de lien hypertexte afin de réaliser cette tâche. Après avoir créé les hyperliens des e-mails, vous pouvez cliquer sur l'hyperlien dont vous avez besoin pour envoyer un e-mail automatiquement.

Remarque : S'il y a plusieurs destinataires dans les champs À ou Cc, veuillez les séparer par des points-virgules.

Cette section est divisée en quatre parties pour vous montrer les étapes afin d'ajouter séparément l'adresse e-mail, le(s) destinataire(s) en copie carbone (Cc), l'objet et le corps du texte à la formule Lien hypertexte. Veuillez procéder comme suit.

La syntaxe et les arguments de la fonction "HYPERLINK" sont les suivants.

Syntaxe

LIEN_HYPERTEXTE(emplacement_lien, [nom_convivial])

Arguments

« Link_location » (obligatoire) : Le chemin et le nom du fichier du document à ouvrir ;
Conseils : Dans ce tutoriel, tous les champs dont nous avons besoin pour un e-mail, tels que l'adresse e-mail du destinataire, le ou les destinataires en Cc, l'objet et le corps du message, doivent être placés dans le premier argument "link_location".
"Friendly_name" (facultatif) : La valeur de saut qui est affichée dans la cellule.

1.1.1.1 Ajouter une adresse e-mail à la formule Lien hypertexte

Ici, nous utilisons "mailto:" comme partie de la formule pour ajouter un destinataire de courrier électronique. Dans cet exemple, l'adresse e-mail du premier destinataire se trouve dans la cellule B2, donc nous devons ajouter "mailto:" et faire référence à la cellule B2.

« mailto: »&B2

1. Sélectionnez une cellule pour afficher le lien hypertexte. Dans ce cas, je sélectionne la cellule F2.

2. Entrez ensuite la formule suivante dans celle-ci.

=HYPERLINK("mailto:"&B2)

Remarque : Si vous appuyez sur la touche "Entrée", un lien hypertexte sera créé comme le montre la capture d'écran ci-dessous. Lorsque vous cliquez sur le lien, un e-mail Outlook sera créé et l'adresse e-mail du destinataire sera automatiquement renseignée dans le champ À.

L'adresse e-mail du destinataire est maintenant ajoutée à la formule du lien hypertexte. Veuillez continuer avec les étapes suivantes pour ajouter la ligne d'objet, le ou les destinataires en Cc et le texte du corps selon vos besoins.


1.1.1.2 Ajouter des destinataires en copie (Cc) à la formule du lien hypertexte

Pour ajouter le ou les destinataires en copie (Cc) à la fonction Lien hypertexte, veuillez ajouter "?cc=" comme partie de la formule comme suit.

"?cc=" & C2
où C2 contient l'adresse e-mail du destinataire en copie carbone (cc).

La formule dans la cellule F2 doit être la suivante :

=HYPERLINK("mailto:" & B2 & "?cc=" & C2)


1.1.1.3 Ajouter la ligne d'objet à la formule Lien hypertexte

Pour ajouter la ligne d'objet à la fonction Lien hypertexte, veuillez ajouter "&subject=" comme partie de la formule comme suit.

"&objet="& D2
où D2 contient l'objet de l'email.

La formule dans la cellule F2 devrait maintenant ressembler à ce qui suit :

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)


1.1.1.4 Ajouter du texte corporel avec des sauts de ligne à la formule Lien hypertexte

La dernière étape consiste à ajouter le corps du texte à la formule Lien hypertexte. Comme vous pouvez le voir dans l'exemple, deux lignes de texte dans E2 sont séparées par un saut de ligne, et vous souhaitez conserver ce saut de ligne dans le corps de l'e-mail. Est-ce qu'Outlook reconnaît le saut de ligne dans cette situation ? Vérifions cela.

Pour ajouter le texte du corps à la formule Lien hypertexte, vous devez inclure « &body=" comme partie de la formule, comme suit.

"&corps="& E2
où E2 contient le corps du texte de l'e-mail.

La formule dans la cellule F2 est maintenant affichée comme suit :

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)

Remarque : Si vous appuyez sur la touche "Entrée" et cliquez sur le lien, vous pouvez voir dans le nouvel e-mail que le contenu du corps de l'e-mail s'affiche sur la même ligne.

Pour afficher le corps de l'e-mail sur des lignes séparées, vous devez modifier le contenu de la cellule en ajoutant le code de caractère de retour chariot "%0A" là où vous souhaitez insérer un saut de ligne. Voir la capture d'écran :


1.1.1.5 Spécifiez le texte à afficher pour le lien hypertexte

Dans les étapes ci-dessus, nous avons terminé l'argument Link_location avec les champs de courrier électronique. Dans cette section, nous allons finaliser l'argument suivant [friendly_name].

Dans ce cas, je souhaite que la cellule du lien hypertexte affiche le texte sous la forme « Envoyer un e-mail à xx », où xx est le nom du destinataire en A2. Par conséquent, la formule en F2 doit être modifiée pour devenir :

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)

Appuyez sur la touche "Entrée" pour obtenir le résultat.

Sélectionnez cette cellule de formule et faites glisser son "poignée de recopie automatique" vers le bas pour créer d'autres hyperliens de courrier électronique. Voir la capture d'écran :


1.1.2 Envoyer un e-mail depuis Excel avec la fonction Lien hypertexte

Outre l'utilisation de la formule Hyperlien mentionnée ci-dessus, vous pouvez également créer manuellement un hyperlien e-mail avec la fonction "Insérer un lien hypertexte" dans Excel. Cette section va vous montrer les étapes à suivre.

1. Faites un clic droit sur l'email où vous souhaitez insérer un lien hypertexte, puis sélectionnez "Lien" dans le menu contextuel.

2. Dans la boîte de dialogue "Insérer un lien hypertexte" qui apparaît, vous devez configurer comme suit.

2.1) Sélectionnez « Adresse e-mail » dans le volet de gauche.
2.2) Dans la zone de texte « Texte à afficher », saisissez le texte que vous souhaitez afficher dans la cellule ;
Conseils : Vous ne pouvez pas utiliser de références de cellules dans cette boîte de dialogue, vous devez donc saisir manuellement les champs de l'e-mail comme suit.
2.3) Dans la zone de texte « Adresse e-mail », vous devez saisir les adresses e-mail suivantes.
mailto:adresse e-mail
Veuillez remplacer le texte « adresse e-mail » par votre véritable adresse e-mail. Si vous avez plusieurs adresses e-mail, séparez-les par un point-virgule.
2.4) Dans la zone de texte « Objet », vous pouvez spécifier l'objet et le corps de votre email directement ici. Veuillez configurer comme suit :
Objet du courriel&corps=Corps du courriel
Dans ce cas, je saisis "Monthly sale&body=Hi,%0AEmail reçu".
où le sujet est la vente mensuelle ;
et
le corps de l'email est :
Bonjour,
Email reçu. ("%0A" est le code de caractère de retour chariot qui peut être reconnu par Outlook)
2.5) Cliquez sur le bouton "OK" pour enregistrer le lien hypertexte. Voir la capture d'écran :

Lorsque vous cliquez sur le lien hypertexte, un e-mail Outlook sera créé avec les champs À, Objet et Corps spécifiés, comme le montre la capture d'écran ci-dessous.

Remarques :

1) Avec cette méthode, vous deviez créer chaque lien hypertexte de messagerie manuellement.
2) Vous ne pouvez pas ajouter le champ Cc aux e-mails avec cette méthode. Par conséquent, si vous avez besoin du champ Cc, veuillez l'ajouter à partir de la nouvelle fenêtre d'email qui s'ouvre.

1.2 Envoyer un e-mail à plusieurs destinataires dans des cellules avec un script VBA

Dans l'exemple ci-dessus, vous pouvez voir que plusieurs adresses e-mail sont affichées dans une cellule, séparées par des points-virgules. Si vous avez une liste d'adresses e-mail comme illustré dans la capture d'écran ci-dessous et que vous souhaitez envoyer un e-mail ou des e-mails indépendants à toutes ces adresses, le code VBA suivant peut vous aider.


1.2.1 Envoyer un e-mail à plusieurs destinataires dans des cellules avec un script VBA

1. Dans la feuille de calcul qui contient toutes les adresses e-mail auxquelles vous souhaitez envoyer l'e-mail, appuyez sur les touches "Alt" + "F11" pour ouvrir la fenêtre "Microsoft Visual Basic for Applications".

2. Dans la fenêtre "Microsoft Visual Basic for Applications", cliquez sur "Insert" > "Module", puis collez le code suivant dans la fenêtre "Module (Code)".

Code VBA : Envoyer un e-mail à une liste d'adresses e-mail

Sub sendmultiple()
'updateby Extendoffice 20220802
    Dim xOTApp As Object
    Dim xMItem As Object
    Dim xCell As Range
    Dim xRg As Range
    Dim xEmailAddr As String
    Dim xTxt As String
    On Error Resume Next
    xTxt = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    Set xOTApp = CreateObject("Outlook.Application")
    For Each xCell In xRg
        If xCell.Value Like "*@*" Then
            If xEmailAddr = "" Then
                xEmailAddr = xCell.Value
            Else
                xEmailAddr = xEmailAddr & ";" & xCell.Value
            End If
        End If
    Next
    Set xMItem = xOTApp.CreateItem(0)
    With xMItem
        .To = xEmailAddr
        .Subject = "Test"
        .Body = "Dear " _
                & vbNewLine & vbNewLine & _
                "This is a test email " & _
                "sending in Excel"
        .Display
    End With
End Sub

3. Appuyez sur la touche "F5" pour exécuter le code, puis une boîte de dialogue "Kutools for Excel" apparaît. Sélectionnez la liste des adresses e-mail et cliquez sur "OK".

A screenshot of the 'Kutools for Excel' dialog box asking for the email addresses list

Remarques :

1) Si vous ne souhaitez pas que la boîte de dialogue ci-dessus apparaisse et que vous voulez spécifier la plage d'adresses e-mail directement dans le code, veuillez remplacer cette ligne :
Définir xRg = Application.InputBox("Veuillez sélectionner la liste d'adresses :", "Kutools pour Excel", xTxt, , , , , 8)
avec
Plage xRg = Plage("A2:A7")
2) Vous pouvez spécifier votre propre objet et corps de l'e-mail dans les lignes suivantes :
.Objet = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Pour envoyer directement l'e-mail sans ouvrir la fenêtre de nouveau message suivante, vous devez remplacer cette ligne :
.Affichage
avec
.Envoyer

Après avoir exécuté le code, toutes les adresses e-mail dans la plage sélectionnée sont affichées dans le champ À de la fenêtre de message. Voir la capture d'écran :

A screenshot of the email message window with all email addresses filled in the To field


1.2.2 Envoyer séparément des emails à chaque destinataire listé dans les cellules avec un script VBA

Le code ci-dessus ajoute toutes les adresses e-mail de la plage sélectionnée dans le champ À de la fenêtre de message. Si vous souhaitez envoyer des e-mails à chaque adresse e-mail listée dans des cellules séparément, sans qu'elles ne voient les adresses e-mail les unes des autres, vous pouvez essayer le script VBA suivant.

1. Dans la feuille de calcul qui contient toutes les adresses e-mail auxquelles vous souhaitez envoyer les e-mails. Appuyez sur les touches "Alt" + "F11" pour ouvrir la "fenêtre Microsoft Visual Basic for Applications".

2. Dans la fenêtre "Microsoft Visual Basic for Applications", cliquez sur "Insert" > "Module", puis collez le code suivant dans la fenêtre Module (Code).

Code VBA : Envoyer des e-mails à chaque adresse e-mail listée dans les cellules séparément

Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
    Dim xRg As Range
    Dim xRgEach As Range
    Dim xRgVal As String
    Dim xAddress As String
    Dim xOutApp As Outlook.Application
    Dim xMailOut As Outlook.MailItem
    On Error Resume Next
    xAddress = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select the addresses list", "KuTools For Excel", xAddress, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
    For Each xRgEach In xRg
        xRgVal = xRgEach.Value
        If xRgVal Like "?*@?*.?*" Then
            Set xMailOut = xOutApp.CreateItem(olMailItem)
            With xMailOut
                .To = xRgVal
                .Subject = "Test"
                .Body = "Dear " _
                      & vbNewLine & vbNewLine & _
                        "This is a test email " & _
                        "sending in Excel"
                .Display
                '.Send
            End With
        End If
    Next
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

3. Cliquez ensuite sur "Outils" > "Références". Dans la boîte de dialogue "Références – VBAProject", trouvez et cochez la case "Microsoft Outlook 16.0 Object Library", puis cliquez sur le bouton "OK" pour enregistrer les modifications.

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

4. Appuyez sur la touche "F5" pour exécuter le code, puis une boîte de dialogue "Kutools for Excel" apparaît. Sélectionnez la liste des adresses e-mail et cliquez sur "OK".

A screenshot of the 'Kutools for Excel' dialog box asking for the email address list selection

Remarques :

1) Si vous ne souhaitez pas que la boîte de dialogue ci-dessus apparaisse et que vous voulez spécifier directement la plage d'adresses e-mail dans le code, veuillez remplacer cette ligne :
Définir xRg = Application.InputBox("Veuillez sélectionner la liste des adresses :", "Kutools pour Excel", xTxt, , , , , 8)
avec
Définir xRg = Plage("A2:A7")
2) Vous pouvez spécifier votre propre objet et corps de l'e-mail dans les lignes suivantes :
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Pour envoyer directement l'e-mail sans ouvrir les fenêtres de message suivantes, vous devez remplacer cette ligne :
.Affichage
avec
.Envoyer

Dans cet exemple, il y a six adresses e-mail dans la plage sélectionnée, donc six fenêtres de message Outlook seront créées automatiquement avec une adresse e-mail distincte listée dans le champ À, comme le montre la capture d'écran ci-dessous.

A screenshot of multiple Outlook message windows with separate email addresses in the To field

5. Enfin, cliquez sur le bouton "Envoyer" pour envoyer les e-mails un par un.


2. Insérer des pièces jointes ou une signature Outlook dans les e-mails envoyés depuis Excel (avec des scripts VBA)

Cette section va vous montrer comment insérer des pièces jointes ou la signature par défaut d'Outlook dans les e-mails envoyés depuis Excel.

2.1 Insérer des pièces jointes dans les e-mails envoyés depuis Excel

Ici, nous décrivons les différents cas d'insertion de pièces jointes, et vous pouvez choisir la méthode en fonction de vos besoins. Dans cette section, vous pouvez apprendre à (cliquez sur l'un des liens suivants pour accéder à la méthode correspondante) :


2.1.1 Envoyer un fichier spécifique en pièce jointe par e-mail

Vous pouvez appliquer le code VBA suivant pour envoyer un ou plusieurs fichiers dans un dossier en tant que pièces jointes depuis Excel.

1. Appuyez sur les touches "Alt" + "F11".

2. Dans la fenêtre ouverte "Microsoft Visual Basic for Applications", cliquez sur "Insert" > "Module". Ensuite, collez le code VBA suivant dans la fenêtre Module (Code).

Code VBA : Envoyer des fichiers dans un dossier en tant que pièces jointes depuis Excel

Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
    Dim xStrFile As String
    Dim xFilePath As String
    Dim xFileDlg As FileDialog
    Dim xFileDlgItem As Variant
    Dim xOutApp As Outlook.Application
    Dim xMailOut As Outlook.MailItem
    Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
    If xFileDlg.Show = -1 Then
        With xMailOut
            .BodyFormat = olFormatRichText
            .To = "xxx@aaa.com"
            .Subject = "test"
            .HTMLBody = "test"
            For Each xFileDlgItem In xFileDlg.SelectedItems
                .Attachments.Add xFileDlgItem
            Next xFileDlgItem
            .Display
        End With
    End If
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

Remarques :

1) Dans la ligne ".To = xxx@aaa.com", veuillez remplacer "xxx@aaa.com" par l'adresse e-mail de votre propre destinataire.
2) Modifiez séparément l'objet de l'e-mail et le corps de l'e-mail dans la ligne ".Subject = "test"" et ".HTMLBody = "test"".
3) Vous pouvez ajouter des destinataires en Cc et Bcc selon vos besoins. Il suffit d'ajouter les deux lignes suivantes sous la ligne « To = xxx@aaa.com ».
.CC = "adresse e-mail"
.CCI = "adresse e-mail"

3. Cliquez ensuite sur "Outils" > "Références". Dans la boîte de dialogue "Références – VBAProject", recherchez et cochez la case "Microsoft Outlook 16.0 Object Library", puis cliquez sur le bouton "OK" pour enregistrer les modifications.

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

4. Appuyez sur la touche "F5" pour exécuter le code, puis une fenêtre "Parcourir" apparaît. Veuillez sélectionner les fichiers que vous devez joindre à l'email, puis cliquez sur "OK".

A screenshot of the 'Browse' window for selecting files to attach to an email in Exce

Ensuite, une fenêtre de message apparaît. Vous pouvez voir que les fichiers sélectionnés sont affichés en tant que pièces jointes dans le champ Pièces jointes.

A screenshot of the Outlook message window with selected files displayed as attachments


2.1.2 Envoyer la feuille de calcul actuelle en tant que pièce jointe par e-mail

Si vous souhaitez envoyer la feuille de calcul actuelle en tant que pièce jointe depuis Excel, vous pouvez appliquer le script VBA de cette section.

1. Appuyez sur les touches "Alt" + "F11".

2. Dans la fenêtre ouverte "Microsoft Visual Basic for Applications", cliquez sur "Insertion" > "Module". Ensuite, collez le code VBA suivant dans la fenêtre "Module (Code)".

Code VBA : Envoyer la feuille de calcul actuelle en pièce jointe par e-mail

Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte features"
    .Body = "Please check and read this document."
    .Attachments.Add Wb2.FullName
    .Display
    '.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub

Remarques :

1) Dans la ligne "."To = xxx@aaa.com", remplacez "xxx@aaa.com" par l'adresse e-mail réelle du destinataire. Si vous avez besoin de plusieurs adresses e-mail, séparez-les par des points-virgules.
2) Modifiez séparément l'objet et le corps de l'e-mail dans la ligne ".Subject = "kte features"" et ".Body = " Veuillez vérifier et lire ce document."".
3) Dans les deux lignes suivantes :
.CC = "adresse e-mail"
.CCI = "adresse e-mail"
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (cci), remplacez le texte « "adresse e-mail" » dans les lignes par les adresses e-mail dont vous avez besoin.
Si vous n'avez pas besoin des destinataires Cc et Cci, ajoutez simplement une apostrophe ' avant chaque ligne.

3. Appuyez sur la touche "F5" pour exécuter le code, puis la feuille de calcul actuelle est enregistrée en tant que classeur Excel et insérée automatiquement dans une fenêtre de message en tant que pièce jointe. Voir la capture d'écran :

A screenshot of the Outlook message window with the current worksheet saved and attached as an Excel workbook

Remarque : Le classeur joint, qui ne contient que la feuille de calcul actuelle, porte le même nom que le classeur d'origine. De plus, l'heure à laquelle vous exécutez le code est également ajoutée au nom du classeur.


2.1.3 Envoyer le classeur actuel en tant que pièce jointe par e-mail

Après avoir appris le code VBA pour envoyer la feuille de calcul actuelle en tant que pièce jointe depuis Excel, voici un autre script VBA pour vous aider à envoyer l'intégralité du classeur en tant que pièce jointe. Veuillez procéder comme suit.

1. Appuyez sur les touches "Alt" + "F11".

2. Dans la fenêtre ouverte "Microsoft Visual Basic for Applications", cliquez sur "Insert" > "Module". Ensuite, collez le code VBA suivant dans la fenêtre Module (Code).

Code VBA : Envoyer le classeur actuel en pièce jointe depuis Excel

Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

Remarques :

1) Dans la ligne ".To = xxx@aaa.com", remplacez "xxx@aaa.com" par l'adresse e-mail réelle du destinataire. Si vous avez besoin de plusieurs adresses e-mail, séparez-les par des points-virgules.
2) Modifiez séparément l'objet et le corps de l'e-mail dans la ligne ".Subject = "kte features"" et ".Body = " Veuillez vérifier et lire ce document."".
3) Dans les deux lignes suivantes :
.CC = "adresse e-mail"
.CCI = "adresse e-mail"
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (cci), remplacez le texte "adresse e-mail" dans les lignes par les adresses e-mail dont vous avez besoin.
Si vous n'avez pas besoin des destinataires en copie (cc) et en copie cachée (bcc), ajoutez simplement une apostrophe ' au début de chaque ligne.

3. Appuyez sur la touche "F5" pour exécuter le code, puis le classeur actuel est automatiquement inséré dans la fenêtre de message en tant que pièce jointe. Voir la capture d'écran :

A screenshot of the Outlook message window with the current workbook attached automatically


2.1.4 Envoyer l'intégralité du classeur par e-mail en tant que pièce jointe PDF

Pour la plupart des gens, ils ont tendance à enregistrer un classeur Excel sous forme de fichier PDF, puis à l'envoyer en pièce jointe à d'autres personnes. Dans cette section, je vais vous montrer une méthode pour envoyer des e-mails directement depuis Excel avec le classeur ouvert actuel en tant que pièce jointe PDF, sans avoir à enregistrer manuellement le classeur au format PDF.

1. Appuyez sur les touches "Alt" + "F11".

2. Dans la fenêtre ouverte "Microsoft Visual Basic for Applications", cliquez sur "Insert" > "Module". Ensuite, collez le code VBA suivant dans la fenêtre Module (Code).

Code VBA : Envoyer l'intégralité du classeur en pièce jointe PDF

Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next

Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "\" & FileName

Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
    FilePath, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    False

Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
       .To = "xxx@aaa.com"
       .CC = "Email Address"
       .BCC = "Email Address"
       .Subject = "test"
       .Body = "test"
       .Attachments.Add FilePath
       .Display   'or use .Send
   End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub

Remarques :

1) Dans la ligne ".To = xxx@aaa.com", veuillez remplacer "xxx@aaa.com" par l'adresse e-mail réelle du destinataire. Si vous avez besoin de plusieurs adresses e-mail, veuillez les séparer par des points-virgules.
2) Modifiez séparément l'objet et le corps de l'e-mail dans la ligne .Subject = "test" et .Body = "test" ;
3) Dans les deux lignes suivantes :
.CC = "Adresse e-mail"
.CCI = "Adresse e-mail"
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (cci), remplacez le texte "Adresse e-mail" dans les lignes par les adresses e-mail dont vous avez besoin.
Si vous n'avez pas besoin des destinataires Cc et Cci, ajoutez simplement une apostrophe ' avant chaque ligne.
4) Le nom du fichier PDF sera identique au nom du classeur d'origine. L'heure à laquelle vous exécutez le code sera également ajoutée au nom du classeur. Si vous ne souhaitez pas ajouter l'horodatage au nom du fichier, veuillez supprimer & Format(Now, "dd-mmm-yy h-mm-ss") de la ligne suivante.
NomFichier = Gauche(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "jj-mmm-aa h-mm-ss") & ".pdf"

3. Appuyez sur la touche "F5" pour exécuter le code. Ensuite, le classeur actuel est automatiquement inséré dans une nouvelle fenêtre de message en tant que pièce jointe de fichier PDF. Voir la capture d'écran :

A screenshot of the Outlook message window with the current workbook attached as a PDF file


2.1.5 Envoyer la feuille de calcul actuelle par e-mail en tant que pièce jointe PDF

Par exemple, il existe un classeur nommé « Ventes mensuelles », et vous avez terminé un tableau de rapport de ventes dans une feuille de calcul nommée « rapport de ventes » et souhaitez envoyer cette feuille de calcul en tant que fichier PDF à vos collègues. Le code VBA suivant peut vous aider.

1. Appuyez sur les touches "Alt" + "F11".

2. Dans la fenêtre ouverte "Microsoft Visual Basic for Applications", cliquez sur "Insérer" > "Module". Ensuite, collez le code VBA suivant dans la fenêtre du Module (Code).

Code VBA : Envoyer la feuille de calcul actuelle en tant que pièce jointe PDF

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .Body = "test"
    .Attachments.Add FileName
    .Display
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

Remarques :

1) Dans la ligne ".To = xxx@aaa.com", veuillez remplacer "xxx@aaa.com" par l'adresse e-mail réelle du destinataire. Si vous avez besoin de plusieurs adresses e-mail, veuillez les séparer par des points-virgules.
2) Modifiez séparément l'objet et le corps de l'e-mail dans la ligne .Subject = "test" et .Body = "test" ;
3) Dans les deux lignes suivantes :
.CC = "Adresse e-mail"
.CCI = "Adresse e-mail"
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (cci), remplacez le texte "Adresse e-mail" dans les lignes par les adresses e-mail dont vous avez besoin.
Si vous n'avez pas besoin des destinataires Cc et Cci, ajoutez simplement une apostrophe ' avant chaque ligne.
4) Le nom du fichier PDF sera : le nom du classeur d'origine_le nom de la feuille de calcul d'origine. Dans ce cas, le nom du PDF sera Ventes mensuelles_rapport de vente.

3. Appuyez sur la touche "F5" pour exécuter le code. Ensuite, la feuille de calcul actuelle est automatiquement insérée dans une nouvelle fenêtre de message en tant que pièce jointe de fichier PDF. Voir la capture d'écran :

A screenshot of the Outlook message window with the current worksheet attached as a PDF file


2.2 Insérer la signature Outlook dans les e-mails envoyés depuis Excel

Prenons l'exemple ci-dessus, vous appliquez le code VBA ci-dessus pour envoyer la feuille de calcul actuelle en tant que pièce jointe PDF depuis Excel, mais la signature Outlook ne peut pas être ajoutée à la fenêtre du message. Pour conserver la signature par défaut d'Outlook dans l'e-mail envoyé depuis Excel, la méthode suivante vous aidera.

Deux codes VBA sont listés ci-dessous.

Code VBA 1 : Ce code permet de conserver la signature Outlook.

Code VBA 2 : Ce code permet d'envoyer la feuille de calcul actuelle en tant que pièce jointe PDF par e-mail.

Code VBA 1 : Conserver la signature Outlook

.HTMLBody = "Email body" & "
" & .HTMLBody

Code VBA 2 : Envoyer la feuille de calcul actuelle en tant que pièce jointe PDF

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .Body = "test"
    .Attachments.Add FileName
    .Display
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

1. Normalement, vous devez appuyer sur les touches "Alt" + "F11" pour ouvrir la fenêtre "Microsoft Visual Basic for Applications".

2. Dans la fenêtre "Microsoft Visual Basic for Applications", cliquez sur "Insertion" > "Module". Ensuite, collez le code VBA 2 ci-dessus dans la fenêtre Module (Code).

3. Pour conserver la signature par défaut d'Outlook dans l'e-mail envoyé depuis Excel, vous devez modifier le code VBA 2 comme suit :

1) Remplacez la ligne ".Body" par "VBA code 1" ;
2) Déplacez la ligne ".Display" sous la ligne "With OutlookMail (ou With xMailOut dans d'autres codes)". Voir capture d'écran :

A screenshot showing the modified VBA code with the .Body line replaced and .Display placed under With OutlookMail

Voici le code complet après modification.

Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
    .Display
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "test"
    .HTMLBody = "Email body" & "
" & .HTMLBody
    .Attachments.Add FileName
    '.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

4. Appuyez sur la touche "F5" pour exécuter le code. Vous obtiendrez ensuite une nouvelle fenêtre de message avec la feuille de calcul actuelle jointe en tant que fichier PDF, tandis que la signature par défaut d'Outlook sera insérée automatiquement à la fin du corps de l'e-mail.

A screenshot of an email in Outlook with the default signature automatically inserted at the end of the email body


3. Envoyer automatiquement des emails depuis Excel lorsque qu'une condition est remplie (avec des scripts VBA)

Dans les exemples ci-dessus, vous devez exécuter le code manuellement pour réaliser l'envoi des e-mails. Si vous souhaitez déclencher le code automatiquement lorsque certaines conditions sont remplies, par exemple, lorsqu'une cellule atteint une certaine valeur, lorsque la valeur d'une cellule change, ou lorsqu'une date est atteinte, etc., l'e-mail sera envoyé automatiquement. Cette section répertorie les conditions que les utilisateurs d'Excel recherchent souvent sur Google pour vous aider à envoyer automatiquement des e-mails depuis Excel lorsque certaines conditions sont remplies.

3.1 Envoyer automatiquement un e-mail lorsque la valeur d'une cellule atteint une certaine valeur

Comme le montre la capture d'écran ci-dessous, supposons que vous ayez un tableau de ventes avec la cellule D6 contenant le total des ventes. Vous souhaitez envoyer automatiquement un e-mail à votre responsable en fonction du total des ventes. Par exemple, créer ou envoyer un e-mail automatiquement lorsque le total des ventes dépasse 10 000, mais si le total des ventes est égal ou inférieur à 10 000, aucune action ne doit être prise.

1. Dans la feuille de calcul contenant le tableau des ventes, faites un clic droit sur l'onglet de la feuille et cliquez sur "Afficher le code" dans le menu contextuel.

2. Dans la fenêtre "Microsoft Visual Basic for Applications" qui s'ouvre, collez le code VBA suivant dans la fenêtre "Sheet (Code)".

Code VBA : Envoyer automatiquement un e-mail lorsque une cellule atteint une certaine valeur dans Excel

Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub

Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub

Remarques :

1) « D6 » est la cellule dont la valeur déterminera l'envoi de l'e-mail.
2) "> 10000" est la condition, ce qui signifie qu'un e-mail sera envoyé lorsque la valeur dans D6 est supérieure à 10000.
3) « Range(“D6”) » dans la ligne suivante signifie que le corps de l'e-mail fera référence à la valeur dans la cellule D6.
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
4) Dans la ligne ".To = xxx@aaa.com", remplacez "xxx@aaa.com" par l'adresse e-mail réelle du destinataire. Si vous avez besoin de plusieurs adresses e-mail, séparez-les par des points-virgules.
5) Modifiez l'objet de l'e-mail dans la ligne .Subject = "test".
6) Dans les deux lignes suivantes :
.CC = "Adresse e-mail"
.CCI = "Adresse e-mail"
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (cci), remplacez le texte "Adresse e-mail" dans les lignes par les adresses e-mail dont vous avez besoin.
Si vous n'avez pas besoin des destinataires en copie (cc) et en copie cachée (bcc), ajoutez simplement une apostrophe ' au début de chaque ligne.

Désormais, lorsque la valeur dans la cellule D6 dépasse 10000, un e-mail sera créé comme illustré dans la capture d'écran ci-dessous.

A screenshot of an email created in Outlook when the value in cell D6 exceeds 10000 in Excel


3.2 Envoyer automatiquement un e-mail lorsque la valeur d'une cellule change

Comme le montre la capture d'écran ci-dessous, supposons que vous receviez un classeur contenant les ventes mensuelles dans différentes feuilles de calcul et le total des ventes dans une feuille de calcul. Vous devez vérifier le total des ventes et, si le total des ventes est modifié, renvoyer le classeur à l'expéditeur et informer l'expéditeur que la cellule a été modifiée.

1. Dans la feuille de calcul contenant le tableau des ventes, faites un clic droit sur l'onglet de la feuille et cliquez sur "Afficher le code" dans le menu contextuel.

2. Dans la fenêtre "Microsoft Visual Basic for Applications" qui s'ouvre, collez le code VBA suivant dans la fenêtre Feuille (Code).

Code VBA : Envoyer automatiquement un e-mail lorsqu'une valeur de cellule spécifiée change

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")

Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If

ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address

Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."

With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Remarque : Dans le code,

1) « B14 » dans le code signifie que lorsque la valeur de la cellule B14 change, vous enverrez un e-mail.
2) Dans la ligne ".To = xxx@aaa.com", veuillez remplacer "xxx@aaa.com" par l'adresse e-mail réelle du destinataire. Si vous avez besoin de plusieurs adresses e-mail, veuillez les séparer par des points-virgules.
3) Modifiez l'objet de l'e-mail dans la ligne .Subject = "Feuille de calcul modifiée".
4) Dans les deux lignes suivantes :
.CC = "Adresse e-mail"
.CCI = "Adresse e-mail"
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (cci), remplacez le texte "Adresse e-mail" dans les lignes par les adresses e-mail dont vous avez besoin.
Si vous n'avez pas besoin des destinataires Cc et Cci, ajoutez simplement une apostrophe ' avant chaque ligne.

Désormais, lorsque la valeur dans la cellule B14 change, un message Outlook sera automatiquement créé comme le montre la capture d'écran ci-dessous.

A screenshot of an email created in Outlook when the value in cell B14 changes


3.3 Envoyer automatiquement un e-mail lorsqu'un classeur est enregistré

Si vous avez un classeur qui doit être partagé avec d'autres après modification, normalement vous devez enregistrer le classeur, lancer le client de messagerie, créer un nouvel e-mail avec ce classeur en pièce jointe, remplir les champs correspondants puis envoyer l'e-mail. Cette section va vous montrer une méthode pour créer automatiquement un e-mail chaque fois que vous enregistrez le classeur. Veuillez procéder comme suit.

1. Appuyez sur les touches "Alt" + "F11" pour ouvrir la fenêtre "Microsoft Visual Basic for Applications".

2. Dans cette fenêtre, double-cliquez sur "ThisWorkbook" dans le volet "Projet", puis collez le code VBA suivant dans la fenêtre "ThisWorkbook (Code)".

Code VBA : Envoyer automatiquement un e-mail lorsqu'un classeur est enregistré

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xName As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailItem = xOutApp.CreateItem(0)
    xName = ActiveWorkbook.FullName
    With xMailItem
        .To = "xxx@aaa.com"
        .CC = "Email address"
        .BCC = "Email address"
        .Subject = "The workbook has been updated"
        .Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
        .Attachments.Add xName
        .Display
       '.send
    End With
    Set xMailItem = Nothing
    Set xOutApp = Nothing
End Sub

Remarque : Dans le code,

1) Dans la ligne ".To = xxx@aaa.com", remplacez "xxx@aaa.com" par l'adresse e-mail réelle du destinataire. Si vous avez besoin de plusieurs adresses e-mail, séparez-les par des points-virgules.
2) Modifiez séparément l'objet et le corps de l'e-mail dans les lignes ".Subject = "Le classeur a été mis à jour"" et ".Body = "Bonjour," & Chr(13) & Chr(13) & "Le fichier est maintenant mis à jour."".
3) Dans les deux lignes suivantes :
.CC = "Adresse e-mail"
.CCI = "Adresse e-mail"
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (cci), remplacez le texte « Adresse e-mail » dans les lignes par les adresses e-mail dont vous avez besoin.
Si vous n'avez pas besoin des destinataires en copie (cc) et en copie cachée (bcc), ajoutez simplement une apostrophe ' au début de chaque ligne.

3. Désormais, lorsque vous enregistrez le classeur en appuyant sur les touches "Ctrl" + "S" ou en cliquant sur le bouton "Enregistrer", un e-mail Outlook sera créé automatiquement. Vous pouvez constater que le classeur actuel est joint en tant que pièce jointe et que les champs sont remplis avec le contenu spécifié. Voir la capture d'écran :

A screenshot showing an Outlook email with the current workbook attached, ready to be sent automatically

Conseils : Si vous utilisez fréquemment ce classeur, nous vous recommandons de l'enregistrer en tant que "Classeur Excel avec macros activées" pour conserver le script VBA pour une utilisation future. Les étapes sont les suivantes.

1) Cliquez sur "Fichier" > "Enregistrer sous", puis choisissez un dossier pour enregistrer le fichier.
2) Dans la boîte de dialogue "Enregistrer sous", renommez le fichier comme vous le souhaitez dans la zone de texte "Nom du fichier", choisissez "Classeur Excel avec macros activées" dans la liste déroulante "Spécifier le format d'enregistrement", puis cliquez enfin sur le bouton "Enregistrer". Voir capture d'écran :

A screenshot of the 'Save As' dialog in Excel showing the option to save the workbook as an Excel Macro-Enabled Workbook


3.4 Envoyer automatiquement un e-mail à un moment précis

Disons que vous devez envoyer un email avec un classeur d'affectation de tâches à quelqu'un "tous les vendredis matin à 9h", et que vous souhaitez automatiser cette tâche dans Excel sans avoir à manipuler manuellement le client de messagerie. Cette section vous montrera la méthode pour y parvenir.

1. Appuyez sur les touches "Alt" + "F11" pour ouvrir la fenêtre "Microsoft Visual Basic for Applications".

2. Dans la fenêtre "Microsoft Visual Basic for Applications", cliquez sur "Insert" > "Module." Ensuite, collez le code VBA suivant dans la fenêtre Module.

Code VBA 1 : Envoyer le classeur actuel en pièce jointe depuis Excel

Sub Timer()
    If Weekday(Date) = vbFriday Then
        SendWorkBook
        Application.OnTime TimeValue("09:00:00"), "Timer"
    Else
        Application.OnTime TimeValue("09:00:00"), "Timer"
    End If
End Sub

Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

3. Dans cette fenêtre, double-cliquez sur "ThisWorkbook" dans le volet "Projet", puis collez le code VBA suivant dans la fenêtre "ThisWorkbook (Code)".

A screenshot showing the VBA code editor with the 'Workbook_Open' event and 'Application.OnTime' function to schedule email sending

Code VBA 2 : Envoyer automatiquement un e-mail à un moment précis

Private Sub Workbook_Open()
    Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub

Remarques :

1) Dans le code VBA 1, « Vendredi » dans la ligne suivante signifie que l'e-mail sera envoyé automatiquement tous les vendredis.
Si JourDeLaSemaine(Date) = vbVendredi Alors
2) Dans le code VBA 1 et le code VBA 2, l'heure "09:00:00" signifie que l'e-mail sera envoyé à 9h du matin un certain jour.
Vous pouvez modifier le jour et l'heure selon vos besoins.
3) Lorsque le code s'exécute, un e-mail sera créé. Si vous ne souhaitez pas faire apparaître la fenêtre de message et que vous devez l'envoyer directement, veuillez supprimer la ligne ".Display" du code VBA 1, et retirer l'"apostrophe" avant la ligne ‘.Send.

4. Enregistrez les codes, puis enregistrez le classeur en tant que classeur Excel avec macros activées comme suit.

4.1) Cliquez sur "Fichier" > "Enregistrer sous", puis choisissez un dossier pour enregistrer le fichier.
4.2) Dans la boîte de dialogue "Enregistrer sous", renommez le fichier comme vous le souhaitez dans la zone de texte "Nom du fichier", choisissez "Classeur Excel avec macros" dans la liste déroulante "Spécifier le format d'enregistrement", puis cliquez enfin sur le bouton "Enregistrer". Voir capture d'écran :

A screenshot of the 'Save As' dialog in Excel showing the option to save the workbook as an Excel Macro-Enabled Workbook

5. Ouvrez votre classeur avec macros enregistré, puis un e-mail sera créé ou envoyé automatiquement lorsque le jour et l'heure arriveront.


4. Sujets supplémentaires

Cette section regroupe d'autres sujets que vous pourriez rencontrer lors de l'envoi d'e-mails depuis Excel.

4.1 Envoyer une plage de cellules depuis Excel (avec un script VBA)

Supposons qu'il y ait un tableau des ventes mensuelles dans une feuille de calcul Excel comme le montre la capture d'écran ci-dessous, et que vous deviez envoyer ce tableau des ventes mensuelles à d'autres en tant que contenu du corps d'un e-mail ou en tant que pièce jointe directement. Nous vous proposons ici deux méthodes pour y parvenir.

4.1.1 Envoyer une plage en tant que partie du contenu du corps depuis Excel

Vous pouvez exécuter le code VBA suivant pour envoyer une plage de cellules en tant que partie du contenu du corps de l'e-mail depuis Excel.

1. Appuyez sur les touches "Alt" + "F11" pour ouvrir la fenêtre "Microsoft Visual Basic for Applications".

2. Dans la fenêtre "Microsoft Visual Basic for Applications", cliquez sur "Outils" > "Références". Ensuite, cochez la case "Microsoft Outlook 16.0 Object Library" et cliquez sur "OK" dans la boîte de dialogue "Références – VBAProject".

3. Cliquez sur "Insérer" > "Module", puis collez le code VBA suivant dans la fenêtre "Module (Code)".

Code VBA : Envoyer une plage de cellules en tant que partie du contenu du corps de l'email depuis Excel

Sub SendARangeofCells()
'Updated by Extendoffice 20220809
    Dim xRg As Range
    Dim I, J As Long
    Dim xAddress As String
    Dim xMailOut As Object
    Dim xOutApp As Object
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    xAddress = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    With xMailOut
        .Subject = "test"
        .To = "xxx@aaa.com"
        .CC = "Email address"
        .BCC = "Email address"
        .HTMLBody = RangetoHTML(xRg)
        .Display
        '.Send
    End With
    Set xMailOut = Nothing
    Set xOutApp = Nothing
    Application.ScreenUpdating = True
End Sub

 ' The following VBA script is cited from this page:
 ' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook

    TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

    'Copy the range and create a new workbook to past the data in
    rng.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
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With

    'Publish the sheet to a htm file
    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

    'Read all data from the htm file into 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=")

    'Close TempWB
    TempWB.Close savechanges:=False

    'Delete the htm file we used in this function
    Kill TempFile

    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function

Remarque : Dans le code,

1) Dans la ligne ".To = xxx@aaa.com", remplacez "xxx@aaa.com" par l'adresse e-mail réelle du destinataire. Si vous avez besoin de plusieurs adresses e-mail, séparez-les par des points-virgules.
2) Dans les deux lignes suivantes :
.CC = "Adresse e-mail"
.CCI = "Adresse e-mail"
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (cci), remplacez le texte "Adresse e-mail" dans les lignes par les adresses e-mail dont vous avez besoin.
Si vous n'avez pas besoin des destinataires Cc et Cci, ajoutez simplement une apostrophe ' au début de chaque ligne.

4. Appuyez sur la touche "F5" pour exécuter le code. Dans la boîte de dialogue "Kutools pour Excel" qui s'affiche, sélectionnez la plage de cellules que vous devez envoyer en tant que contenu du corps d'un e-mail, puis cliquez sur "OK". Voir capture d'écran :

A screenshot of the Kutools for Excel dialog box where a range of cells is selected to send as part of an email body

Ensuite, un e-mail Outlook sera créé automatiquement. Vous pouvez constater que la plage que vous avez sélectionnée dans la feuille de calcul est insérée dans le corps de l'e-mail. Voir capture d'écran :

A screenshot of an Outlook email with the selected range from Excel inserted into the email body


4.1.2 Envoyer une plage en tant que pièce jointe depuis Excel

Si vous avez besoin d'envoyer une plage de cellules dans une feuille de calcul en tant que pièce jointe depuis Excel, vous pouvez essayer le code VBA suivant.

1. Appuyez sur les touches "Alt" + "F11".

2. Dans la fenêtre ouverte "Microsoft Visual Basic for Applications", cliquez sur "Insert" > "Module". Ensuite, collez le code VBA suivant dans la fenêtre "Module (Code)".

Code VBA : Envoyer une plage en tant que pièce jointe depuis Excel

Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email address"
    .BCC = "Email address"
    .Subject = "Monthly sales for 2021"
    .Body = "Hello, please check and read this document. "
    .Attachments.Add Wb2.FullName
    .Display
    '.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Remarques :

1) Dans la ligne ".To = xxx@aaa.com", veuillez remplacer "xxx@aaa.com" par l'adresse e-mail réelle du destinataire. Si vous avez besoin de plusieurs adresses e-mail, veuillez les séparer par des points-virgules.
2) Modifiez séparément l'objet de l'e-mail et le corps de l'e-mail dans la ligne ".Subject = "Ventes mensuelles pour 2021"" et ".Body = "Bonjour, veuillez vérifier et lire ce document."".
3) Dans les deux lignes suivantes :
.CC = "adresse e-mail"
.CCI = "adresse e-mail"
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (cci), remplacez le texte "adresse e-mail" dans les lignes par les adresses e-mail dont vous avez besoin.
Si vous n'avez pas besoin des destinataires en copie (cc) et en copie cachée (bcc), ajoutez simplement une apostrophe ' au début de chaque ligne.

3. Appuyez sur la touche "F5" pour exécuter le code. Dans la boîte de dialogue "Kutools for Excel" qui s'affiche, sélectionnez la plage de cellules que vous devez envoyer en tant que pièce jointe dans un e-mail, puis cliquez sur "OK". Voir capture d'écran :

A screenshot of the Kutools for Excel dialog box where a range of cells is selected to send as an attachment in an email

Ensuite, un e-mail Outlook sera créé automatiquement. Et la plage de cellules que vous avez sélectionnée dans la feuille de calcul est enregistrée sous forme de classeur Excel et jointe dans la fenêtre Message. Voir capture d'écran :

A screenshot of an Outlook email with the selected range from Excel saved as an attachment


4.2 Envoyer des e-mails lorsqu'un bouton est cliqué dans Excel

Si vous devez cliquer sur un bouton de commande pour déclencher une macro afin d'envoyer un e-mail depuis Excel, par exemple, envoyer le classeur actuel en tant que pièce jointe à d'autres en cliquant sur un bouton de commande dans la feuille de calcul. Vous pouvez suivre les étapes ci-dessous pour accomplir cette tâche.

1. Cliquez sur "Développeur" > "Insérer" > "Bouton de commande (Contrôle ActiveX)". Ensuite, dessinez un bouton de commande dans la feuille de calcul.

Conseils : Si vous avez déjà un bouton de commande, passez cette étape.

2. Appuyez sur les touches "Alt" + "F11" pour ouvrir la fenêtre "Microsoft Visual Basic for Applications". Dans la fenêtre, cliquez sur "Insertion" > "Module", puis collez le code VBA (le code utilisé pour envoyer le classeur actuel en tant que pièce jointe depuis Excel) dans la fenêtre Module (Code).

Cliquez ici pour obtenir le code.

Remarque : Ici, le nom de la macro que vous avez créée à l'étape 2 est "SendWorkbook".

3. Appuyez sur les touches "Alt" + "Q" pour fermer la fenêtre "Microsoft Visual Basic for Applications".

4. Maintenant, vous devez attribuer la macro au bouton de commande. Faites un clic droit sur le bouton de commande, puis sélectionnez "Affichage du code" dans le menu contextuel.

5. Ensuite, la fenêtre "Microsoft Visual Basic for Applications" apparaît, vous pouvez voir que les deux lignes suivantes sont listées dans la fenêtre "Sheet (Code)".

Private Sub CommandButton1_Click()
End Sub

A screenshot of the Microsoft Visual Basic for Applications window showing the CommandButton1_Click code

6. Entrez le nom de la macro existante à l'intérieur de la sous-procédure pour le bouton de commande.

A screenshot of editing the VBA code to assign an existing macro to the command button

7. Appuyez sur les touches "Alt" + "Q" pour fermer l'"Éditeur Visual Basic", puis cliquez sur "Développeur" > "Mode Création" pour désactiver le mode création.

A screenshot of turning off Design Mode in the Developer tab

Vous pouvez maintenant cliquer sur le bouton de commande pour envoyer un email avec le classeur actuel en tant que pièce jointe dans l'email.


4.3 Envoyer des emails à partir d'un compte email spécifié

Normalement, lors du lancement d'un email depuis Excel avec un code VBA, le compte email de l'expéditeur est le compte par défaut dans Outlook. Supposons que vous ayez configuré plusieurs comptes email dans votre Outlook et que vous souhaitiez utiliser un compte spécifique pour envoyer les emails depuis Excel au lieu d'utiliser le compte par défaut. Le code VBA suivant peut vous aider.

Les codes suivants sont nécessaires dans ce cas.

Code VBA 1 :

Dim OutlookMail As Outlook.MailItem

Code VBA 2 :

For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next

Comment utiliser les codes VBA ci-dessus ?

1) Dans votre propre code, vous devez remplacer la ligne telle que "Dim OutlookMail As Object" par le code VBA 1.
2) Ajoutez le code VBA 2 ci-dessous après la ligne "On Error Resume Next" dans votre code. Ensuite, spécifiez l'adresse e-mail que vous utiliserez pour envoyer l'e-mail dans le code VBA 2.

Dans cet exemple, nous allons spécifier un compte e-mail particulier pour envoyer le classeur actuel en tant que pièce jointe depuis Excel. Veuillez procéder comme suit.

1. Appuyez sur les touches "Alt" + "F11". Dans la fenêtre "Microsoft Visual Basic for Applications", cliquez sur "Outils" > "Références". Ensuite, cochez la case "Microsoft Outlook 16.0 Object Library" et cliquez sur "OK" dans la boîte de dialogue "Références – VBAProject".

A screenshot of the 'References – VBAProject' dialog box in Excel with the Microsoft Outlook 16.0 Object Library option selected

2. Cliquez sur "Insertion" > "Module". Ensuite, collez le code VBA suivant dans la fenêtre "Module (Code)".

Code VBA : Envoyer le classeur actuel en tant que pièce jointe d'un e-mail depuis Excel via un compte Outlook spécifié

Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next
'End
With OutlookMail
    .To = "xxx@aaa.com"
    .CC = "Email Address"
    .BCC = "Email Address"
    .Subject = "kte feature"
    .Body = "Hello, please check and read this document, thank you."
    .Attachments.Add Application.ActiveWorkbook.FullName
    .Display
    '.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub

3. Appuyez sur la touche "F5" pour exécuter le code. Ensuite, un message électronique Outlook s'affiche, vous pouvez constater que le champ "De" est rempli avec le compte de messagerie que vous avez spécifié dans le code.


4.4 Envoyer un email lorsqu'une date est atteinte

Si vous devez envoyer un e-mail en fonction d'une date d'échéance spécifique, par exemple, comme illustré dans la capture d'écran ci-dessous, il y a une table de projet : « lorsque la date d'échéance dans la plage E2:E7 est égale ou inférieure à 7 jours à partir d'aujourd'hui (en supposant que la date actuelle est le 04/08/2022) », un e-mail sera automatiquement envoyé aux chefs de projet correspondants pour les informer que le projet arrive à expiration.

1. Dans la feuille de calcul contenant le tableau des projets, faites un clic droit sur l'onglet de la feuille et cliquez sur "Afficher le code" dans le menu contextuel.

2. Dans la fenêtre ouverte « Microsoft Visual Basic for Applications », collez le code VBA suivant dans la fenêtre « Sheet (Code) ».

Code VBA : Envoyer automatiquement un e-mail lorsque la date d'échéance est atteinte

Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
Dim xRgDate As Range
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xLastRow As Long
Dim vbCrLf As String
Dim xMailBody As String
Dim xRgDateVal As String
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
If xRgText Is Nothing Then Exit Sub
xLastRow = xRgDate.Rows.Count
Set xRgDate = xRgDate(1)
Set xRgSend = xRgSend(1)
Set xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
For i = 1 To xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
If xRgDateVal <> "" Then
If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "

"
            xMailBody = ""
            xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
            xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf
            xMailBody = xMailBody & ""
Set xMailItem = xOutApp.CreateItem(0)
With xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = xMailBody
.Display
'.Send
End With
Set xMailItem = Nothing
End If
End If
Next
Set xOutApp = Nothing
End Sub

Remarque : Dans le code,

1) Dans les lignes suivantes, « E2:E7 » contient les dates d'échéance sur lesquelles vous enverrez des emails. « C2:C7 » contient les adresses email auxquelles vous enverrez les messages. Et « D2:D7 » contient les remarques que vous ajouterez dans le corps de l'email pour informer les destinataires que le projet est sur le point d'expirer. Vous pouvez modifier les plages selon vos besoins.
Plage xRgDate = Plage("E2:E7")
Définir xRgSend = Plage("C2:C7")
Plage xRgText = Plage("D2:D7")
2) La ligne suivante signifie que la date d'échéance doit être supérieure à 1 jour et égale ou inférieure à 7 jours à partir d'aujourd'hui. Vous pouvez la modifier selon vos besoins.
Si CDate(xRgDateVal) - Date <= 7 Et CDate(xRgDateVal) - Date > 0 Alors
3) Dans la ligne ".To = xxx@aaa.com", remplacez "xxx@aaa.com" par l'adresse e-mail réelle du destinataire. Si vous avez besoin de plusieurs adresses e-mail, séparez-les par des points-virgules.
4) Modifiez l'objet de l'e-mail dans la ligne ".Subject = "Feuille de calcul modifiée"".
5) Dans les deux lignes suivantes :
.CC = "Adresse e-mail"
.CCI = "Adresse e-mail"
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (cci), remplacez le texte "Adresse e-mail" dans les lignes par les adresses e-mail dont vous avez besoin.
Si vous n'avez pas besoin des destinataires en copie (cc) et en copie cachée (bcc), ajoutez simplement une apostrophe ' au début de chaque ligne.

3. Appuyez sur la touche "F5" pour exécuter le code. Ensuite, si la date d'expiration correspond aux conditions, l'e-mail correspondant sera créé. Dans ce cas, deux e-mails seront créés comme le montre la capture d'écran ci-dessous.

A screenshot of two emails created automatically based on expiration date matching conditions in Excel


5. Un outil pratique pour vous aider à envoyer facilement des e-mails depuis Excel

Si vous êtes novice en VBA, les méthodes ci-dessus peuvent être difficiles à gérer pour vous. Nous vous recommandons ici la fonctionnalité "Envoyer des e-mails" de "Kutools pour Excel". Avec cette fonctionnalité, vous pouvez facilement envoyer des e-mails depuis Excel en quelques clics seulement. Veuillez procéder comme suit.

Kutools pour Excel propose plus de 300 fonctionnalités avancées pour simplifier les tâches complexes, augmentant ainsi la créativité et l'efficacité. Intégré à des capacités d'IA, Kutools automatise les tâches avec précision, rendant la gestion des données facile et sans effort. Informations détaillées sur Kutools pour Excel...  Essai gratuit...
 5.1 Créez facilement une liste de diffusion qui inclut les champs email dont vous avez besoin

Avant d'utiliser la fonctionnalité Envoyer des e-mails, vous devez créer une liste de diffusion contenant les champs e-mail dont vous avez besoin. Ici, la fonctionnalité Créer une liste de diffusion peut vous aider.

1. Cliquez sur "Kutools Plus" > "Créer une liste de diffusion".

2. Dans la fenêtre "Créer une liste de diffusion" qui s'ouvre, vous devez configurer comme suit.

2.1) Dans la section « Colonnes pour liste de diffusion », cochez les champs dont vous avez besoin dans votre email ;
2.2) Dans la section « Pièces jointes », cochez une ou plusieurs pièces jointes dont vous pourriez avoir besoin ;
2.3) Spécifiez un emplacement pour placer la liste de diffusion ;
2.4) Cliquez sur le bouton "Créer". Voir la capture d'écran :

Ensuite, un exemple de tableau de liste de diffusion est créé, comme le montre la capture d'écran ci-dessous.

3. Maintenant, vous devez remplacer les données d'origine dans l'exemple par vos propres données de champ.

Vous avez maintenant créé un tableau de liste de diffusion. Veuillez ensuite appliquer la fonctionnalité "Envoyer des e-mails" pour envoyer des e-mails depuis Excel en vous basant sur les champs que vous avez créés.

Kutools pour Excel - Boostez Excel avec plus de 300 outils essentiels. Profitez de fonctionnalités IA gratuites en permanence ! Obtenez-le maintenant


 5.2 Envoyez facilement des emails incluant les champs que vous avez créés dans la liste de diffusion.

Après avoir créé la liste de diffusion (cliquez pour savoir comment) qui contient les champs dont vous pourriez avoir besoin dans vos emails, vous pouvez maintenant envoyer des emails depuis Excel avec ces champs.

1. Sélectionnez toute la liste de diffusion, puis cliquez sur "Kutools Plus" > "Envoyer un e-mail".

2. Dans la boîte de dialogue "Envoyer des e-mails", veuillez effectuer la configuration suivante.

2.1) Les champs sont automatiquement remplis dans la boîte de dialogue de chaque champ par les champs que vous avez spécifiés dans la liste de diffusion ;
Conseils : Si vous n'avez pas besoin d'un certain champ pour le moment, choisissez une option vide dans la liste déroulante.
2.2) « Insérer un espace réservé » (facultatif) : Si vous devez insérer des informations variables dans le corps d'un e-mail.
Par exemple, vous pourriez avoir besoin d'envoyer un e-mail à plusieurs destinataires avec un prénom personnalisé pour chacun. Placez le curseur dans le corps de l'e-mail là où vous souhaitez insérer l'espace réservé, sélectionnez le champ « E: Prénom » (ou un autre champ de nom dans votre liste de diffusion), puis cliquez sur le bouton Insérer un "espace réservé".
Lorsque les destinataires reçoivent l'e-mail, le corps du message reste le même, mais les noms sont uniques pour chacun.
2.3) Rédigez le corps de l'email selon vos besoins ;
2.4) Assurez-vous que la case "Envoyer des e-mails via Outlook" est cochée ;
2.5) Cliquez sur le bouton "Envoyer". Voir la capture d'écran :

3. Ensuite, une boîte de dialogue "Kutools for Excel" apparaît pour vous indiquer combien d'e-mails ont été envoyés, cliquez sur le bouton "OK" pour fermer cette boîte de dialogue.

Astuce : Vous pouvez accéder au dossier "Éléments envoyés" dans votre Outlook pour vérifier les e-mails que vous avez envoyés.


5.3 Envoyez facilement des emails avec un corps en HTML (y compris des hyperliens, des images, etc.)

Cette fonctionnalité d'envoi d'e-mails vous permet de créer un e-mail en HTML, qui inclut des hyperliens, des images, différentes tailles de police et couleurs de police, etc.

Après avoir créé une liste de diffusion qui inclut les champs e-mail dont vous avez besoin, lorsque vous configurez la boîte de dialogue Envoyer des e-mails, vous pouvez enrichir le contenu du corps en utilisant les options de la barre d'outils.

Voir la capture d'écran ci-dessous :


5.4 Insérer facilement la signature par défaut d'Outlook lors de l'envoi de courriels

Dans la méthode ci-dessus, nous avons présenté un code VBA pour vous aider à envoyer des e-mails avec la signature par défaut d'Outlook. Ici, avec la fonctionnalité Envoyer des e-mails, il vous suffit de cocher une option, puis la signature par défaut d'Outlook sera insérée dans les e-mails que vous envoyez depuis Excel.

Après avoir créé une liste de diffusion qui inclut les champs e-mail dont vous avez besoin, lorsque vous configurez la boîte de dialogue Envoyer des e-mails, vous devez cliquer sur "Options" > "Utiliser les paramètres de signature d'Outlook".

Remarque : Assurez-vous qu'une coche s'affiche avant l'option Utiliser les paramètres de signature d'Outlook.

Lorsque les destinataires reçoivent l'e-mail, ils peuvent voir la signature par défaut d'Outlook affichée à la fin du corps du message.


5.5 Envoyez facilement des emails depuis un compte email spécifié

Pour utiliser un compte e-mail spécifique afin d'envoyer des e-mails depuis Excel au lieu d'utiliser le compte par défaut, la fonctionnalité Envoyer des e-mails peut également vous aider à le faire facilement.

Après avoir créé une liste de diffusion qui inclut les champs e-mail dont vous avez besoin, lorsque vous configurez la boîte de dialogue Envoyer un e-mail, vous devez cliquer sur "Options" > "Envoyé depuis", puis cliquer sur le compte e-mail à partir duquel vous souhaitez envoyer les e-mails.

Remarque : Après avoir sélectionné le compte de messagerie, une coche sera affichée devant celui-ci.

Cliquez ici pour en savoir plus sur la fonctionnalité Envoyer des e-mails.

Kutools pour Excel - Boostez Excel avec plus de 300 outils essentiels. Profitez de fonctionnalités IA gratuites en permanence ! Obtenez-le maintenant

En conclusion, l'envoi d'e-mails depuis Excel est assez utile dans notre travail quotidien. Cet article couvre des sujets plus complets concernant l'envoi d'e-mails à partir d'Excel. S'il existe d'autres sujets ou des solutions plus simples, veuillez laisser un commentaire pour me le faire savoir.

Meilleurs outils de productivité pour Office

🤖 Kutools AI Aide : Révolutionner l'analyse des données basée sur : Exécution intelligente   |  Générer du code  |  Créer des formules personnalisées  |  Analyser les données et générer des graphiques  |  Invoquer les Fonctions améliorées
Fonctionnalités populaires : Trouver, mise en évidence ou marquer les doublons   |  Supprimer les lignes vides   |  Consolider les colonnes ou les cellules sans perdre de données   |   Arrondir sans formule ...
Super RECHERCHEV : RECHERCHEV avec critères multiples    RECHERCHEV avec valeurs multiples  |   Recherche multi-feuilles   |   Correspondance floue ....
Liste déroulante avancée : Créer rapidement une liste déroulante   |  Liste déroulante dépendante   |  Liste déroulante multi-sélection ....
Gestionnaire de colonnes : Ajouter un nombre spécifique de colonnes  |  Déplacer les colonnes  |  Basculer l'état de visibilité des colonnes masquées  |  Comparer les plages & colonnes ...
Fonctionnalités en vedette : Mise au point de la grille   |  Affichage de conception   |   Barre de formule améliorée    Gestionnaire de classeur & feuille de calcul   |  Bibliothèque dAutoTexte (Auto Text)   |  Sélecteur de date   |  Fusionner les données   |  Crypter/Déchiffrer les cellules    Envoyer un e-mail par liste   |  Super Filtre   |   Filtre spécial (filtrer les cellules avec une police en gras/italique/barré...) ...
Top15 ensembles d'outils12 outils de texte (Ajouter du texte, Supprimer des caractères spécifiques, ...)   |   50+ types de graphiques (Diagramme de Gantt, ...)   |   40+ formules pratiques (Calculer lâge en fonction de la date de naissance, ...)   |   19 outils d'insertion (Insérer un code QR, Insérer une image depuis le chemin, ...)   |  12 outils de conversion (Convertir en mots, Conversion de devises, ...)   |  7 outils de fusion & division (Fusion avancée des lignes, Diviser les cellules, ...)   |   ... et plus

Boostez vos compétences Excel avec Kutools pour Excel, et découvrez une efficacité sans précédent. Kutools pour Excel propose plus de300 fonctionnalités avancées pour augmenter la productivité et gagner du temps.  Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...


Office Tab apporte une interface à onglets à Office, et facilite grandement votre travail

  • Activez la modification et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de50 %, et réduit des centaines de clics de souris pour vous chaque jour !