Chaine de caractère pr Email fonct. de la valeur d'une Liste
Bonjour le forum.
Voici mon problème, j'espère que vous pourrez m'aider.
Je souhaite établir un code qui renvoie une chaine de caractère permettant d'envoyer un mail à plusieurs personnes.
Vous trouverez une image en pièce jointe pour mieux visualiser ce qui me donne du fil a retordre.
Voila dans la ListBox2 qui correspond a la ListBox intitulée AE j'ai un certain nombre de type de client: CAC, AVG...
Lorsque je clique sur le bouton Email, je souhaiterai un code qui établisse une liste des mails a envoyer de la forme:
ListeDeMail = "Email1@xxx.com, Email2@xxx.com, Email3@xxx.com"Les E-mails que je souhaite trouver dans la liste sont ceux des personnes dont le "type de AE" se trouve présent dans la ListBox2.
Je ne sais pas comment `m'y prendre pour qu'il ajoute a une chaine de caractère les E-mail correspondant aux personnes ayant dans une table (en bleu) un type qui correspond aux caractères dans une liste.
J'espère avoir été clair mais c'est pas gagné
Je rajouterai ensuite les destinataires avec le code suivant:
beDoc.SendTo = ListeDeMail Equivalente à
beDoc.SendTo = "Email1@xxx.com, Email2@xxx.com, Email3@xxx.com"Merci de votre aide, Cordialement Bruno
Dans l'exemple de l'image, j'ai dans la Listbox2 les type AE: CAC, AVG et PAC donc je souhaiterai avoir:
ListedeMail = "DupP@xxx.com, RichB@yyy.com, TotT@zzz.comVoila une solution qui marche
Private Sub UserForm_Click()
Dim TheCell As Range
Dim iLigne As Integer
Dim ListeMail As String
'Il faut aller dans le menu Outils, Référence et cocher Microsoft Scripting runtime
Dim DicoType As New Dictionary
'On boucle sur chaque element de la liste pour renseigner le Dico
For iLigne = 0 To ListBoxAE.ListCount - 1
'S'il n'existe pas dans le dico on l'y rajoute
If Not DicoType.Exists(ListBoxAE.List(iLigne)) Then DicoType.Add ListBoxAE.List(iLigne), iLigne
Next
'On boucle sur chaque cellule de la colonne 4 du tableau
For Each TheCell In Feuil1.Range("Tableau3").Columns(4).Cells
'On controle si le type est dans la liste
If DicoType.Exists(TheCell.Value) Then
'S'il existe, on rajoute le séparateur s'il y a déjà au moins un mail dans la chaine
If ListeMail <> "" Then ListeMail = ListeMail & ","
'On rajoute le mail
ListeMail = ListeMail & TheCell.Offset(0, -3)
End If
Next
End Sub