Nb de lignes modulable dans un mail VBA

Bonjour à toutes & tous,

Je maîtrise bien à présent la procédure d'envoi de mails en VBA et je cherche à étoffer les possibilités :

J'ai un tableau avec des lignes de factures clients en retard, un client pouvant avoir ou non plusieurs lignes et je cherche à envoyer par mail le recap de chaque client.

Donc chaque client recevra un mail avec toutes les lignes qui lui correspondent (dans l'exemple le n° de sa facture suffit)

je n'arrive pas à trouver la bonne approche conditionnelle

Voici un exemple épuré de mon outil de travail, le code parait donc un peu bizarre mais c'est à cause de l'élagage.

Merci d'avance pour vos lumières !

Alci

22test.xlsm (20.09 Ko)

Bonjour,

Je comprend qu'il faut mettre dans le corps du message les données A3:C5;A7:C10

faut il envoyer ce mail à 7 destinataire différent (E3:E5;E7:E10) ?

Ha oui j’ai fait une erreur dans mon tableau: il y a 3 clients et donc il y aura 3 mails.

Mais le nombre de lignes sera différent dans chaque mail

Merci 😊

Ce que je souhaiterais a ce stade de l’exemple c’est que le(s) numéro(s) de la facture figure dans le mail

Toto recevra un mail avec “A123”

Jojo recevra un mail avec la liste suivante:

B123

B456

Etc

Pedro recevra un mail avec :

Y481

Y151

O894

La confusion vient de la liste de mails que j’ai mise. Il faut considérer qu’il y a en fait 3 adresses mail, une par client

Bonjour,

à tester,

Private Sub CommandButton1_Click()
Dim I, J, k, l, m
Dim ObjOutlook As New Outlook.Application
Dim oBjMail
Dim derligne As Integer

k = Feuil1.Cells(Rows.Count, 1).End(xlUp).Row

For I = 1 To k
    If Feuil1.Cells(I, 4).Value = "Oui" Then
      nom = Feuil1.Cells(I, 1).Value
      NoF = NoF & "-" & Feuil1.Cells(I, 2).Value

      If nom <> Feuil1.Cells(I + 1, 1) Then

        'Bloc envoi du mail
             Set ObjOutlook = New Outlook.Application
             Set oBjMail = ObjOutlook.CreateItem(olMailItem)
                With oBjMail
                .To = Feuil1.Cells(I, 5).Value
               .Subject = "Relance "
               .Body = NoF '??? c'est là que je cherche le truc
               'pour que le texte s'adapte au nb de lignes de chaque client
               .Display
               .Send
            End With
                Set oBjMail = Nothing
            Set ObjOutlook = Nothing
            Application.DisplayAlerts = True

            NoF = ""
       End If
    End If
 Next I
End Sub

Merci pour ce code !

Je suis un peu crevé mais à la lecture, je ne comprends pas comment, dans un mail, il ajoutera sous forme de liste toutes les factures relatives à un client 🤔

Je teste ça lundi

Bonne soirée

Bonjour,

N'ayant pas Outlook le WE, j'ai testé la procédure via Msgbox.

Il crée bien 3 messages, donc à ce niveau ca a l'air de fonctionner !

Serait il possible que les infos soient affichées sous forme de liste verticale car les n° de factures sont compilés horizontalement pour l'instant.

C'est pourquoi je creuse aussi la possibilité de remplir un tableau VBA qui deviendrait le corps du mail.

Merci !

re,

pour un résultat vertical, il faut remplacer la ligne

NoF = NoF & "-" & Feuil1.Cells(I, 2).Value

par

NoF = NoF & Feuil1.Cells(I, 2).Value & Chr(10)

Ok merci

Rechercher des sujets similaires à "lignes modulable mail vba"