Regrouper des informations dans un seul mail sous condition
Bonjour,
Je reviens vers vous pour une demande concernant la récupération d'informations et le regroupement de celles-ci dans un mail selon des conditions.
Tout d'abord, je vous laisse ouvrir mon fichier ci-joint.
Pour explications, dans l'onglet ALERTES, j'ai ici une liste de personnes qui doivent (ou non) passer certaines formations. Si la formation doit être passée, la valeur dans les colonnes E à L est de 1 (génère un besoin et une alerte).
Les colonnes M à T donnent la date d'expiration de la formation actuellement en cours (qui sera reportée dans le mail pour informer le responsable).
La colonne U donne l'adresse mail du responsable.
Sub Mail()
Dim LeMail As Variant
Dim ligne As Long
Dim j As Long
Dim formations As String
If MsgBox("Etes vous sûr de vouloir envoyer les alertes ?" & Chr(10) & Chr(10) & "ATTENTION : Les alertes vont s'envoyer directement et automatiquement sans pré-lecture du message", vbYesNo + vbInformation, _
"Attention") = vbYes Then
Set LeMail = CreateObject("Outlook.Application") 'création d'un object Outlook
For ligne = 2 To Sheets("ALERTES").Cells(Rows.Count, 1).End(xlUp).Row
formations = ""
For j = 1 To 8 ' 8 formations
If Sheets("ALERTES").Cells(ligne, j + 4) = 1 Then
formations = formations & "L'habilitation " & Sheets("ALERTES").Cells(1, j + 4) & " expire le " & Sheets("ALERTES").Cells(ligne, j + 12) & vbCrLf
End If
Next j
If formations <> "" Then
With LeMail.CreateItem(olMailItem)
.Subject = "ALERTE AUTOMATIQUE du " & Sheets("ALERTES").Range("d" & ligne) & " : Expiration habilitation " & Sheets("ALERTES").Range("a" & ligne) & " " & Sheets("ALERTES").Range("b" & ligne)
.To = Sheets("ALERTES").Range("u" & ligne)
.CC = ""
.body = "Bonjour, voici les prochaines échéances d'habilitations de " & Sheets("ALERTES").Range("a" & ligne) & " " & Sheets("ALERTES").Range("b" & ligne) & " :" & Chr(10) & Chr(10) & formations
.display
End With
End If
Next ligne
End If
End SubVoici la macro que j'utilise actuellement. Elle génère un mail par personne (donc par ligne) sous cette forme, en regroupant pour une seule personne, les habilitations qu'elle doit repasser avec la date d'échéance :
Bonjour, voici les prochaines échéances d'habilitations de JEAN MICHEL :
L'habilitation ELEC expire le 31/12/2019
L'habilitation AMIANTE expire le 05/07/2016
Le soucis c'est que ça génère un mail à chaque fois par personne (et quand il y en a 40, ça fait lourd pour les destinataires).
Ma question est donc :
Est-il possible de regrouper les différents besoins dans seulement quelques mails ?
C'est à dire, toutes les personnes ayant le même responsable (information donnée par l'adresse mail inscrite en colonne U) sont listées dans un seul mail avec les différentes formations à passer. Ce qui donnerait par exemple :
1er mail :
Bonjour JEAN MICHEL, voici les prochaines échéances d'habilitations de votre équipe :
Thierry Alexandre :
L'habilitation ELEC expire le 31/12/2019
L'habilitation AMIANTE expire le 05/07/2016
Alfred Louis :
L'habilitation ELEC expire le 31/12/2019
L'habilitation AMIANTE expire le 05/07/2016
2e mail :
Bonjour NATHAN PIERRE, voici les prochaines échéances d'habilitations de votre équipe :
Daniel Marc :
L'habilitation ELEC expire le 31/12/2019
L'habilitation AMIANTE expire le 05/07/2016
Alexis Alain :
L'habilitation ELEC expire le 31/12/2019
L'habilitation AMIANTE expire le 05/07/2016
En gros les destinataires ce sont les mails dans la colonne U, et il faudrait qu'il y ait autant de mail générés que de destinataires différents dans la colonne U, regroupant toutes les personnes (lignes) correspondantes à ce mail.
Voilà j'espère avoir été clair, en vous remerciant énormément d'avance pour votre aide !
Kaaes.