Créer une alerte sur Outlook via un fichier Excel

Bonjour,

J'ai mis en place un suivi d'intérimaire, j'aimerais que lorsque la date de fin de mission arrive à échéance une alerte Outlook se fasse 3 jours avant la date de fin.

Comme j'ai plusieurs feuilles je ne sais pas trop comment faire cette procédure.

Dans l''attente de votre réponse.

Bonne journée.

Bonjour à tous,

J'ai essayer de mettre en place la macro, mais comme je suis vraiment novice en VBA j'ai un peu de mal a trouver mon erreur.

J'ai copié via ce forum une macro qui fonctionne bien, puisque le mail se rédige bien lors de l'application de la macro, cependant il ne prend pas en compte les éléments que je voudrais.

Il me faudrait l'agence d'intérim, le nom et prénom de l'intérimaire et la date de fin de mission.

Pourriez-vous me donner un petit coup de pouce.

Je vous transmets le fichier pour plus d'explication.

Bonne journée.

Bonjour toutes et tous

@Christram78, aucune macro dans ton classeur Suivi des ... (peut-être en enregistrant ton classeur 'Classeur Excel (prenant en charge les macros)

crdlt,

André

Bonjour André,

Effectivement, je n'avais pas enregistrer mon fichier avec ma macro

Ci-joint le fichier cette fois-ci avec la macro.

Bonne journée.

Bonjour toutes et tous

@Christian

un début de réponse, (3 end sub sur ton classeur précédent il n'en faut qu'un)

- l'erreur sans doute de ce If si la date <now etc... et c'est là que çà bugg, je l'ai mis en com

j'ai testé comme cela

Sub Renouvellementcontrat()
Dim messagerie, email As Object
Dim cel As Range
Dim txt As String
Dim ws As Worksheet
    On Error Resume Next
    Set messagerie = CreateObject("Outlook.Application")
    Set email = messagerie.CreateItem(0)
    With email
        .to = "xxxxxxxxxxxx@xxxxxxxxx.com"
        .Subject = "Renouvellement contrats intérimaires"
        txt = "<table>"
        For Each ws In Worksheets
            ws.Select
            txt = txt & "<tr><td><b>" & ws.Name & "</b></td></tr>"
            Set cel = Range("A1")
            txt = txt & "<tr><td>" & _
            cel.Offset(0, 0) & "</td><td>" & _
            cel.Offset(0, 1) & "</td><td>" & _
            cel.Offset(0, 2) & "</td><td>" & _
            cel.Offset(0, 3) & "</td><td>" & _
            cel.Offset(0, 4) & "</td><td>" & _
            cel.Offset(0, 5) & "</td><td>" & _
            cel.Offset(0, 6) & "</td><td>" & _
            cel.Offset(0, 9) & "</td><td>" & _
            cel.Offset(0, 15) & "</td><td>" & _
            cel.Offset(0, 20) & "</td><td>" & _
            cel.Offset(0, 27) & "</td><td>" & _
            "</td></tr>"
            For Each cel In Range("A2:A" & Range("A1").End(xlDown).Row)
               ' If cel.Offset(0, 27) > Now + 15 And cel.Offset(0, 27) < Now Then
                 '   cel.Offset(0, 34) = Now
                    txt = txt & "<tr><td>" & _
                    cel.Offset(0, 0) & "</td><td>" & _
                    cel.Offset(0, 1) & "</td><td>" & _
                    cel.Offset(0, 2) & "</td><td>" & _
                    cel.Offset(0, 3) & "</td><td>" & _
                    cel.Offset(0, 4) & "</td><td>" & _
                    cel.Offset(0, 5) & "</td><td>" & _
                    cel.Offset(0, 6) & "</td><td>" & _
                    cel.Offset(0, 9) & "</td><td>" & _
                    cel.Offset(0, 15) & "</td><td>" & _
                    cel.Offset(0, 20) & "</td><td>" & _
                    cel.Offset(0, 27) & "</td><td>" & _
                    "</td></tr>"
               ' End If
            Next cel

        Next
        txt = txt & "</table>"
        .htmlbody = txt & .htmlbody
        .display
    End With
    Set email = Nothing
    Set messagerie = Nothing

MsgBox "terminé!"
End Sub
ztest3232

Bonsoir Andre13,

Cela fonctionne bien, mais j'aimerais que seul les contrats arrivant en fin de mission soit présent dans le mail, et il faudra que le mail soit envoyé 4 jours avant la fin du contrat, est-ce possible ?

Le tarif ainsi que le taux facturé n'ont pas besoin d'apparaitre.

Et j'aimerais savoir si cela est possible que le mail soit envoyé automatiquement sans lancé la macro dès que la date arrive à échéance J-4?

Bonne soirée.

re

@Christram78

une erreur sur ton onglet C date de début et de fin

j'ai essayé" également en vain

mettre en Z1 sur les onglets A, B et C la formule :

=AUJOURDHUI()

Note: une erreur sur ton onglet C ===> date de début et<==de fin==>

j'ai testé ci dessous :

Sub Renouvellementcontrat()
Dim messagerie, email As Object
Dim cel As Range
Dim txt As String
Dim ws As Worksheet
    On Error Resume Next
    Set messagerie = CreateObject("Outlook.Application")
    Set email = messagerie.CreateItem(0)
    With email
        .to = "xxxxxxxxxxx@xxxx.com"
        .Subject = "Renouvellement contrats intérimaires"
        txt = "<table>"
        For Each ws In Worksheets
            ws.Select
            txt = txt & "<tr><td><b>" & ws.Name & "</b></td></tr>"
            Set cel = Range("A1")
            txt = txt & "<tr><td>" & _
            cel.Offset(0, 0) & "</td><td>" & _
            cel.Offset(0, 1) & "</td><td>" & _
            cel.Offset(0, 2) & "</td><td>" & _
            cel.Offset(0, 7) & "</td><td>" & _
            cel.Offset(0, 9) & "</td><td>" & _
            cel.Offset(0, 15) & "</td><td>" & _
            cel.Offset(0, 20) & "</td><td>" & _
            "</td></tr>"
            For Each cel In Range("A2:A" & Range("A2").End(xlDown).Row)
                If cel.Offset(0, 27) > Now + 5 Then
                    cel.Offset(0, 30) = Now
                    txt = txt & "<tr><td>" & _
                    cel.Offset(0, 0) & "</td><td>" & _
                    cel.Offset(0, 1) & "</td><td>" & _
                    cel.Offset(0, 2) & "</td><td>" & _
                    cel.Offset(0, 7) & "</td><td>" & _
                    cel.Offset(0, 9) & "</td><td>" & _
                    cel.Offset(0, 15) & "</td><td>" & _
                    cel.Offset(0, 20) & "</td><td>" & _
                    "</td></tr>"
                End If
            Next cel

        Next
        txt = txt & "</table>"
        .htmlbody = txt & .htmlbody
        .display
    End With
    Set email = Nothing
    Set messagerie = Nothing

MsgBox "terminé!"
End Sub

4 jours avant,j'ai mis +5 (à voir)

crdlt,

André

ztest4747

Bonjour Andre13,

Tout d'abord merci pour votre réponse. J'ai bien ajouté la formule =AUJOURDHUI() en Z1, mais la macro ne fonctionne pas, elle ne prend pas les informations des intérimaires, elle ne prend que en tète du tableau (NOM-PRENOM et DATE FIN DE CONTRAT), elle ne me prend pas les intérimaires concernés.

Dans l'attente de votre réponse.

Bonne journée.

Bonjour toutes et tous

cette partie là me chamboule la tête de: Now pour aujourd'hui et l'attribution de la colonne en question pour se référencer en rapport de la date +4 jours ou 5 afin que ces dates puissent être recopiées dans ton corps du message Outlook

'...

For Each cel In Range("A2:A" & Range("A2").End(xlDown).Row)

If cel.Offset(0, 27) > Now + 5 Then

cel.Offset(0, 30) = Now

'...

grrr

crdlt,

André

Bonjour Andre13,

Je voudrais savoir où aller changer les données dans la macro pour qu'elle ne prenne que les informations que j'ai besoin tel que : la société, le nom et prénom de l'intérimaire, la date de fin de contrat et l'agence d'intérim.

Sur la macro que tu m'as fait j'ai beaucoup d'informations qui ne me sont pas utiles dans mon mail. Je pense qu'il faut modifier au niveau de cell.offset?

Dans l'attente de ta réponse.

Très bon après-midi.

Bonjour Andre13,

Après avoir chercher dans la macro j'ai réussi a modifier les informations que j'avais besoin !!!

Du coup il ne reste plus que le problème de relance en fonction de la date de fin de contrat où la je bloque totalement…

Bon après midi.

Bonjour toutes et tous

@Christram78 bravo! si tu as réussis à remodeler ton classeur

pour la la relance +5 jours ou 4 après une date du jour

... pour l'instant je suis dans le cirage complet

Rechercher des sujets similaires à "creer alerte outlook via fichier"