KutoolsforOffice — Une solution unique, cinq outils puissants.Faire plus avec moins d'efforts.Soldes de mars : 20 % de réduction

Tutoriel Excel – Envoyer des e-mails depuis Excel

AuteurSiluvia Date de modification

Généralement, nous utilisons des clients de messagerie comme Outlook ou Gmail pour envoyer des e-mails. Toutefois, de nombreuses personnes conservent leurs données dans un classeur Excel et doivent partager certaines de ces informations avec d’autres collaborateurs pendant qu’elles y travaillent. Envoyer des e-mails directement depuis Excel leur permet ainsi de gagner du temps en évitant de basculer vers un client de messagerie. Ce tutoriel pas à pas vous explique 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 en faire 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 depuis Excel

Cette section présente les fondamentaux de l’envoi d’e-mails depuis Excel.

1,1 Envoyer des e-mails depuis Excel avec les fonctions intégrées d’Excel

Si vous souhaitez envoyer depuis Excel des e-mails simples comprenant uniquement les champs « À », « Objet », « Cc » et le corps du message, les fonctions intégrées d’Excel vous seront d’une grande aide.


1,1.1 Envoyer un e-mail depuis Excel à l’aide d’une formule

Comme le montre le tableau ci-dessous, vous pouvez envoyer différents e-mails depuis Excel en fonction des champs fournis en utilisant les références de cellules correspondantes pour créer des liens hypertexte adaptés. Une fois ces liens créés, il vous suffit de cliquer sur celui de votre choix pour déclencher automatiquement l’envoi de l’e-mail.

Remarque : si plusieurs destinataires figurent dans les champs « À » ou « Cc », veuillez les séparer par des points-virgules.

Cette section est divisée en quatre parties pour vous guider pas à pas dans l’ajout séparé de l’adresse e-mail, du ou des destinataires en copie (Cc), de la ligne d’objet et du corps du message à la formule du lien hypertexte. Procédez comme suit.

La syntaxe et les arguments de la fonction « LIEN_HYPERTEXTE » sont les suivants :

Syntaxe

HYPERLINK(link_location, [friendly_name])

Arguments

« Emplacement_du_lien » (obligatoire) : chemin et nom du fichier à ouvrir ;
Conseil : dans ce tutoriel, tous les champs nécessaires pour un e-mail, tels que l’adresse du destinataire Adresse e-mail, les destinataires en copie (Cc), l’objet et le corps du message, doivent être placés dans le premier argument « emplacement_du_lien ».
« Nom_affiché » (facultatif) : texte affiché dans la cellule.

1,1.1,1 Ajouter Adresse e-mail à la formule de lien hypertexte

Ici, nous utilisons « mailto: » dans la formule pour indiquer le destinataire. Dans cet exemple, l’adresse e-mail du premier destinataire se trouve dans la cellule B2 ; nous devons donc préfixer cette référence par « mailto: ».

“mailto:”&B2

1. Sélectionnez une cellule dans laquelle afficher le lien hypertexte — ici, j’ai choisi la cellule F2.

2. Saisissez ensuite la formule suivante dans cette cellule.

=HYPERLINK("mailto:"&B2)

Remarque : en appuyant sur la touche « Entrée », un lien hypertexte est créé, comme illustré dans la capture d’écran ci-dessous. Un clic sur ce lien ouvre automatiquement un e-mail Outlook, avec l’adresse e-mail du destinataire préremplie dans le champ « À ».

L’adresse e-mail du destinataire est désormais intégrée à la formule du lien hypertexte. Poursuivez avec les étapes suivantes pour ajouter, selon vos besoins, la ligne d’objet, les destinataires en copie (Cc) et le texte du corps du message.


1,1.1,2 Ajouter le ou les destinataires en copie (Cc) à la formule de lien hypertexte

Pour ajouter un ou plusieurs destinataires en copie (Cc) à la fonction LIEN_HYPERTEXTE, ajoutez « ?cc= » dans la formule, comme suit.

« ?cc= » & C2
où C2 contient l’Adresse e-mail du destinataire en copie conforme.

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 de lien hypertexte

Pour inclure une ligne d’objet dans la fonction LIEN_HYPERTEXTE, ajoutez « &subject= » à votre formule, comme suit.

« &subject= » & D2
où D2 contient l’Objet de l'email.

La formule dans la cellule F2 doit désormais ressembler à ceci :

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


1,1.1,4 Ajouter le texte du corps du message avec des sauts de ligne à la formule de lien hypertexte

La dernière étape consiste à intégrer le texte du corps du message dans la formule du lien hypertexte. Comme le montre l’exemple, les deux lignes de texte situées en E2 sont séparées par un saut de ligne, et vous souhaitez préserver ce saut dans le corps de l’e-mail. Outlook reconnaît-il ce saut de ligne dans ce cas ? Vérifions-le.

Pour inclure le texte du corps du message dans la formule du lien hypertexte, ajoutez « &body= » comme élément de celle-ci, comme suit.

« &body= » & E2
où E2 contient le corps du message de l’e-mail.

La formule dans la cellule F2 s’affiche désormais ainsi :

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

Remarque : si vous appuyez sur la touche « Entrée », puis cliquez sur le lien, vous constaterez dans Nouveau courriel que le corps du message s’affiche sur une seule ligne.

Pour afficher le corps de l’e-mail sur plusieurs lignes, insérez le code « %0A » à l’endroit où vous souhaitez créer un saut de ligne dans le contenu de la cellule. Voir la capture d’écran :


1,1.1,5 Spécifier le texte à afficher pour le lien hypertexte

Dans les étapes précédentes, nous avons renseigné l’argument Emplacement_du_lien à l’aide des champs de l’e-mail. Nous allons maintenant finaliser l’argument suivant : [nom_affiché].

Dans cet exemple, je souhaite que la cellule contenant le lien affiche le texte « Envoyer un e-mail à xx », où « xx » correspond au nom du destinataire figurant en A2. La formule en F2 doit donc être adaptée comme suit :

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

Appuyez sur la touche « Entrée » pour obtenir instantanément votre résultat.

Sélectionnez la cellule contenant la formule, puis faites glisser sa « poignée de recopie » vers le bas pour générer davantage de liens hypertexte d’e-mails. Voir la capture d’écran :


1,1.2 Envoyer un e-mail depuis Excel à l’aide de la fonction LIEN_HYPERTEXTE

Outre l’utilisation de la formule de lien hypertexte mentionnée ci-dessus, vous pouvez également créer manuellement un lien hypertexte vers une adresse e-mail à l’aide de la fonction « Créer un lien hypertexte » dans Excel. Cette section vous explique pas à pas comment procéder.

1. Cliquez avec le bouton droit sur la cellule où vous souhaitez insérer un lien hypertexte, puis choisissez « Lien » dans le menu contextuel.

2. Dans la boîte de dialogue « Créer un lien hypertexte » qui s’ouvre, configurez les paramètres comme suit :

2,1) Sélectionnez « Adresse e-mail » dans le volet gauche.
2,2) Dans la zone de texte « Texte à afficher », saisissez le texte que vous souhaitez afficher dans la cellule ;
Conseil : vous ne pouvez pas utiliser de références de cellule 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 le Adresse e-mail suivant.
mailto:Adresse e-mail
Veuillez remplacer le texte « Adresse e-mail » par votre véritable Adresse e-mail. Si vous avez plusieurs Adresse e-mail, séparez-les par un point-virgule.
2,4) Dans la zone de texte « Objet », vous pouvez spécifier directement votre Objet de l'email et le corps de l’e-mail. Veuillez configurer comme suit :
Objet de l'email&body=Corps de l’e-mail
Dans cet exemple, je saisis « Ventes mensuelles&body=Bonjour,%0AVous avez reçu cet e-mail ».
où l’objet est « Ventes mensuelles » ;
et
le corps de l’e-mail est :
Bonjour,
Vous avez reçu cet e-mail. (« %0A » est le code de caractère Retour chariot reconnu par Outlook)
2,5) Cliquez sur le bouton « OK » pour enregistrer le lien hypertexte. Voir la capture d’écran :

En cliquant sur le lien hypertexte, un e-mail Outlook s’ouvre automatiquement avec les champs « À », « Objet » et « Corps du message » déjà préremplis, comme le montre la capture d’écran ci-dessous.

Remarques :

1) Avec cette méthode, vous deviez créer manuellement chaque lien hypertexte d’e-mail.
2) Vous ne pouvez pas ajouter de champ Cc aux e-mails avec cette méthode. Par conséquent, si vous avez besoin du champ Cc, veuillez l’ajouter depuis la fenêtre d’e-mail nouvellement ouverte.

1,2 Envoyer un e-mail à plusieurs destinataires figurant dans des cellules à l’aide d’un script VBA

Dans l’exemple ci-dessus, vous pouvez constater que plusieurs adresses e-mail figurent dans une même cellule, séparées par des points-virgules. Si vous disposez d’une liste d’adresses e-mail, comme illustré dans la capture d’écran ci-dessous, et que vous souhaitez envoyer un e-mail unique ou plusieurs e-mails distincts à tous ces destinataires, le code VBA suivant vous sera particulièrement utile.


1,2.1 Envoyer un e-mail à plusieurs destinataires figurant dans des cellules à l’aide d’un script VBA

1. Dans la feuille de calcul contenant toutes les adresses e-mail auxquelles vous souhaitez envoyer un message, appuyez simultanément sur les touches « Alt » + « F11 » pour ouvrir la fenêtre « Microsoft Visual Basic pour Applications ».

2. Dans la fenêtre « Microsoft Visual Basic pour Applications », cliquez sur « Insertion » > « Module », puis collez le code ci-dessous dans la fenêtre « Module (Code) ».

Code VBA : Envoyer un e-mail à une liste de Adresse 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. La boîte de dialogue « Kutools pour Excel » s’ouvre alors : sélectionnez la liste des adresses e-mail, puis cliquez sur « OK ».

Capture d’écran de la boîte de dialogue « Kutools for Excel » demandant la liste des adresses e-mail

Remarques :

1) Si vous ne souhaitez pas que la boîte de dialogue ci-dessus s’affiche et que vous préférez spécifier directement dans le code la plage de Adresse e-mail, veuillez remplacer cette ligne :
Set xRg = Application.InputBox(«Please select the addresses list:», «Kutools for Excel», xTxt, , , , , 8)
par
Set xRg = Range("A2:A7")
2) Vous pouvez spécifier votre propre Objet de l'email et le corps du message 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 la nouvelle fenêtre de message suivante, vous devez remplacer cette ligne :
.Display
par
.Send

Après exécution du code, toutes les adresses e-mail contenues dans la plage sélectionnée apparaissent automatiquement dans le champ « À » de la fenêtre de message. Voir la capture d’écran :

Capture d’écran de la fenêtre du message e-mail avec toutes les adresses e-mail renseignées dans le champ À


1,2.2 Envoyer séparément des e-mails à chaque destinataire figurant dans des cellules à l’aide d’un script VBA

Le code ci-dessus ajoute toutes les adresses e-mail contenues dans la plage sélectionnée au champ « À » de la fenêtre de message. Si vous souhaitez envoyer des e-mails individuels à chaque destinataire figurant dans les cellules, sans que ceux-ci puissent voir les adresses e-mail des autres, vous pouvez utiliser le script VBA suivant.

1. Dans la feuille de calcul contenant toutes les adresses e-mail auxquelles vous souhaitez envoyer des messages, appuyez simultanément sur les touches « Alt » + « F11 » pour ouvrir la fenêtre « Microsoft Visual Basic pour Applications ».

2. Dans la fenêtre « Microsoft Visual Basic pour Applications », cliquez sur « Insertion » > « Module », puis collez le code suivant dans la fenêtre « Module (Code) ».

Code VBA : Envoyer des e-mails séparément à chaque Liste d'adresses figurant dans les cellules

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 », repérez et cochez l’option « Microsoft Outlook 16,0 Object Library », puis validez par « OK » pour enregistrer vos modifications.

Capture d’écran de la boîte de dialogue « Références – VBAProject » dans Excel avec l’option Bibliothèque d’objets Microsoft Outlook 16.0 sélectionnée

4. Appuyez sur la touche « F5 » pour exécuter le code. La boîte de dialogue « Kutools pour Excel » s’ouvre alors : sélectionnez la liste des adresses e-mail, puis cliquez sur « OK ».

Capture d’écran de la boîte de dialogue « Kutools for Excel » demandant la sélection de la liste d’adresses e-mail

Remarques :

1) Si vous ne souhaitez pas que la boîte de dialogue ci-dessus s’affiche et que vous préférez spécifier directement dans le code la plage de Adresse e-mail, veuillez remplacer cette ligne :
Set xRg = Application.InputBox(«Please select the addresses list:», «Kutools for Excel», xTxt, , , , , 8)
par
Set xRg = Range("A2:A7")
2) Vous pouvez spécifier votre propre Objet de l'email et le corps du message 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 :
.Display
par
.Send

Dans cet exemple, six adresses e-mail figurent dans la plage sélectionnée ; six fenêtres de message Outlook seront donc créées automatiquement, chacune contenant une liste d’adresses distincte dans le champ « À », comme illustré dans la capture d’écran ci-dessous.

Capture d’écran de plusieurs fenêtres de messages Outlook avec des adresses e-mail distinctes dans le champ À

5. Enfin, cliquez sur le bouton « Envoyer » pour transmettre les e-mails un par un.


2. Insérez une pièce jointe ou une signature Outlook dans les e-mails envoyés depuis Excel (à l’aide de scripts VBA).

Cette section vous explique comment insérer une pièce jointe ou inclure automatiquement votre signature Outlook par défaut dans les e-mails envoyés depuis Excel.

2,1 Insérer une pièce jointe dans les e-mails envoyés depuis Excel

Nous décrivons ici les différents cas de Insérer une pièce jointe ; vous pouvez choisir la méthode adaptée à vos besoins. Dans cette section, vous apprendrez à (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

Vous pouvez utiliser le code VBA suivant pour envoyer par e-mail un ou plusieurs fichiers d’un dossier en tant que pièces jointes directement depuis Excel.

1. Appuyez sur les touches « Alt » + « F11 ».

2. Dans la fenêtre « Microsoft Visual Basic pour Applications » qui s’ouvre, cliquez sur « Insertion » > « Module », puis collez le code VBA suivant dans la fenêtre « Module (Code) ».

Code VBA : Envoyer des fichiers d’un dossier en pièce jointe 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) À la ligne « .To = xxx@aaa.com », remplacez « xxx@aaa.com » par l’Adresse e-mail de votre destinataire ;
2) Modifiez séparément l’Objet de l'email et le corps de l’e-mail dans les lignes « .Subject = "test" » et « .HTMLBody = "test" » ;
3) Vous pouvez ajouter des destinataires en copie conforme (Cc) et en copie cachée (Bcc) selon vos besoins. Il suffit d’ajouter les deux lignes suivantes sous la ligne « .To = xxx@aaa.com ».
.CC = «email address»
.BCC = «email address»

3. Cliquez ensuite sur « Outils » > « Références ». Dans la boîte de dialogue « Références – VBAProject », recherchez « Microsoft Outlook 16,0 Object Library », cochez la case correspondante, puis cliquez sur « OK » pour enregistrer vos modifications.

Capture d’écran de la boîte de dialogue « Références – VBAProject » dans Excel avec l’option Bibliothèque d’objets Microsoft Outlook 16.0 sélectionnée

4. Appuyez sur la touche « F5 » pour exécuter le code. La fenêtre « Parcourir » s’ouvre alors : sélectionnez les fichiers que vous souhaitez joindre à l’e-mail, puis cliquez sur « OK ».

Capture d’écran de la fenêtre « Parcourir » permettant de sélectionner des fichiers à joindre à un e-mail dans Excel

Une fenêtre de message s’ouvre alors, affichant clairement les fichiers sélectionnés en tant que pièces jointes dans le champ « Pièces jointes ».

Capture d’écran de la fenêtre de message Outlook avec les fichiers sélectionnés affichés en pièces jointes


2,1.2 Envoyer le Feuille de calcul actuelle en pièce jointe

Si vous souhaitez envoyer la feuille de calcul actuelle en pièce jointe depuis Excel, utilisez le script VBA présenté dans cette section.

1. Appuyez sur les touches « Alt » + « F11 ».

2. Dans la fenêtre « Microsoft Visual Basic pour Applications » qui s’ouvre, cliquez sur « Insertion » > « Module », puis collez le code VBA suivant dans la fenêtre « Module (Code) ».

Code VBA : Envoyer le Feuille de calcul actuelle en pièce jointe

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) À la ligne « .To = xxx@aaa.com », remplacez « xxx@aaa.com » par l’Adresse e-mail réel du destinataire. Si vous avez plusieurs Adresse e-mail, séparez-les par des points-virgules.
2) Modifiez séparément l’Objet de l'email et le corps de l’e-mail dans les lignes « .Subject = "kte features" » et « .Body = " Veuillez consulter et lire ce document." » ;
3) Dans les deux lignes suivantes :
.CC = «email address»
.BCC = «email address»
Si vous souhaitez ajouter des destinataires en copie conforme (cc) et en copie cachée (bcc), remplacez le texte « "Adresse e-mail" » dans ces lignes par les Adresse e-mail souhaités.
Si vous n’avez pas besoin de destinataires en copie conforme (cc) ni en copie cachée (bcc), ajoutez simplement une apostrophe 'avant chaque ligne.

3. Appuyez sur la touche « F5 » pour exécuter le code. La feuille de calcul actuelle est alors enregistrée sous forme de classeur Excel et insérée automatiquement en pièce jointe dans une fenêtre de message. Voir la capture d’écran :

Capture d’écran de la fenêtre de message Outlook avec la feuille de calcul actuelle enregistrée et jointe en tant que classeur Excel

Remarque : Le classeur joint, qui contient uniquement la feuille de calcul actuelle, porte le même nom que le classeur d’origine, auquel s’ajoute l’heure à laquelle vous exécutez le code.


2,1.3 Envoyer le Classeur actuel en pièce jointe

Après avoir découvert le code VBA permettant d’envoyer la feuille de calcul active en pièce jointe depuis Excel, nous vous proposons ici un autre script VBA pour envoyer l’intégralité du classeur en pièce jointe. Suivez ces étapes :

1. Appuyez simultanément sur les touches « Alt » et « F11 ».

2. Dans la fenêtre « Microsoft Visual Basic pour Applications » qui s’ouvre, cliquez sur « Insertion » > « Module », puis collez le code VBA suivant dans la fenêtre du 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) À la ligne « .To = xxx@aaa.com », remplacez « xxx@aaa.com » par l’Adresse e-mail réel du destinataire. Si vous avez plusieurs Adresse e-mail, séparez-les par des points-virgules.
2) Modifiez séparément l’Objet de l'email et le corps de l’e-mail dans les lignes « .Subject = "kte features" » et « .Body = " Veuillez consulter et lire ce document." » ;
3) Dans les deux lignes suivantes :
.CC = «email address»
.BCC = «email address»
Si vous souhaitez ajouter des destinataires en copie conforme (cc) et en copie cachée (bcc), remplacez le texte « "Adresse e-mail" » dans ces lignes par les Adresse e-mail souhaités.
Si vous n’avez pas besoin de destinataires en copie conforme (cc) ni en copie cachée (bcc), ajoutez simplement une apostrophe ' avant chaque ligne.

3. Appuyez sur la touche « F5 » pour exécuter le code : le classeur actuel est automatiquement inséré en pièce jointe dans la fenêtre de message. Voir la capture d’écran :

Capture d’écran de la fenêtre de message Outlook avec le classeur actuel joint automatiquement


2,1.4 Envoyer l’intégralité du classeur en pièce jointe PDF

La plupart des utilisateurs enregistrent habituellement leur classeur Excel au format PDF avant de l’envoyer en pièce jointe à d’autres personnes. Dans cette section, nous vous montrons comment envoyer directement un e-mail depuis Excel, avec le classeur actif automatiquement joint en tant que fichier PDF — sans avoir à l’enregistrer manuellement au préalable.

1. Appuyez sur les touches « Alt » + « F11 ».

2. Dans la fenêtre « Microsoft Visual Basic pour Applications » qui s’ouvre, cliquez sur « Insertion » > « Module », puis collez le code VBA suivant dans la fenêtre du 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) À la ligne « .To = xxx@aaa.com », remplacez « xxx@aaa.com » par l’Adresse e-mail réel du destinataire. Si vous avez plusieurs Adresse e-mail, séparez-les par des points-virgules.
2) Modifiez séparément l’Objet de l'email et le corps de l’e-mail dans les lignes « .Subject = "test" » et « .Body = "test" » ;
3) Dans les deux lignes suivantes :
.CC = «Email Address»
.BCC = «Email Address»
Si vous souhaitez ajouter des destinataires en copie conforme (cc) et en copie cachée (bcc), remplacez le texte « "Adresse e-mail" » dans ces lignes par les Adresse e-mail souhaités.
Si vous n’avez pas besoin de destinataires en copie conforme (cc) ni en copie cachée (bcc), ajoutez simplement une apostrophe ' avant chaque ligne.
4) Le nom du Fichiers PDF sera identique à celui 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 inclure l’horodatage dans le nom du fichier, supprimez & Format(Now, «dd-mmm-yy h-mm-ss») de la ligne suivante.
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -[[PH_372]], vbTextCompare) - [[PH_371]])) & Format(Now, «dd-mmm-yy h-mm-ss») & «.pdf»

3. Appuyez sur la touche « F5 » pour exécuter le code. Le classeur actuel est alors automatiquement inséré en pièce jointe dans une nouvelle fenêtre de message sous forme de fichiers PDF. Voir la capture d’écran :

Capture d’écran de la fenêtre de message Outlook avec le classeur actuel joint en tant que fichier PDF


2,1.5 Envoyer le Feuille de calcul actuelle en pièce jointe PDF

Par exemple, vous disposez d’un classeur intitulé « Ventes mensuelles » et vous venez de finaliser un tableau de rapport de ventes dans une feuille nommée « Rapport des ventes ». Vous souhaitez partager cette feuille sous forme de fichier PDF avec vos collègues. Le code VBA suivant vous sera particulièrement utile.

1. Appuyez sur les touches « Alt » + « F11 ».

2. Dans la fenêtre « Microsoft Visual Basic pour Applications » qui s’ouvre, cliquez sur « Insertion » > « Module », puis collez le code VBA suivant dans la fenêtre « Module (Code) ».

Code VBA : Envoyer le Feuille de calcul actuelle en 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) À la ligne « .To = xxx@aaa.com », remplacez « xxx@aaa.com » par l’Adresse e-mail réel du destinataire. Si vous avez plusieurs Adresse e-mail, séparez-les par des points-virgules.
2) Modifiez séparément l’Objet de l'email et le corps de l’e-mail dans les lignes « .Subject = "test" » et « .Body = "test" » ;
3) Dans les deux lignes suivantes :
.CC = «Email Address»
.BCC = «Email Address»
Si vous souhaitez ajouter des destinataires en copie conforme (cc) et en copie cachée (bcc), remplacez le texte « "Adresse e-mail" » dans ces lignes par les Adresse e-mail souhaités.
Si vous n’avez pas besoin de destinataires en copie conforme (cc) ni en copie cachée (bcc), ajoutez simplement une apostrophe ' avant chaque ligne.
4) Le nom du Fichiers PDF sera le suivant : nom du classeur d’origine_nom de la feuille de calcul d’origine. Dans cet exemple, le nom du fichier PDF sera « Ventes mensuelles_rapport des ventes ».

3. Appuyez sur la touche « F5 » pour exécuter le code. La feuille de calcul active est alors automatiquement insérée en pièce jointe dans une nouvelle fenêtre de message sous forme de fichiers PDF. Voir la capture d’écran :

Capture d’écran de la fenêtre de message Outlook avec la feuille de calcul actuelle jointe en tant que fichier PDF


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

En reprenant l’exemple ci-dessus, vous appliquez le code VBA indiqué pour envoyer la feuille de calcul active en pièce jointe au format PDF depuis Excel, mais la signature Outlook ne s’ajoute pas automatiquement dans la fenêtre du message. Pour conserver la signature Outlook par défaut dans l’e-mail envoyé depuis Excel, la méthode suivante vous sera utile.

Deux codes VBA sont présentés ci-dessous.

Code VBA 1 : Ce code permet de préserver votre signature Outlook.

Code VBA 2 : Ce code vous permet d’envoyer la feuille de calcul active en pièce jointe au format PDF.

Code VBA 1 : Conserver la signature Outlook

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

Code VBA 2 : Envoyer le Feuille de calcul actuelle en 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 pour Applications ».

2. Dans la fenêtre « Microsoft Visual Basic pour Applications », cliquez sur « Insertion » > « Module », puis collez le code VBA indiqué ci-dessus dans la fenêtre « Module (Code) ».

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

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

Capture d’écran montrant le code VBA modifié avec la ligne .Body remplacée et .Display placée sous 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. Une nouvelle fenêtre de message s’ouvre alors, avec la feuille de calcul actuelle jointe en tant que fichier PDF, tandis que la signature Outlook par défaut est automatiquement insérée à la fin du corps de l’e-mail.

Capture d’écran d’un e-mail dans Outlook avec la signature par défaut insérée automatiquement à la fin du corps du message


3. Envoyez automatiquement des e-mails depuis Excel dès qu’une condition est remplie (à l’aide de scripts VBA)

Dans les exemples précédents, vous devez exécuter manuellement le code pour envoyer l’e-mail. Si vous souhaitez déclencher automatiquement ce code dès qu’une condition spécifique est remplie — par exemple, lorsqu’une cellule atteint une valeur donnée, lorsqu’une valeur de cellule change ou lorsqu’une date est atteinte — l’e-mail sera envoyé automatiquement. Cette section présente les conditions les plus couramment recherchées par les utilisateurs d’Excel sur Google, afin de vous aider à automatiser l’envoi d’e-mails depuis Excel dès qu’une condition précise est satisfaite.

3,1 Envoyer automatiquement un e-mail lorsqu’une cellule atteint une valeur donnée

Comme le montre la capture d’écran ci-dessous, imaginez que vous disposiez d’un tableau de ventes dont la cellule D6 indique le total des ventes. Vous souhaitez envoyer automatiquement un e-mail à votre supérieur hiérarchique dès que ce total dépasse 10 000 — sans aucune action si le montant est inférieur ou égal à ce seuil.

1. Dans la feuille contenant le tableau de ventes, cliquez avec le bouton droit sur l’onglet de la feuille, puis choisissez « Afficher le code » dans le menu contextuel.

2. Dans la fenêtre « Microsoft Visual Basic pour Applications » qui s’ouvre, collez le code VBA suivant dans la fenêtre « Feuille (Code) ».

Code VBA : Envoyer automatiquement un e-mail lorsqu’une cellule atteint une valeur donnée 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éclenchera l’envoi d’un e-mail.
2) « > 10000 » est la condition, ce qui signifie qu’un e-mail sera envoyé lorsque la valeur de D6 sera supérieure à 10000.
3) « Range("D6") » dans la ligne suivante indique que le corps de l’e-mail fera référence à la valeur de D6.
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
4) À la ligne « .To = xxx@aaa.com », remplacez « xxx@aaa.com » par l’Adresse e-mail réel du destinataire. Si vous avez plusieurs Adresse e-mail, séparez-les par des points-virgules.
5) Modifiez l’Objet de l'email dans la ligne « .Subject = "test" ».
6) Dans les deux lignes suivantes :
.CC = «Email Address»
.BCC = «Email Address»
Si vous souhaitez ajouter des destinataires en copie conforme (cc) et en copie cachée (bcc), remplacez le texte « "Adresse e-mail" » dans ces lignes par les Adresse e-mail souhaités.
Si vous n’avez pas besoin de destinataires en copie conforme (cc) ni en copie cachée (bcc), ajoutez simplement une apostrophe ' avant chaque ligne.

Désormais, chaque fois que la valeur de la cellule D6 dépassera 10 000, un e-mail sera automatiquement généré, comme illustré dans la capture d’écran ci-dessous.

Capture d’écran d’un e-mail créé dans Outlook lorsque la valeur de la cellule D6 dépasse 10000 dans Excel


3,2 Envoyer automatiquement un e-mail lorsqu’une valeur de cellule change

Comme le montre la capture d’écran ci-dessous, imaginez que vous receviez un classeur comprenant les ventes mensuelles réparties dans plusieurs feuilles, ainsi qu’un total des ventes figurant dans une feuille dédiée. Votre mission : vérifier ce total et, s’il a été modifié, renvoyer le classeur à l’expéditeur en l’informant que la cellule concernée a été altérée.

1. Dans la feuille de calcul contenant le tableau des ventes, cliquez avec le bouton droit sur l’onglet de la feuille, puis sélectionnez « Afficher le code » dans le menu contextuel.

2. Dans la fenêtre « Microsoft Visual Basic pour 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 spécifique de cellule 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

Remarques : Dans le code,

1) « B14 » dans le code signifie que lorsqu’une modification est apportée à la valeur de la cellule B14, un e-mail sera envoyé.
2) À la ligne « .To = xxx@aaa.com », remplacez « xxx@aaa.com » par l’Adresse e-mail réel du destinataire. Si vous avez plusieurs Adresse e-mail, séparez-les par des points-virgules.
3) Modifiez l’Objet de l'email dans la ligne « .Subject = "Worksheet modified" ».
4) Dans les deux lignes suivantes :
.CC = «Email Address»
.BCC = «Email Address»
Si vous souhaitez ajouter des destinataires en copie conforme (cc) et en copie cachée (bcc), remplacez le texte « "Adresse e-mail" » dans ces lignes par les Adresse e-mail souhaités.
Si vous n’avez pas besoin de destinataires en copie conforme (cc) ni en copie cachée (bcc), ajoutez simplement une apostrophe ' avant chaque ligne.

Désormais, chaque modification de la valeur de la cellule B14 déclenche automatiquement la création d’un message Outlook, comme le montre la capture d’écran ci-dessous.

Capture d’écran d’un e-mail créé dans Outlook lorsque la valeur de la cellule B14 change


3,3 Envoyer automatiquement un e-mail lorsqu’un classeur est enregistré

Si vous disposez d’un classeur devant être partagé avec d’autres personnes après modification, vous devez normalement l’enregistrer, lancer votre client de messagerie, créer un Nouveau email avec ce classeur en pièce jointe, remplir les champs correspondants, puis envoyer l’e-mail. Cette section vous montre une méthode permettant de créer automatiquement un e-mail à chaque enregistrement du classeur. Procédez comme suit.

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

2. Dans cette fenêtre, double-cliquez sur « Ce classeur » dans le volet « Projet », puis collez le code VBA suivant dans la fenêtre « Ce classeur (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

Remarques : Dans le code,

1) À la ligne « .To = xxx@aaa.com », remplacez « xxx@aaa.com » par l’Adresse e-mail réel du destinataire. Si vous avez plusieurs Adresse e-mail, séparez-les par des points-virgules.
2) Modifiez séparément l’Objet de l'email et le corps du message dans les lignes « .Subject = "The workbook has been updated"" and ".Body = "Hi," & Chr([[PH_422]]) & Chr(13) & "Le fichier a été mis à jour." ».
3) Dans les deux lignes suivantes :
.CC = «Email Address»
.BCC = «Email Address»
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (bcc), remplacez le texte « Adresse e-mail » dans ces lignes par les Adresse e-mail souhaités.
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, à chaque enregistrement du classeur (en appuyant sur « Ctrl » + « S » ou en cliquant sur le bouton « Enregistrer »), un e-mail Outlook est automatiquement généré, avec le classeur actuel joint en pièce jointe et les champs préremplis selon vos spécifications. Voir la capture d’écran :

Capture d’écran montrant un e-mail Outlook avec le classeur actuel en pièce jointe, prêt à être envoyé automatiquement

Conseil : Si vous utilisez fréquemment ce classeur, nous vous recommandons de l’enregistrer au format « Classeur Excel prenant en charge les macros » afin de conserver le script VBA pour vos utilisations futures. Voici la procédure à suivre.

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 de fichier », sélectionnez « Classeur Excel prenant en charge les macros » dans la liste déroulante « Spécifier le format d'enregistrement » Liste déroulante, puis cliquez sur le bouton « Enregistrer ». Voir la capture d’écran :

Capture d’écran de la boîte de dialogue « Enregistrer sous » dans Excel affichant l’option pour enregistrer le classeur en tant que classeur Excel prenant en charge les macros


3,4 Envoyer automatiquement un e-mail à une heure précise

Imaginez devoir envoyer chaque vendredi matin à 9 heures un classeur contenant une affectation de tâches à une personne, et souhaiter automatiser cette opération directement depuis Excel, sans manipuler manuellement votre client de messagerie. Cette section vous explique précisément comment procéder.

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

2. Dans la fenêtre « Microsoft Visual Basic pour Applications », cliquez sur « Insertion » > « Module », puis collez le code VBA suivant dans la fenêtre du 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 « Ce classeur » dans le volet « Projet », puis collez le code VBA suivant dans la fenêtre « Ce classeur (Code) ».

Capture d’écran de l’éditeur de code VBA avec l’événement « Workbook_Open » et la fonction « Application.OnTime » pour planifier l’envoi d’e-mails

Code VBA 2 : Envoyer automatiquement un e-mail à une heure précise

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

Remarques :

1) Dans le code VBA 1, « Friday » dans la ligne suivante signifie que l’e-mail sera envoyé automatiquement chaque vendredi ;
If Weekday(Date) = vbFriday Then
2) Dans le code VBA 1 et le code VBA 2, l’heure « 09:00:00 » indique que l’e-mail sera envoyé à 9 heures un jour donné.
Vous pouvez modifier le jour et l’heure selon vos besoins.
3) Lorsque le code s’exécute, un e-mail est créé. Si vous ne souhaitez pas que la fenêtre de message s’ouvre et que vous désirez l’envoyer directement, supprimez la ligne « .Display » du code VBA 1 et supprimez l’apostrophe devant la ligne « .Send ».

4. Enregistrez les codes, puis sauvegardez le classeur au format Classeur Excel prenant en charge les macros, 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 de fichier », sélectionnez « Classeur Excel prenant en charge les macros » dans la liste déroulante « Spécifier le format d'enregistrement » Liste déroulante, puis cliquez sur le bouton « Enregistrer ». Voir la capture d’écran :

Capture d’écran de la boîte de dialogue « Enregistrer sous » dans Excel affichant l’option pour enregistrer le classeur en tant que classeur Excel prenant en charge les macros

5. Ouvrez votre classeur compatible avec les macros que vous avez enregistré ; un e-mail sera alors automatiquement créé ou envoyé dès que la date et l’heure prévues seront atteintes.


4. Rubriques complé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’un tableau des ventes mensuelles figure dans une feuille Excel, comme illustré dans la capture d’écran ci-dessous, et que vous deviez l’envoyer à des destinataires soit directement dans le corps d’un e-mail, soit en pièce jointe. Nous vous proposons ici deux méthodes pour y parvenir.

4,1.1 Envoyer une plage de cellules dans le corps de l’e-mail depuis Excel

Vous pouvez exécuter le code VBA suivant pour insérer une plage de cellules directement dans le corps d’un e-mail depuis Excel.

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

2. Dans la fenêtre « Microsoft Visual Basic pour Applications », cliquez sur « Outils » > « Références », cochez la case « Microsoft Outlook 16,0 Object Library », puis validez par « OK » dans la boîte de dialogue « Références – VBAProject ».

3. Cliquez sur « Insertion » > « Module », puis collez le code VBA suivant dans la fenêtre « Module (Code) ».

Code VBA : Envoyer une plage de cellules dans le corps de l’e-mail 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

Remarques : 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 plusieurs Adresse e-mail, séparez-les par des points-virgules.
2) Dans les deux lignes suivantes :
.CC = «Email Address»
.BCC = «Email Address»
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (bcc), remplacez le texte « Adresse e-mail » dans ces lignes par les Adresse e-mail souhaités.
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.

4. Appuyez sur la touche « F5 » pour exécuter le code. Dans la boîte de dialogue « Kutools pour Excel » qui s’ouvre, sélectionnez la plage de cellules que vous souhaitez insérer dans le corps d’un e-mail, puis cliquez sur « OK ». Voir la capture d’écran :

Capture d’écran de la boîte de dialogue Kutools for Excel dans laquelle une plage de cellules est sélectionnée pour être envoyée dans le corps d’un e-mail

Un e-mail Outlook est alors automatiquement généré. Vous remarquerez que la plage sélectionnée dans la feuille de calcul apparaît directement dans le corps du message. Voir la capture d’écran :

Capture d’écran d’un e-mail Outlook avec la plage sélectionnée depuis Excel insérée dans le corps du message


4,1.2 Envoyer une plage de cellules en pièce jointe depuis Excel

Si vous souhaitez envoyer une plage de cellules d’une feuille de calcul en pièce jointe directement depuis Excel, essayez le code VBA suivant.

1. Appuyez simultanément sur les touches « Alt » et « F11 ».

2. Dans la fenêtre « Microsoft Visual Basic pour Applications » qui s’ouvre, cliquez sur « Insertion » > « Module », puis collez le code VBA suivant dans la fenêtre « Module (Code) ».

Code VBA : Envoyer une plage de cellules en 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 », remplacez « xxx@aaa.com » par l’Adresse e-mail réelle du destinataire. Si vous avez plusieurs Adresse e-mail, séparez-les par des points-virgules.
2) Modifiez séparément l’Objet de l'email et le corps de l’e-mail dans les lignes « .Subject = "Ventes mensuelles pour 2021" » et « .Body = "Bonjour, veuillez consulter et lire ce document." » ;
3) Dans les deux lignes suivantes :
.CC = «email address»
.BCC = «email address»
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (bcc), remplacez le texte « Adresse e-mail » dans ces lignes par les Adresse e-mail souhaités.
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 pour Excel » qui s’ouvre, sélectionnez la plage de cellules que vous souhaitez joindre à un e-mail, puis cliquez sur « OK ». Voir la capture d’écran :

Capture d’écran de la boîte de dialogue Kutools for Excel dans laquelle une plage de cellules est sélectionnée pour être envoyée en pièce jointe d’un e-mail

Un e-mail Outlook est alors automatiquement créé. La plage de cellules sélectionnée dans la feuille de calcul est enregistrée en tant que fichier classeur Excel et jointe à la fenêtre du message. Voir la capture d’écran :

Capture d’écran d’un e-mail Outlook avec la plage sélectionnée depuis Excel enregistrée en pièce jointe


4,2 Envoyer des e-mails en cliquant sur un bouton dans Excel

Si vous souhaitez déclencher une macro d’envoi d’e-mail depuis Excel en cliquant sur un bouton de commande — par exemple, envoyer le classeur actuel en pièce jointe à des destinataires en un seul clic sur un bouton placé dans la feuille de calcul — suivez les étapes ci-dessous pour y parvenir.

1. Cliquez sur « Développeur » > « Insérer » > « Bouton de commande (contrôle ActiveX) », puis dessinez un bouton de commande directement dans la feuille de calcul.

Conseil : si vous disposez déjà d’un bouton de commande, ignorez cette étape.

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

Cliquez ici pour obtenir votre code.

Remarque : dans cet exemple, la macro créée à l’étape 2 s’appelle « SendWorkbook ».

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

4. Vous devez maintenant affecter la macro au bouton de commande. Cliquez droit sur le bouton, puis choisissez « Afficher le code » dans le menu contextuel.

5. La fenêtre « Microsoft Visual Basic pour Applications » s’ouvre alors, affichant les deux lignes suivantes dans la fenêtre « Feuille (Code) ».

Private Sub CommandButton1_Click()
End Sub

Capture d’écran de la fenêtre Microsoft Visual Basic pour Applications affichant le code CommandButton1_Click

6. Saisissez le nom de la macro existante dans la sous-procédure liée au bouton de commande.

Capture d’écran de la modification du code VBA pour attribuer une macro existante au bouton de commande

7. Appuyez sur les touches « Alt » + « Q » pour fermer l’« Éditeur Visual Basic », puis cliquez sur « Développeur » > « Mode Création » afin de désactiver ce mode.

Capture d’écran de la désactivation du mode Création dans l’onglet Développeur

Vous pouvez désormais cliquer sur le bouton de commande pour envoyer un e-mail avec le classeur actuel en pièce jointe.


4,3 Envoyer des e-mails depuis un compte e-mail spécifique

Par défaut, lorsqu’un e-mail est envoyé depuis Excel via un code VBA, l’expéditeur correspond au compte par défaut configuré dans Outlook. Si vous avez plusieurs comptes e-mail définis dans Outlook et que vous souhaitez utiliser un compte spécifique — plutôt que le compte par défaut — pour envoyer des messages depuis Excel, le code VBA suivant vous permet de le faire.

Les codes suivants sont requis 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 une ligne telle que « Dim OutlookMail As Object » par le code VBA 1 ;
2) Ajoutez le code VBA 2 sous 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 configurer un compte e-mail spécifique pour envoyer le classeur actuel en pièce jointe depuis Excel. Suivez ces étapes :

1. Appuyez sur les touches « Alt » + « F11 ». Dans la fenêtre « Microsoft Visual Basic pour Applications », cliquez sur « Outils » > « Références », cochez la case « Microsoft Outlook 16,0 Object Library », puis validez par « OK » dans la boîte de dialogue « Références – VBAProject ».

Capture d’écran de la boîte de dialogue « Références – VBAProject » dans Excel avec l’option Bibliothèque d’objets Microsoft Outlook 16.0 sélectionnée

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

Code VBA : Envoyer le Classeur actuel en pièce jointe d’un e-mail depuis Excel via un compte Outlook spécifique

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. Une fenêtre de message Outlook s’ouvre alors, avec le champ « De » automatiquement renseigné par le compte e-mail que vous avez spécifié dans le code.


4,4 Envoyer un e-mail lorsqu’une date est atteinte

Si vous devez envoyer un e-mail en fonction d’une date d’échéance spécifique — comme illustré dans la capture d’écran ci-dessous, où figure un tableau de projets — un message est automatiquement adressé aux responsables concernés dès que la date d’échéance (dans la plage E2:E7) tombe à 7 jours ou moins de la date du jour (ici le 4/8/2022), pour les avertir que leur projet arrive à expiration.

1. Dans la feuille contenant le tableau de projets, cliquez avec le bouton droit sur l’onglet de la feuille, puis choisissez « Afficher le code » dans le menu contextuel.

2. Dans la fenêtre « Microsoft Visual Basic pour Applications » qui s’ouvre, collez le code VBA suivant dans la fenêtre « Feuille (Code) ».

Code VBA : Envoyer automatiquement un e-mail lorsqu’une Date d'échéance est remplie

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

Remarques : Dans le code,

1) Dans les lignes suivantes, « E2:E7 » contient les Date d'échéance sur lesquelles vous allez baser l’envoi des e-mails. « C2:C7 » contient les Adresse e-mail auxquels vous allez envoyer les e-mails. Et « D2:D7 » contient les remarques que vous ajouterez dans le corps de l’e-mail pour informer les destinataires que le projet arrive bientôt à expiration. Vous pouvez modifier ces plages selon vos besoins.
Set xRgDate = Range("E2:E7")
Set xRgSend = Range("C2:C7")
Set xRgText = Range("D2:D7")
2) La ligne suivante signifie que les Date d'échéance doivent être supérieures à 1 jour et inférieures ou égales à 7 jours à compter d’aujourd’hui. Vous pouvez la modifier selon vos besoins.
If CDate(xRgDateVal) - Date 0 Then
3) Dans la ligne « .To = xxx@aaa.com », remplacez « xxx@aaa.com » par l’Adresse e-mail réelle du destinataire. Si vous avez plusieurs Adresse e-mail, séparez-les par des points-virgules.
4) Modifiez l’Objet de l'email dans la ligne « .Subject = "Feuille de calcul modifiée" ».
5) Dans les deux lignes suivantes :
.CC = «Email Address»
.BCC = «Email Address»
Si vous souhaitez ajouter des destinataires en copie (cc) et en copie cachée (bcc), remplacez le texte « Adresse e-mail » dans ces lignes par les Adresse e-mail souhaités.
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. Si la Date d'échéance correspond aux conditions définies, l’e-mail correspondant est créé. Dans ce cas, deux e-mails sont créés, comme illustré dans la capture d’écran ci-dessous.

Capture d’écran de deux e-mails créés automatiquement selon des conditions de correspondance de date d’expiration dans Excel


5. Un outil pratique pour vous permettre d’envoyer facilement des e-mails depuis Excel

Si vous débutez avec VBA, les méthodes décrites ci-dessus peuvent sembler complexes à mettre en œuvre. Nous vous recommandons donc notre fonctionnalité Envoyer des e-mails de « Kutools pour Excel », qui vous permet d’envoyer facilement des e-mails depuis Excel en quelques clics seulement. Voici comment procéder.

Kutools pour Excelpropose plus de 300 fonctionnalités avancées pour simplifier les tâches complexes, stimulant ainsi créativité et efficacité.Intégré aux capacités de l’IA, Kutools automatise les tâches avec précision, rendant la gestion des données parfaitement fluide.Informations détaillées sur Kutools pour Excel...         Essai gratuit...
5,1 Créez facilement un Liste des emails comprenant les champs e-mail nécessaires

Avant d’utiliser la fonctionnalité « Envoyer des e-mails », vous devez créer une liste d’e-mails contenant les champs requis. La fonctionnalité « Créer une liste de diffusion » est là pour 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, configurez les éléments suivants.

2,1) Dans la section « Sélectionnez les colonnes à inclure dans la liste de diffusion », cochez les champs que vous souhaitez inclure dans votre e-mail ;
2,2) Dans la section « Pièce jointe », cochez une ou plusieurs pièces jointes dont vous pourriez avoir besoin ;
2,3) Spécifiez un emplacement où placer les Liste des emails ;
2,4) Cliquez sur le bouton « Créer ». Voir la capture d’écran :

Un tableau de type « Liste des e-mails » est alors créé, comme le montre la capture d’écran ci-dessous.

3. Vous devez maintenant remplacer les données d’origine de l’exemple par vos propres informations.

Vous avez maintenant créé un tableau « Liste des e-mails ». Passez à l’étape suivante pour appliquer la fonctionnalité « Envoyer des e-mails » et envoyer vos messages directement depuis Excel, en utilisant les champs que vous avez définis.

Kutools pour Excel– Boostez Excel avec plus de 300 outils essentiels, pour gagner en rapidité et en simplicité, et profitez des fonctionnalités d’intelligence artificielle pour un traitement de données plus intelligent et une productivité accrue.Obtenez-le dès maintenant


5,2 Envoyez facilement des e-mails incluant les champs que vous avez créés dans le Liste des emails

Après avoir créé la liste d’e-mails ()cliquez pour savoir comment) contenant les champs dont vous pourriez avoir besoin dans vos e-mails, vous pouvez désormais envoyer des messages depuis Excel à l’aide de ces champs.

1. Sélectionnez l’intégralité de la liste d’e-mails, puis cliquez sur « KUTOOLS PLUS » > « Envoyer des e-mails ».

2. Dans la boîte de dialogue « Envoyer des e-mails », suivez les étapes ci-dessous.

2,1) Les champs sont automatiquement renseignés dans la boîte de dialogue de chaque champ à partir des champs que vous avez spécifiés dans le Liste des emails ;
Conseil : si vous n’avez pas besoin d’un champ spécifique à ce moment-là, choisissez une option vide dans le Liste déroulante.
2,2) « Insérer un espace réservé » (facultatif) : si vous devez insérer des informations variables dans le corps de l’e-mail.
Par exemple, si vous devez envoyer un e-mail à plusieurs destinataires en personnalisant le prénom de chacun, placez le curseur dans le corps de l’e-mail à l’endroit où vous souhaitez insérer l’espace réservé, sélectionnez le champ « E : Prénom » (ou tout autre champ contenant un pré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 identique, mais les prénoms sont uniques pour chacun.
2,3) Rédigez le corps de l’e-mail selon vos besoins ;
2,4) Vérifiez que la case « Envoyer avec Outlook » est cochée ;
2,5) Cliquez sur le bouton « Envoyer ». Voir la capture d’écran :

3. Une boîte de dialogue « Kutools pour Excel » s’affiche alors, indiquant le nombre d’e-mails envoyés ; cliquez sur « OK » pour la fermer.

Conseil : consultez le dossier « Éléments envoyés » dans Outlook pour retrouver facilement les e-mails que vous avez envoyés.


5,3 Envoyez facilement des e-mails avec un corps en HTML (incluant des liens hypertexte, des images, etc.)

La fonctionnalité « Envoyer des e-mails » vous permet de rédiger un message en HTML, enrichi de liens hypertexte, d’images, de différentes tailles et couleurs de police, et bien plus encore.

Après avoir créé une liste d’e-mails incluant les champs d’e-mail nécessaires, lorsque vous configurez la boîte de dialogue « Envoyer des e-mails », vous pouvez enrichir le contenu du corps du message à l’aide des options disponibles dans la barre d’outils.

Voir la capture d’écran ci-dessous :


5,4 Insérez facilement la signature par défaut d’Outlook lors de l’envoi d’e-mails

Dans la méthode présentée ci-dessus, nous avons illustré l’utilisation d’un code VBA pour vous permettre d’envoyer des e-mails intégrant automatiquement la signature par défaut d’Outlook. Grâce à la fonctionnalité « Envoyer des e-mails », il vous suffit désormais de cocher une case pour que cette signature soit ajoutée automatiquement aux messages envoyés depuis Excel.

Après avoir créé une liste d’e-mails incluant les champs d’adresse e-mail requis, cliquez sur « Options » > « Utiliser les paramètres de signature d’Outlook » lors de la configuration de la boîte de dialogue « Envoyer des e-mails ».

Remarque : veillez à ce qu’une coche apparaisse bien devant l’option « Utiliser les paramètres de signature d’Outlook ».

Lorsque les destinataires reçoivent l’e-mail, la signature par défaut d’Outlook s’affiche automatiquement à la fin du message.


5,5 Envoyez facilement des e-mails depuis un compte e-mail spécifique

Pour envoyer des e-mails depuis Excel à l’aide d’un compte e-mail spécifique plutôt que du compte par défaut, la fonctionnalité « Envoyer des e-mails » vous le permet facilement.

Après avoir créé une liste d’e-mails comprenant les champs d’adresse e-mail requis, lors de la configuration de la boîte de dialogue « Envoyer des e-mails », cliquez sur « Options » > « Envoyé depuis », puis sélectionnez le compte e-mail à partir duquel vous souhaitez envoyer vos messages.

Remarque : une coche apparaît devant le compte e-mail une fois celui-ci sélectionné.

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

Kutools pour Excel– Boostez Excel avec plus de 300 outils essentiels, pour gagner en rapidité et en simplicité, et profitez des fonctionnalités d’intelligence artificielle pour un traitement de données plus intelligent et une productivité accrue.Obtenez-le dès maintenant

En conclusion, l’envoi d’e-mails depuis Excel s’avère extrêmement utile dans notre travail quotidien. Cet article aborde des sujets plus complets liés à cette fonctionnalité. Si vous connaissez d’autres approches ou des solutions encore plus simples, n’hésitez pas à partager vos idées en laissant un commentaire !

Meilleurs outils de productivité Office

🤖Kutools IA Aide: Révolutionnez Analyse des données grâce à :Exécution intelligente   |  Générez du code|  Créez formules personnalisées  |  Analysez des données et générez des graphiques|  Appelez Fonctions améliorées
Fonctionnalités populaires:Rechercher, mettre en surbrillance ou Marquer les doublons   |  Supprimer les lignes vides   |  Combinez les colonnes ou cellules sans perdre de données   |   Arrondi sans utiliser de formule...
Super RECHERCHEV:RechercheValeurs avec critères multiples  |  RechercheValeurs avec valeurs multiples  |   RechercheValeurs dans plusieurs feuilles   |   Correspondance floue....
Liste déroulante avancée:Créez rapidement une liste déroulante   |  Liste déroulante dépendante   |  Liste déroulante à sélection multiple....
Gestionnaire de colonnes:Ajouter un nombre précis de colonnes|Déplacer des colonnes|Basculer la visibilité des colonnes masquées|Comparer des plages et des colonnes...
Fonctionnalités vedettes:Mise au point de la grille   |  Vue de conception   |Barre de formule améliorée   | Gestionnaire de classeurs et de feuilles   |  Bibliothèque de ressources(Texte automatique)|  Sélecteur de date   |  Consolider les feuilles de calcul  |  Chiffrer/Déchiffrer les cellules   | Envoyer des e-mails par liste   |  Super Filtre   |   Filtre spécial(Filtrer les cellules avec une police en gras/italique/barré...) ...
… et bien plus encore… et plus encore:(,)Supprimer des caractères spécifiques, ...)|   50+Typesde graphiques(, ...)|   40+ Formules pratiques(Calculer l'âge en fonction de la date de naissance, ...)|   19 Outils d’insertion(,Insérer une image depuis un chemin , ...)|   de conversion (Convertir en mots,Conversion de devises, ...)|Fusionner et scinder   (Fusion avancée des lignes,Diviser les cellules , ...)|, ...)   |
Utilisez Kutools dans la langue de votre choix – disponible en anglais, espagnol, allemand, français, chinois et 40+ autres langues !

Boostez vos compétences Excel avec Kutools pour Excel et découvrez une efficacité inégalée.Kutools pour Excel propose plus de 300 fonctionnalités avancées pour améliorer votre 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 rend votre travail bien plus facile

  • Activez l’édition 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é de 50 % et vous fait économiser des centaines de clics de souris chaque jour !

Tous les compléments Kutools. Un seul installateur

Kutools for Office regroupe les compléments pour Excel, Word, Outlook et PowerPoint, ainsi que Office Tab Pro, ce qui en fait le choix idéal pour les équipes travaillant à travers les applications Office.

ExcelWordOutlookTabsPowerPoint
  • Suite tout-en-un— Compléments Excel, Word, Outlook et PowerPoint + Office Tab Pro
  • Un seul installateur, une seule licence— installation en quelques minutes (compatible MSI)
  • Fonctionne mieux ensemble— productivité optimisée dans toutes les applications Office
  • Essai gratuit de 30 jours avec toutes les fonctionnalités— aucune inscription, aucune carte bancaire
  • Meilleur rapport qualité-prix— économisez par rapport à l’achat de compléments individuels