Démarrage automatique d'une macro avec condition

Bonjour à la communauté,

Je viens vers vous car j'aimerai, dans le cadre de mon travail, créé une macrocommande qui enverrai un mail automatique dans ma boîte mail dans le cas où la date d'un chèque à encaisser est égal à la date du jour (définie par la fonction =AUJOURD’HUI).

Pour l'instant ma macro ressemble à :

Sub Mail()
    Dim a As MailItem
    Set a = Outlook.CreateItem(olMailItem)
    With a
        .To = "comptabilite.encaissement@xxx.com"
        .Subject = "Tableau des chèques à encaisser en différer"
        .Attachments.Add ("N:\[...]\Tableau des chèques en différé.xlsm")
        .Body = "Bonjour," & vbLf & vbLf & "Je vous invite à trouver en fichier joint le tableau des chèques à encaisser en différé." & vbLf & vbLf & "Merci de bien vouloir en prendre connaissance pour visualiser les chèques à encaisser aujourd'hui." & vbLf & vbLf & "Cordialement," & vbLf & vbLf & "Julien P." & vbLf & "Comptabilité Encaissement / xxx" & vbLf & vbLf
        .Send
    End With
End Sub

Mettons que toutes les dates de nos chèques à encaisser plus tard sont en colonne D et que la date définie par =AUJOURD'HUI est en B2, comment faire pour que la macro se lance automatiquement si l'une des dates en D est égal à la date en B2 ?

Merci par avance pour votre aide.

Cordialement,

Bonsoir,

En supposant que la colonne D se trouve sur Feuil1, il suffit de placer ce code dans ThisWorkbook

Private Sub Workbook_Open()
    Dim date_jour As Range

    Set date_jour = Feuil1.Columns("D").Find(Date)
    If Not date_jour Is Nothing Then Call Mail

End Sub

Ce code s'exécutera donc à l'ouverture du fichier.

Bonjour Thev,

Merci pour ton retour et pour cette macrocommande.

J'aimerai savoir deux autres petites choses s'il te plaît :

- Est-ce que je dois placer ta macro dans la mienne (Si oui à partir d'où), ou alors créer une nouvelle macro ?

- Lorsque mes collègues ouvriront le fichier pour saisir un nouveau chèque, la macro va-t-elle se lancer aussi ?

Merci par avance pour ton aide.

Cordialement,

Recoucou,

C'est bon ! Je viens de comprendre où je devais placer la commande que m'a donner Thev et elle fonctionne parfaitement !

Le petit problème qui se pose c'est que le mail ne s'envoie que quand la date à encaisser est égal à la date du jour !

Ainsi, les jours fériés ou l'un de mes congés pourraient faire sauter un chèque et ne pas envoyer l'information sur les boîtes mails.

De plus quand j'essaye de remplacer :

 Set date_jour = Feuil1.Columns("D").Find(Date)

Par :

 Set date_jour > Feuil1.Columns("D").Find(Date)

Pour dire que si la date du chèque est inférieur à la date du jour il faut lancer la macro Mail, mais il m'affiche un message d'erreur :

"Erreur de compilation:

Attendu : ="

Merci par avance pour votre aide

Bonjour,

Dans ce cas, prendre ce code :

Private Sub Workbook_Open()
    Dim date_i As Range

    For Each date_i In Feuil1.Columns("D").SpecialCells(xlCellTypeConstants)
        If date_i.Value <= Date Then Call Mail
    Next date_i

End Sub

Thev,

Merci pour ton retour !

C'est super, maintenant la date peut-être inférieur ou égal à la date du jour, nous recevons le mail

Merci beaucoup pour ton aide ^^

Bonjour,

Une petite modification pour éviter l'envoi de plusieurs mails si plusieurs dates sont inférieures ou égales à la date du jour.

Private Sub Workbook_Open()
    Dim date_i As Range

    For Each date_i In Feuil1.Columns("D").SpecialCells(xlCellTypeConstants)
        If date_i.Value <= Date Then Call Mail: Exit For
    Next date_i

End Sub
Rechercher des sujets similaires à "demarrage automatique macro condition"