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 Sub

Voici 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.

Rechercher des sujets similaires à "regrouper informations seul mail condition"