Envoyer un mail depuis Excel si la date est antèrieur à celle de ce jour

Bonjour à tous,

Je débute dans les macros et du coup j'ai quelques questions.

Le but de ma macro est d'envoyer un mail lorsque la date de formation est passé.

Exemple: si la formation était le 24/04/2019 et que nous sommes le 02/05/2019, je souhaite que le mail s'envoie.

Sauf que je ne sais comment écrire cette condition.

J'ai essayé de trouve une solution à mon problème dans le forum mais je ne trouve pas...

Ci-dessous la macro que j'ai réalisé et ci- joint mon fichier Excel.

Si quelq'un a une solution je suis preneuse,

Merci beacoup

Private Sub CommandButton1_Click()

Dim LeMail As Variant

Dim Ligne As Integer

Set LeMail = CreateObject("Outlook.Application") 'création d'un objet Outlook

For Ligne = 2 To

If Date>=Range("C" & 3 +i) Then"

With LeMail.CreateItem(olMailItem)

.Subject ="Evaluation de votre formation à chaud"

.To = Range("D" & Ligne)

.Body ="Bonjour, Merci de remplir le questionnaire pour évaluer la formation que vous avez suivi dernièrement. Bonne journée cordialement "

.Display

End With

Next Ligne

End Sub

Bonjour et sur le forum,

Je te propose cette correction de programme:

Private Sub CommandButton1_Click()

Dim LeMail As Variant
Dim Ligne As Integer

Set LeMail = CreateObject("Outlook.Application") 'création d'un objet Outlook

For Ligne = 2 To Range("a" & Rows.Count).End(xlUp).Row
    If Date >= Range("C" & 3 + i) Then
        With LeMail.CreateItem(olMailItem)
         .Subject = "Evaluation de votre formation à chaud"
         .To = Range("D" & Ligne)
         .Body = "Bonjour, Merci de remplir le questionnaire pour évaluer la formation que vous avez suivi dernièrement. Bonne journée cordialement "

         .Display
        End With
    End If
Next Ligne

End Sub

Si tu as des questions n'hésites pas

Merci beacoup pour ta réponse (très rapide) !

Mais lorsque que je la lance la macro le mail s'écrit pour tous

Alors que celui de la dernière ligne (mathias) ne devrait pas s'envoyer car c'est une date superieur à celle d'aujourd'hui ...

Re!

En fait c'est normal, je n'ai pas fait attention quand j'ai corrigé ton programme, mais il y avait encore 2 erreurs dont voici la correction:

Private Sub CommandButton1_Click()

Dim LeMail As Variant
Dim Ligne As Integer

Set LeMail = CreateObject("Outlook.Application") 'création d'un objet Outlook

For Ligne = 2 To Range("a" & Rows.Count).End(xlUp).Row
    If Date >= Range("C" & Ligne) Then
        m = 1
        With LeMail.CreateItem(olMailItem)
         .Subject = "Evaluation de votre formation à chaud"
         .To = Range("D" & Ligne)
         .Body = "Bonjour, Merci de remplir le questionnaire pour évaluer la formation que vous avez suivi dernièrement. Bonne journée cordialement "

         .Display
        End With
    End If
Next Ligne

End Sub

Tu avais Range("C" & 3 + i), i n'était pas la variable de la boucle For, c'était Ligne, et tu ne veux pas traiter les lignes de 5 à 9 mais de 2 à 6, donc ne pas mettre de 3 + Ligne, mais juste Ligne

Merci beaucoup pour ton aide

J'ai une autre question, mais peut etre que j'en demande trop

Est ce que c'est possible de mettre une condition ?

Par exemple je veux que le mail s'envoie si c'est une date anterieur et que la colonne E est =non (ci joint le fichier)

est ce possible? si oui comment ?

merci!!

De rien

Non, c'est rapide à modifier crois moi, ça m'a pris 1 min pour changer le programme

Il faut juste changer la ligne :

If Date >= Range("C" & Ligne) Then

par

If Date >= Range("C" & Ligne) And Range("e" & Ligne) = "non" Then

J'ai juste rajouté And Range("e" & Ligne) = "non" afin de dire "et si la cellule de la colonne E, ligne Ligne est égale à "non". Les opérateurs Or et And sont très utiles

Voici le fichier modifié:

On peut même prévoir d'ajouter une colonne "date dernier envoi" et utiliser une règle du type "si la date de dernier envoi date d'une semaine ou plus et qu'on a toujours pas de réponse" histoire de faire un rappel toutes les semaines

Super !!

Merci beacoup !!

Rechercher des sujets similaires à "envoyer mail date anterieur celle jour"