Nb de lignes modulable dans un mail VBA Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
a
alcibiade
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 29 juillet 2014
Version d'Excel : 2010 FR

Message par alcibiade » 9 novembre 2018, 14:04

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
Test.xlsm
(20.09 Kio) Téléchargé 20 fois
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'714
Appréciations reçues : 333
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 9 novembre 2018, 18:53

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) ?
Vive ces nouvelles saisons qui nous colorent.
isabelle
a
alcibiade
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 29 juillet 2014
Version d'Excel : 2010 FR

Message par alcibiade » 9 novembre 2018, 19:30

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 😊
a
alcibiade
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 29 juillet 2014
Version d'Excel : 2010 FR

Message par alcibiade » 9 novembre 2018, 19:32

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
a
alcibiade
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 29 juillet 2014
Version d'Excel : 2010 FR

Message par alcibiade » 9 novembre 2018, 19:43

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
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'714
Appréciations reçues : 333
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 9 novembre 2018, 19:56

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
Vive ces nouvelles saisons qui nous colorent.
isabelle
a
alcibiade
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 29 juillet 2014
Version d'Excel : 2010 FR

Message par alcibiade » 9 novembre 2018, 20:07

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
a
alcibiade
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 29 juillet 2014
Version d'Excel : 2010 FR

Message par alcibiade » 10 novembre 2018, 12:22

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 !
Avatar du membre
i20100
Passionné d'Excel
Passionné d'Excel
Messages : 5'714
Appréciations reçues : 333
Inscrit le : 16 mars 2017
Version d'Excel : 2010

Message par i20100 » 10 novembre 2018, 17:01

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)
Vive ces nouvelles saisons qui nous colorent.
isabelle
a
alcibiade
Membre habitué
Membre habitué
Messages : 102
Inscrit le : 29 juillet 2014
Version d'Excel : 2010 FR

Message par alcibiade » 10 novembre 2018, 17:36

Ok merci :wink:
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message