Macro VBA - envoi email via Outlook en fonction d'une date / échéance
Bonjour,
Je suis nouvelle sur le forum...
J'aurais souhaité un peu d'aide concernant VBA (je suis débutante... Je n'ai presque jamais codé...)
Pour mon travail, j'ai un fichier de suivi excel. J'ai des dates que je renseigne. j'aimerais que dès qu'une date est atteinte, un mail d'alerte soit envoyé (j'ai une colonne avec la date et une colonne avec l'adresse mail).
J'avais cherché un peu sur internet et j'avais trouvé un code pour faire ce que je souhaite... Je l'avais un peu réadapté malheureusement, lorsque j'exécute la macro : une erreur s'affiche : Erreur de compilation
J'ai essayé de chercher l'erreur ... J'ai pourtant activé l'application Outlook dans VBA etc...
Ci-dessous : mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| Sub Alerte_PVR()
Dim outobj As Outlook.Application
Dim sSujet, sBody, sAdresseMail, sAdresseRetour As String
Dim duree As Integer 'nbre de jours entre aujourd'hui et la date à testerDim Lig_Deb, Lig_Fin As Integer 'ligne de début, de fin
Dim sDates_Col, sMails_Col As String 'colonnes qui contiennent les dates à tester et les adresses mailDim i As Integer
Set ObjOutlook = New Outlook.Application
'initialisation des constantes de la macro :Lig_Deb = 5 'dans ma feuille Excel, les dates à tester commencent en ligne 5
sDates_Col = "T" ' et elles sont en colonne T ( 3 ième colonne)et les adresses mail sont en colonne U à côté'initialisation des données du mail envoyé :
sSujet = "Récupérer PV de réception pour mainlevée caution"
sBody = "Bonjour," + vbNewLine + "Veuillez-vous référer au fichier SUIVI DES CAUTIONS, afin de récupérer le PV de réception des chantiers terminés, de le scanner et de l'enregistre sur Ameris. Et enfin, si nécessaire, veuillez modifier la date de Mainlevée dans le tableau." + vbNewLine + "Si les travaux n'ont pas encore été réceptionnés, merci de modifier la cellule Date fin de chantier" + vbNewLine + "Cordialement" + vbNewLine
sAdresseRetour = "xxxxxxxx@xxxxxx.com"
sAdresseMail_Col = "U"
'Ligne de fin =1ère cellule vide dans la colonne des dates
Lig_Fin = Val(Range(sDates_Col & CStr(Lig_Deb)).End(xlDown).Row)
' boucle de test dans la plage des dates (=> )For i = Lig_Deb To Lig_Fin
Range(sDates_Col & CStr(i)).Select 'activer la cellule testéeduree = Now - ActiveCell.Value ' la date est dans la cellule activeIf duree > 0 Then 'la date est dépasséesAdresseMail ActiveCell.Offset(0, 1).Value 'l'adresse mail est dans la colonne suivante offset (0,1)
'MsgBox ("Envoi de courrier à " & sAdresseMail)
' envoyer le mail :Outlook.Application sSujet, sBody, sAdresseMail, sAdresseRetour
Else
'MsgBox ("La date n'est pas atteinte")
End If |
Je vous remercie par avance de votre aide et de vos explication...
J'espère avoir été claire n'hésitez pas à me demander des précisions.
Bonne journée !