Envoi de mail VBA : Ajouter des infos dans le corps de mail sous condition

Bonjour à tous !

je viens vers vous pour une petite demande.

Pour faire court, j'ai une liste de personnes, avec la liste des formations qu'ils doivent passer.

Je présente la liste des personnes ligne par ligne, et la liste des formations colonne par colonne.

Ainsi, pour une personne, je vais venir ajouter des 1 ou des 0 (selon si il a besoin de passer telle ou telle formation).

(Je précise que sur mon fichier principal, les 1 et les 0 sont mis automatiquement selon des formules bien précises que je maîtrise déjà, ceci présente la seconde partie de mon fichier).

Ainsi, je souhaiterais, en cliquant sur le bouton de ma macro, qu'un mail s'envoi pour toutes les personnes ayant besoin d'une formation (présence d'au moins un 1 dans leur ligne). Je souhaiterais des mails séparés par personne (car le destinataire change selon chaque personne), mais que tous les besoins soient indiqués dans le corps de mail.

Ainsi dans mon fichier d'exemple ci-dessous, pour JEAN DUPONT je souhaiterais que le mail indique le besoin de passer la formation A et C, mais pas la B car il n'y a pas de "1" dans la colonne :

Bonjour PRENOM NOM,

La formation "FORMATION A" aura lieu le "DATE FORMATION A"

La formation "FORMATION C" aura lieu le "DATE FORMATION C"

Mais si je met un 1 dans la formation B, je voudrais que dans le corps du mail une ligne supplémentaire se rajoute pour dire qu'il a besoin de passer la formation B.

Je souhaiterais que le corps du mail se module selon la présence des 1 dans les différentes colonnes, et ça pour toutes les personnes (je voudrais un mail modulable par personne).

Je ne sais pas si j'ai été clair, si vous pouviez m'aider ce serait super !!

Merci beaucoup !

En PJ le fichier test et le début du code que j'ai fais.

Bonjour,

une proposition

Sub Mail()

    Dim LeMail As Variant
    Dim Ligne As Long
    Dim j As Long
    Dim formations As String

    Set LeMail = CreateObject("Outlook.Application")    'création d'un object Outlook

    For Ligne = 2 To Sheets("TEST").Cells(Rows.Count, 1).End(xlUp).Row
        formations = ""
        For j = 1 To 3    ' 3 formations
            If Sheets("TEST").Cells(Ligne, j + 2) = 1 Then
                formations = formations & "La formation " & Sheets("TEST").Cells(1, j + 2) & " aura lieu le " & Sheets("TEST").Cells(Ligne, j + 5) & vbCrLf
            End If
        Next j
        If formations <> "" Then
            With LeMail.CreateItem(olMailItem)
                .Subject = "Passage formation"
                .To = Sheets("TEST").Range("i" & Ligne)

                .body = "Bonjour, " & Sheets("TEST").Range("a" & Ligne) & " " & Sheets("TEST").Range("b" & Ligne) & Chr(10) & Chr(10) & formations
                .display
            End With
        End If
    Next Ligne

End Sub

Hello,

Merci beaucoup c'est niquel c'est exactement ce que je voulais merci !

Cependant il me génère quand même un mail lorsqu'il n'y a aucun 1 dans la ligne, du coup ça me fait un mail vide (juste le bonjour et le nom).

Aurais-tu une idée ?

Merci encore !

Bonjour,

code proposé ci-dessus adapté.

C'est niquel ça marche parfaitement comme je le voulais un énorme merci !!

Rechercher des sujets similaires à "envoi mail vba ajouter infos corps condition"