Chaine de caractère pour Email en fonction de la valeur d'une Liste

brunounours

XLDnaute Nouveau
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:
VB:
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:

VB:
beDoc.SendTo = ListeDeMail
Equivalente à
VB:
beDoc.SendTo = "Email1@xxx.com, Email2@xxx.com, Email3@xxx.com"

Merci de votre aide, Cordialement Bruno
 

Pièces jointes

  • exemple.jpg
    exemple.jpg
    37.1 KB · Affichages: 240
  • exemple.jpg
    exemple.jpg
    37.1 KB · Affichages: 270
  • exemple.jpg
    exemple.jpg
    37.1 KB · Affichages: 275
Dernière édition:

brunounours

XLDnaute Nouveau
Re : Chaine de caractère pour Email en fonction de la valeur d'une Liste

La liste change et les destinataires doivent s'adapter automatiquement.

Voici ce aue j'ai trouvé et qui marche:

Code:
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

Merci Cordialement!
 

Staple1600

XLDnaute Barbatruc
Re : Chaine de caractère pour Email en fonction de la valeur d'une Liste

Bonjour à tous

J'allais faire la même remarque de mprexcel, c'est plutôt ; que , .

PS: Un fichier Excel exemple permettrai de faire des tests.
Une image renseigne certes, mais cela n'aide guère pour tester du code VBA.
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet