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.
- Messages
- 2'415
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
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.
- Messages
- 2'415
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
Bonjour toutes et tous
@Christian
un début de réponse, (3 end sub sur ton classeur précédent
- 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
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.
- Messages
- 2'415
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
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é
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.
- Messages
- 2'415
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
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
'...
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.
- Messages
- 2'415
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
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