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.