Envoi d’un e-mail lorsqu’une date d’échéance est atteinte (Microsoft Excel)
Domenic a une feuille de travail qui indique les dates d’échéance des projets dans la colonne E.
Il sait qu’il peut utiliser la mise en forme conditionnelle pour montrer quand la date d’échéance est atteinte (quand elle est la même que la date d’aujourd’hui), mais ce dont il a vraiment besoin est un e-mail à envoyer lorsque la date d’échéance est atteinte. Il se demande s’il existe un moyen de le faire dans Excel.
En fait, il existe un moyen de le faire, à condition que cela ne vous dérange pas d’utiliser une macro. De plus, vous devrez envoyer l’e-mail via Outlook, avec lequel VBA communiquera très bien. (Malheureusement, VBA ne peut pas être facilement utilisé pour se connecter avec d’autres clients de messagerie.)
Voici, par exemple, une macro qui s’exécutera chaque fois que votre classeur s’ouvre. Il vérifie automatiquement chaque ligne d’une feuille de calcul, en saisissant spécifiquement deux choses: la date d’échéance dans la colonne E et une «valeur d’indicateur» dans la colonne F. (Cette valeur d’indicateur est définie par la macro. Si la colonne F contient la lettre «S, « alors la macro suppose qu’un e-mail a déjà été envoyé.)
Private Sub Workbook_Open() Dim OutApp As Object Dim OutMail As Object Dim lLastRow As Long Dim lRow As Long Dim sSendTo As String Dim sSendCC As String Dim sSendBCC As String Dim sSubject As String Dim sTemp As String Set OutApp = CreateObject("Outlook.Application") OutApp.Session.Logon ' Change the following as needed sSendTo = "[email protected]" sSendCC = "" sSendBCC = "" sSubject = "Due date reached" lLastRow = Cells(Rows.Count, 3).End(xlUp).Row For lRow = 2 To lLastRow If Cells(lRow, 6) <> "S" Then If Cells(lRow, 5) <= Date Then Set OutMail = OutApp.CreateItem(0) On Error Resume Next With OutMail .To = sSendTo If sSendCC > "" Then .CC = sSendCC If sSendBCC > "" Then .BCC = sSendBCC .Subject = sSubject sTemp = "Hello!" & vbCrLf & vbCrLf sTemp = sTemp & "The due date has been reached " sTemp = sTemp & "for this project:" & vbCrLf & vbCrLf ' Assumes project name is in column B sTemp = sTemp & " " & Cells(lRow,2) sTemp = sTemp & "Please take the appropriate" sTemp = sTemp & "action." & vbCrLf & vbCrLf sTemp = sTemp & "Thank you!" & vbCrLf .Body = sTemp ' Change the following to .Send if you want to ' send the message without reviewing first .Display End With Set OutMail = Nothing Cells(lRow, 6) = "S" Cells(lRow, 7) = "E-mail sent on: " & Now() End If End If Next lRow Set OutApp = Nothing End Sub
Lorsque la macro s’exécute (à nouveau, lorsque le classeur est ouvert pour la première fois), elle vérifie chaque ligne de la feuille de calcul pour voir s’il y a un « S » dans la colonne F.
Sinon, il vérifie si la date de la colonne E est égale à la date du jour. Si c’est le cas, le code rassemble un message électronique (que vous pouvez modifier à votre guise) à envoyer. L’e-mail s’affiche et vous pouvez cliquer sur le bouton Envoyer après avoir effectué les modifications souhaitées.
À ce stade, la feuille de calcul est mise à jour en plaçant l’indicateur «S» dans la colonne F et la date à laquelle l’e-mail a été envoyé dans la colonne G.
Notez que la macro suppose que le nom du projet est dans la colonne B.
Ces informations sont utilisées pour rassembler le message qui sera envoyé par e-mail.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (474) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.