Astuce: Les autres langues sont Google-Traduction. Vous pouvez visiter le English version de ce lien.
Se connecter
x
or
x
x
S'enregistrer
x

or

Comment envoyer automatiquement un e-mail en fonction de la valeur de la cellule dans Excel?

Supposons que vous souhaitiez envoyer un courrier électronique via Outlook à un destinataire donné en fonction d'une valeur de cellule spécifiée dans Excel. Par exemple, lorsque la valeur de la cellule D7 dans une feuille de calcul est supérieure à 200, un courrier électronique est créé automatiquement. Cet article présente une méthode VBA pour vous permettre de résoudre rapidement ce problème.

Envoie automatiquement un e-mail en fonction de la valeur de la cellule avec le code VBA


Envoyez facilement des e-mails via Outlook en fonction des champs de la liste de diffusion créée dans Excel:

Le bouton Envoyer des emails utilité de Kutools for Excel aide les utilisateurs à envoyer des courriels via Outlook en fonction de la liste de diffusion créée dans Excel. Téléchargez dès maintenant la totalité des fonctionnalités de Kutools pour Excel pendant la journée 60!

  • Créez une liste de diffusion avec tous les champs de courrier nécessaires et sélectionnez-les tous.
  • Activez la fonction Envoyer des e-mails et remplissez le corps de votre e-mail.
  • Envoyer via Outlook.

Kutools for Excel: avec plus que 200 compléments Excel pratiques, libre d'essayer sans limitation dans les jours 60. Téléchargez l'essai gratuit maintenant!


Envoie automatiquement un e-mail en fonction de la valeur de la cellule avec le code VBA

Veuillez faire comme suit pour envoyer un email basé sur la valeur de la cellule dans Excel.

1. Dans la feuille de calcul, vous devez envoyer un e-mail en fonction de sa valeur de cellule (ici indique la cellule D7), cliquez avec le bouton droit sur l'onglet de la feuille et sélectionnez Voir le code dans le menu contextuel. Voir la capture d'écran:

2. Dans le popping up Microsoft Visual Basic pour applications fenêtre, s'il vous plaît copiez et collez le code VBA ci-dessous dans la fenêtre de code de feuille.

Code VBA: Envoyer un e-mail via Outlook en fonction de la valeur de la cellule dans Excel

Dim xRg As Range
'Update by Extendoffice 2018/3/7
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
  Set xRg = Intersect(Range("D7"), Target)
    If xRg Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) And Target.Value > 200 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 there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
    On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = "send by cell value test"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Remarques:

1. Dans le code VBA, D7 et valeur> 200 sont la valeur de la cellule et de la cellule que vous enverrez par email.

2. Veuillez modifier le corps de l'e-mail selon vos besoins xMailBody ligne dans le code.

3. Remplacer l'adresse e-mail avec l'adresse e-mail du destinataire en ligne .To = "Adresse e-mail".

4. Et spécifiez les destinataires Cc et Cci comme vous le souhaitez .CC = "" et Bcc = "" sections.

5. Enfin, modifiez le sujet de l'e-mail en ligne .Subject = "envoi par test de valeur de cellule".

3. appuie sur le autre + Q clés ensemble pour fermer le Microsoft Visual Basic pour applications fenêtre.

À partir de maintenant, lorsque la valeur que vous entrez dans la cellule D7 est supérieure à 200, un courrier électronique avec des destinataires et un corps spécifiés sera créé automatiquement dans Outlook. Vous pouvez cliquer sur le Envoyer bouton pour envoyer cet email. Voir la capture d'écran:

Remarques:

1. Le code VBA ne fonctionne que lorsque vous utilisez Outlook comme programme de messagerie.

2. Si les données saisies dans la cellule D7 sont des valeurs textuelles, la fenêtre d'e-mail sera également supprimée.


Office Tab - Navigation par onglets, édition et gestion de classeurs dans Excel:

Office Tab propose une interface à onglets comme celle des navigateurs Web tels que Google Chrome, les nouvelles versions d'Internet Explorer et Firefox pour Microsoft Excel. Ce sera un outil qui vous permettra de gagner du temps et d’être irremplaçable dans votre travail. Voir ci-dessous la démo:

Cliquez pour l'essai gratuit de l'onglet Office!

Onglet Office pour Excel


Articles Liés:



Outils de productivité recommandés

Office Tab

étoile d'or1 Apportez des onglets pratiques à Excel et à d'autres logiciels Office, tout comme Chrome, Firefox et Internet Explorer.

Kutools for Excel

étoile d'or1 Incroyable! Augmentez votre productivité dans les minutes 5. Ne nécessite pas de compétences particulières, économisez deux heures par jour!

étoile d'or1 300 Nouvelles fonctionnalités pour Excel, rendent Excel facile et puissant:

  • Fusionner des cellules / lignes / colonnes sans perdre de données.
  • Combiner et consolider plusieurs feuilles et classeurs.
  • Comparez les gammes, copiez plusieurs gammes, convertissez le texte en date, l'unité et la conversion de devise.
  • Compter par couleurs, sous-totaux de recherche, tri avancé et super filtre,
  • Plus Sélectionner / Insérer / Supprimer / Texte / Format / Lier / Commenter / Classeurs / Feuilles de calcul Outils ...

Capture d'écran de Kutools pour Excel

Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    S.Balasubramanian · 8 months ago
    Vendor ID Order no Part qty pending
    abc@gmail.com 6542684 apple 78 45
    abc@gmail.com 8786854 orange 45 0
    def@gmail.com 651654 Letter 1245 148
    def@gmail.com 898882 cover 547 65

    from the above excel sheet data

    i have to send mail to abc@gmail.com and def@gmail.com with their respective line

    condition is "pending" value should be greater than 0

    Guide me how to do it
    • To post as a guest, your comment is unpublished.
      crystal · 7 months ago
      Hi,
      Please try the below VBA code, hope it can help. Thanks for your comment.

      Dim xRg As Range
      Private Sub Worksheet_Change(ByVal Target As Range)
      On Error Resume Next
      If Target.Cells.Count > 1 Then Exit Sub
      For Each xRg In Range("E2:E5")
      If CInt(xRg.Value) > 0 Then
      Call Mail_small_Text_Outlook
      End If
      Next
      End Sub
      Sub Mail_small_Text_Outlook()
      Dim xOutApp As Object
      Dim xOutMail As Object
      Dim xMailBody As String
      Dim xIntR As Integer
      xIntR = xRg.Row
      Set xOutApp = CreateObject("Outlook.Application")
      Set xOutMail = xOutApp.CreateItem(0)
      xMailBody = "Hi there" & vbNewLine & vbNewLine & _
      "ID Order no. :" & Range("B" & xIntR).Value & vbNewLine & _
      "Part :" & Range("C" & xIntR).Value & vbNewLine & _
      "Qty :" & Range("D" & xIntR).Value & vbNewLine
      On Error Resume Next
      With xOutMail
      .To = Range("A" & xIntR).Value
      .CC = ""
      .BCC = ""
      .Subject = "send by cell value test"
      .Body = xMailBody
      .Display 'or use .Send
      End With
      On Error GoTo 0
      Set xOutMail = Nothing
      Set xOutApp = Nothing
      End Sub
  • To post as a guest, your comment is unpublished.
    Kennedy · 9 months ago
    I have the code running correctly for when a cell within a range of cells drops below a 1.The problem is that the cells I am referencing use a formula. And when a value that is part of the formula is changed and the cell referenced in the code drops below 1, an email is not sent. The email will only be prompted when the cell itself is changed. How do I code for this?


    Thanks
    • To post as a guest, your comment is unpublished.
      crystal · 8 months ago
      Hi Kennedy,
      The following VBA code can help you solve the problem. Please don't forget to replace the "Email Address" with the recipient's email address in the code. Thank you.

      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim xRgPre As Range
      On Error Resume Next
      If Target.Cells.Count > 1 Then Exit Sub
      Set xRg = Range("D7")
      Set xRgPre = xRg.Precedents
      If xRg.Value > 200 Then
      If Target.Address = xRg.Address Then
      Call Mail_small_Text_Outlook
      ElseIf (Not xRgPre Is Nothing) And (Intersect(Target, xRgPre).Address = Target.Address) Then
      Call Mail_small_Text_Outlook
      End If
      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 there" & vbNewLine & vbNewLine & _
      "This is line 1" & vbNewLine & _
      "This is line 2"
      On Error Resume Next
      With xOutMail
      .To = "Email Address"
      .CC = ""
      .BCC = ""
      .Subject = "send by cell value test"
      .Body = xMailBody
      .Display 'or use .Send
      End With
      On Error GoTo 0
      Set xOutMail = Nothing
      Set xOutApp = Nothing
      End Sub
      • To post as a guest, your comment is unpublished.
        Zamiur Rahman · 7 months ago
        Hi Crystal,
        Thank you for the code. I was trying to use your code to send an email notification. The challenge is however, I have values in column F7 to F300 (some of the cells are blank in column F) which are formulas calculating the remaining days to certain deadlines. So, everyday the values in column F will decrease by 1. I would like to get a notification email where there are only 7 days left to the deadlines. Also, in the xMailBody, I would like to have texts referencing from the excel spreadsheet (like the project name which is going to be due and in how many days). Can this reminder email work even when excel is not running?
        I would appreciate very much your time if you kindly help me to solve the issue.
        Regards,
        Rahman
  • To post as a guest, your comment is unpublished.
    wu · 9 months ago
    Hi.

    I am wondering whether it is possible to tailor the first line of each email. For example, in my excel sheet I have a column with title such as Mr., a column with last name such as Black.
    I want to send out emails automatically with the first line: Dear Mr. Black
    for the others the first line will be accordingly dear ms. White....etc..


    Will that be possible to change the wording in the body of the email. That is my issue here.


    Thanks a lot
  • To post as a guest, your comment is unpublished.
    ExcelEnthusiast · 9 months ago
    I have a requirement to send over 50 email. Below are conditions:-


    1. Each workbook will be send as a separate email.
    2. Each email will have different recipient for To, CC and BCC.
    3. Each email will have different subject based on workbook/worksheet name.
    4. Each email will have different body based on date & subject.


    Now, a table can be made in excel which will list all points from 1-4 in different columns as a master data table. I can achieve this part.


    Can there be a macro which can read this table and create separate emails by adding attachments from a path?


    This will be a great help and save tremendous amount of time.
  • To post as a guest, your comment is unpublished.
    Justin Patterson · 10 months ago
    I have a worksheet that has about 20 columns of data, but I only have two that I want to focus on here. Column D is lot number and Column Z is priority. I would like excel to send and email when Column Z has a priority of “HOT” and send an email including the associated lot number in Column D. It will either be HOT or blank so nothing needs to be done unless it is HOT. I would like the Email to go to about 5 people and say something along the lines of “Hello Team, Lot “xxxx’s” Priority has changed to HOT, please prioritize this lot.


    Is it possible to have it look up the lot number associated to the priority and place it in the text like that. If not maybe have the subject of the email be the associated lot number and then have the text just be as it was without the lot number.
    • To post as a guest, your comment is unpublished.
      crystal · 9 months ago
      Hi Patterson,
      The below VBA code can help you solve the problem. Please have a try. Thank you for your comment.

      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim xRg As Range
      On Error Resume Next
      If (Target.Count > 1) Then Exit Sub
      Set xRg = Intersect(Target, Range("Z:Z"))
      If xRg Is Nothing Then Exit Sub
      If UCase(Target.Value) = "HOT" Then
      Call Mail_small_Text_Outlook(Target)
      End If
      End Sub
      Sub Mail_small_Text_Outlook(ByVal xCell As Range)
      Dim xOutApp As Object
      Dim xOutMail As Object
      Dim xMailBody As String
      Set xOutApp = CreateObject("Outlook.Application")
      Set xOutMail = xOutApp.CreateItem(0)
      xMailBody = "Hello Team" & vbNewLine & vbNewLine & _
      "Lot " & Range("D" & xCell.Row) & "'s Priority has changed to HOT, please prioritize this lot."
      On Error Resume Next
      With xOutMail
      .To = "Email Address1; Email Address2; Email Address3; Email Address4; Email Address5"
      .CC = ""
      .BCC = ""
      .Subject = "Lot number is " & Range("D" & xCell.Row)
      .Body = xMailBody
      .Display 'or use .Send
      End With
      On Error GoTo 0
      Set xOutMail = Nothing
      Set xOutApp = Nothing
      End Sub