Envoi mail VBA Excel

bonjour,

je dois gérer la validité d'une liste de documents qui ont tous une durée différente et donc une date différente par l’intermédiaire d'un tableau excel.

j'aimerais déjà automatiser le calcul de la date de fin de validité, pour au final envoyer un mail depuis ce tableau aux trois membres de cette organisation afin de les informer que le document x n'est plus valide dans 30 jours puis dans 15 jours ?

est il possible de faire cela au moyen d'un code VBA ma messagerie est outlook 2010 !

merci d'avance

Bonjour,

Plein de petites subtilités, en effet faut il l'envoyer tous les jours pendant les 30 jours finaux ?

Si non, si ces 30 jours tombent un weekend, quand l'envoyer ?

L'application sera ouverte tous les jours ?

Petit exemple simple qui envoi à machin@gmail.com le mail suivant:

Sujet:

Documents fin de validité

Corps:

"Bonjour"

"Le document " & colonne A & " " & "arrive à sa fin de validé"

"Le document " & colonne A & " " & "arrive à sa fin de validé"

Pour chaque ligne, si la date d'aujourdhui - datevalidité est inférieure à 30 jours.

Sub MailOutlook()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    strbody = "Bonjour" & vbNewLine & vbNewLine
    With Sheets("Feuil1")
    For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
    If Date - .Range("D" & i) < 30 Then

    strbody = strbody & vbNewLine & _
              "Le document " & .Range("A" & i) & " " & "arrive à sa fin de validé"
    End If
    Next i
    End with
    On Error Resume Next
    With OutMail
        .to = "machin@gmail.com"
        .CC = ""
        .BCC = ""
        .Subject = "Documents fin de validité"
        .Body = strbody
        .Display
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

bonjour,

merci pour votre réponse.

Non c'est un mail qu'il faudrait envoyer 30 jours avant l’échéance puis 15 jours avant.

si ça tombe le weekend ce n'est pas vraiment un problème.

oui cette application sera ouverte les jours de travail mais pas le samedi et le dimanche !

merci d'avance

Je ne vais pas te pondre ton application.

Tu peux t'inspirer du code que je t'ai donné pour répondre comme tu le penseras à ton sujet.

Bon courage

bonsoir,

j'ai travaillé sur mon application, mais je bloque sur comment exécuter la macro pour chaque ligne du tableau et faut il ajouter la date du jour quelque part ?

    Sub MailOutlook()
        Dim OutApp As Object
        Dim OutMail As Object
        Dim strbody As String

        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
        strbody = "Bonjour" & vbNewLine & vbNewLine
        With Sheets("Feuil1")
        For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
        If Date - .Range("D" & i) < 30 Then

        strbody = strbody & vbNewLine & _
                  "Le document " & .Range("A" & i) & " " & "arrive à sa fin de validé"
        End If
        Next i
        End with
        On Error Resume Next
        With OutMail
            .to = "machin@gmail.com"
            .CC = ""
            .BCC = ""
            .Subject = "Documents fin de validité"
            .Body = strbody
            .Display
        End With
        On Error GoTo 0

        Set OutMail = Nothing
        Set OutApp = Nothing
    End Sub

Quelqu'un peut il me dire pourquoi ce code s'execute sur toutes les lignes de l'année 2014 par exemple alors que la finalité est d'envoyer un mail si la date d'echéance comparée a la date du jour est inferieure a 30 jours ?

merci de votre aide

Bonjour,

Remplace

If Date - .Range("D" & i) < 30 Then

par

If Date - .Range("D" & i) > 30 Then

Cdlt

    If Date - .Range("D" & i) < 30 Then

quelqu'un pourrait il me dire pourquoi cette condition dans mon fichier prend toutes les dates de l'année 2014 alors que l'objectif est d'envoyer un mail pour les documents dont la date de validité est inférieure a 30 jours par rapport a la date du jour ?

merci d'avance

Bonjour

avec cette condition, tous les documents dont la date de validité est supérieure à la date du jour-30 jours vont être sélectionnés. je suppose que c'est le cas de tous tes documents.

pour avoir tous les documents dont la date de validité est dépassée ou sera dépassée dans 30 jours

If Date - Cells(i, "d") > -30 Then

ou

If Cells(i, "d")-Date  < 30 Then
Rechercher des sujets similaires à "envoi mail vba"