Re: MultiSelect ListBox => MailingList avec SendMail ou FollowHyperlink au choix
Bonsoir JBSB, le Forum
Et oui parfois on ne pense pas que les écrits restent et un mot mal employé, peut changer tout le sens pour les lecteurs. Mais ce n'est absolument pas grave car je pensais bien que tu t'étais mal exprimé. Par contre tu aurais dû nous mettre sur la piste dès ton premier Postn car entre une MailingList et un Label, il y a un grand fossé !!lol
D'ailleurs, pour te mettre sur la piste, voici comment faire en deux méthodes pour un mail sur sélection ListBox multi-destinataires...
Par contre on change impérativement d'évènement "Change" de la ListBox1 (où l'on ne met plus rien), au bénéfice d'un CommandButton1 que l'on prend soin de rajouter dans le UserForm :
Private Sub UserForm_Initialize()
With Me.ListBox1
.MultiSelect = fmMultiSelectMulti
.AddItem "Toto@lol.com"
.AddItem "Zaza@lol.com"
.AddItem "Lulu@lol.com"
.AddItem "Lolo@lol.com"
.AddItem "Lili@lol.com"
End With
End Sub
Private Sub CommandButton1_Click()
Dim MailingList As String
Dim i As Byte
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
MailingList = MailingList & ListBox1.List(i) & "; "
End If
Next i
Mailling MailingList
End Sub
Private Sub Mailling(MailingList As String)
Dim Link As String
Dim Message As String
Message = "J'espère que vous allez bien sur le Forum, moi j'ai plein de boulot, mais je trouve le temps de faire des démos pour le Fun ;-), sinon il commence à faire plus chaud !! bientôt c'est le printemps !!!"
Link = "mailto:" & MailingList & "?Subject=Bonjour " _
& " de la part de " & Application.UserName & " en direct de la dernière démo de @+Thierry, lol" _
& "&Body=" & Message
ActiveWorkbook.FollowHyperlink Address:=Link, NewWindow:=True
Unload Me
End Sub
Voilà, dans ce cas ci-dessus il n'y a pas besoin de s'inquiéter avec les "guillements", enfin en tout cas sous Outlook 2000 çà passe impeccable, par contre chez moi c'est le ; (point-virgule) en séparateur, pas la virgule, donc regarde et tiens moi au courant avec version d'Excel / Win et le Client Mail.
Mais si tu essaies cette procédure, tu vas revenir dans pas longtemps avec cette fois-ci "j'ai bien eu 99% de la réponse........mais"
Car tu me diras je n'arrive pas à envoyer une feuille xls... (oui je sais, je fais long mais comme çà ce Fil de discussion sera complet....
Donc si c'est un WorkBook que tu dois envoyer, c'est avec la méthode SendMail, qui, quant à elle va exiger une Array pour les multi-destinataires...Exactement comme je le prévoyais dans mon précédent post.
Donc je t'ai écrit le code... (NB MailingList est une Variable Tableau Dynamique déclarée Public au niveau du Module, c'est à dire en top de celui-ci... En prime j'ai ajouté un contrôl de sélection d'item dans la ListBox pour éviter le Bug du User qui click sur le bouton sans rien avoir sélectionné.
Option Explicit
Dim MailingList() As String
Private Sub UserForm_Initialize()
With Me.ListBox1
.MultiSelect = fmMultiSelectMulti
.AddItem "Toto@lol.com"
.AddItem "Zaza@lol.com"
.AddItem "Lulu@lol.com"
.AddItem "Lolo@lol.com"
.AddItem "Lili@lol.com"
End With
End Sub
Private Sub CommandButton1_Click()
Dim i As Byte, x As Byte
Dim Email As Boolean
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
Email = True '<<< ici on test si il y a au moins un destinataire sélectionné
ReDim Preserve MailingList(x)
MailingList(x) = Me.ListBox1.List(i)
x = x + 1
End If
Next i
If Email Then '<<< si OUI on envoie le mail
Mailling
End If
End Sub
Private Sub Mailling()
Dim Link As String
ThisWorkbook.SendMail Recipients:=Array(MailingList()), _
Subject:="Automatique Email de la part de " & Application.UserName & " en direct de la dernière démo de @+Thierry, lol "
Unload Me
End Sub
Par contre avec la méthode SendMail on envoie le classeur, mais pas de corps du message.... Pour faire les deux il faut créer un object Outlook (2000, XP) mais pas Express.... si besoin, je dois avoir çà aussi si tu veux....
Bonne soirée
@+Thierry
PS, je ne préfère pas faire de démo sur ce genre de truc, car çà ferait encore aussi un bon outil de spamming