ListBox Multisélection, envoi mails

Provence Vintage

XLDnaute Occasionnel
Bonjour le Forum,

je ne sais pas comment exploiter la multi-selection dans une listbox pour récupérer des données des lignes non visibles dans cette dernière!:eek:

j'ai une listbox multiselect que je charge de la façon suivante::)

#Private Sub UserForm_Initialize()
Dim cel As Range
'ListBox1.Clear
'ListBox2.Clear

With Me.ListBox1 'prend en compte la ListBox1
.ColumnCount = 6 'attribut le nombre de colonnes
.ColumnWidths = "90;90;70;90;50;200" 'définit la largeur des colonne End With 'fin de la prise en compte de la ListBox1

With Sheets("bdd acheteurs") 'prend en compte l'onglet "Data"
For Each cel In .Range("C4:C" & .Range("C65536").End(xlUp).Row) 'boucle sur toute les cellules éditée de la colonne AL
If cel.Value >= SaisirPrix.TextBox1.Value * 0.95 And cel.Value <= SaisirPrix.TextBox1.Value * 1.05 Then

Me.ListBox1.AddItem cel.Offset(0, 1).Value Me.ListBox1.Column(1, ListBox1.ListCount - 1) = cel.Offset(0, 4).Value
Me.ListBox1.Column(2, ListBox1.ListCount - 1) = cel.Offset(0, 0).Value
Me.ListBox1.Column(3, ListBox1.ListCount - 1) = cel.Offset(0, 48).Value
Me.ListBox1.Column(4, ListBox1.ListCount - 1) = cel.Offset(0, 19).Value
Me.ListBox1.Column(5, ListBox1.ListCount - 1) = cel.Offset(0, 21).Value & " " & cel.Offset(0, 22).Value & " " & cel.Offset(0, 23).Value & " " & cel.Offset(0, 24).Value & " " & cel.Offset(0, 25).Value
Me.ListBox1.Column(6, ListBox1.ListCount - 1) = cel.Row Else
End If 'fin de la condition
Next cel 'prochaine cellule de la boucle

End With 'fin de la prise en compte de l'onglet "Data#

Après avoir selectionner les lignes qui m'interresse, je cherche via vba à copier les données mail des lignes selectionnées dans une feuille pour déterminer ma liste d'envoi, puis faire un mailing via macro;
on peux aussi partir du principe que peux être on peux faire un envoi en direct?! (sur les lignes sélectionnés)

les adresses mail sont en colonne H ou 8, à partir de la ligne 4
(Soit logiquement récupérées comme celà)
ListBox1.List(ListBox1.ListIndex, 5)


par contre certaines cellules de la colonne sont vides!
celles selectionnées dans la listbox n'auront donc peux-être pas toujours de référence mail!

qui peux m'aider?!

merci à toutes et tous
 

jp14

XLDnaute Barbatruc
Re : ListBox Multisélection, envoi mails

Bonjour

Bonjour le Forum,

je ne sais pas comment exploiter la multi-selection dans une listbox pour récupérer des données des lignes non visibles dans cette dernière!:eek:

Ci dessous le code pour lister les items sélectionnés

Code:
    For i = 0 To ListBox1.ListCount - 1
        If ListBox.Selected(i) = True Then 

        ...........................................
       end if
    Next i

JP
 

YANN-56

XLDnaute Barbatruc
Re : ListBox Multisélection, envoi mails

Bonsoir Provence Vintage, et à ceux qui passeront lire ce Fil.

Je viens de te rédiger un message dans ton fil relatif à l'envoi de Mails.

Peut-être que l'utilisation d'une ListView, comme je te le montre,
sera plus aisée que celle d'un TextBox... A voir!

Sous réserve, bien entendu, que mon test fonctionne chez toi.

Au Plaisir, et bonne soirée.

Yann
 

Provence Vintage

XLDnaute Occasionnel
Re : ListBox Multisélection, envoi mails

Bonjour jp, yann, le fil;

dans un premier temps je teste ce que m'a mis jp,
de la façon suivante:

#Private Sub ListBox1_Click()
If ListBox1.ListIndex = -1 Then Exit Sub
LabelNom = ""
LabelNom = ListBox1.List(ListBox1.ListIndex, 0)
For i = 0 To ListBox1.ListCount - 1
If ListBox.Selected(i) = True Then
Labelmailacheteur = ListBox1.List(ListBox1.ListIndex, 6)

End If
Next i


End Sub#

le but étant pour chaque ligne de la listbox sélectionnées, d'afficher les adresses mail correspondantes et de les utiliser pour un mailing avec "Labelmailacheteur"

mais rien ne se produit,
faut'il mettre le code en initialize?

merci à vous
bonne journée
 

Provence Vintage

XLDnaute Occasionnel
Re : ListBox Multisélection, envoi mails

re,

j'ai éssayé comme ceci:

#Private Sub CommandButton2_Click()
Dim i As Long
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
Labelmailacheteur = ListBox1.List(ListBox1.ListIndex, 6)

End If
Next i

For i = 1 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
Labelmailacheteur = ListBox1.List(ListBox1.ListIndex, 6)
End If
Next i
End Sub#

ça fonctionne mais pour une seule ligne sélectionée;
si je sélectionne trois lignes dont une qui n'a pas d'adresse mail et deux oui,
dans le label, ne s'affiche qu'une seule adresse. . . .

ça ne prends donc pas en compte les deux adresses avec en séparation le ;

qui à une idée?!

merci
 

youky(BJ)

XLDnaute Barbatruc
Re : ListBox Multisélection, envoi mails

Bonsoir,
ma petite contribution à tester...

Private Sub CommandButton2_Click()
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
Labelmailacheteur = ListBox1.List(i, 6) & ";" & Labelmailacheteur
End If
Next i
Msgbox Labelmailacheteur
End sub

ensuite en
.To= Labelmailacheteur
Bruno
 

Provence Vintage

XLDnaute Occasionnel
Re : ListBox Multisélection, envoi mails

Bonjour le Fil,

Quel code rentrer pour sélectionner toutes les lignes de la ListBox via une CheckBox?

Suite au code de Youki, adapté:

#For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
Labelmailacheteur = ListBox1.List(i, 1) & Labelmailacheteur '& ";" & Labelmailacheteur
End If
Next i
If Labelmailacheteur = "" Then
MsgBox ("Pas d'adresses Mail Trouvées")
Exit Sub
Else
EnvoyerMail
MsgBox ("mail envoyé")
Labelmailacheteur = ""
End If#

Lorsque je sélectionne les lignes que je veux, celà fonctionne;
il me manque juste maintenant la sélection globale,
attention certaines lignes risquent de ne pas avoir d'adresse mail!

merci à toutes et tous
A+
 

youky(BJ)

XLDnaute Barbatruc
Re : ListBox Multisélection, envoi mails

RE
lors du remplissage de la listbox
Listbox1.additem "TOUS"
et le reste de la liste à la suite toujours en additem
ensuite dans le bouton
Dim ok As Boolean
If Listbox1.Selected(0) Then ok = True
For k = 0 To ListBox1.ListCount - 1
If ok Or Listbox1.Selected(k) Then
Labelmailacheteur = ListBox1.List(i, 1) & Labelmailacheteur '& ";" & Labelmailacheteur
End If
Next

Je pense que les sans mail est sans importance.(à voir)
Bruno
 

Provence Vintage

XLDnaute Occasionnel
Re : ListBox Multisélection, envoi mails

Bonjour Bruno,

j'ai adapté comme ceci,
merci beaucoup
bonne journée
A+

#Private Sub CheckBox1_Click()
For j = 0 To ListBox1.ListCount - 1
If CheckBox1 = True Then
ListBox1.Selected(j) = True
Else
ListBox1.Selected(j) = False
End If
Next

End Sub#
 

Discussions similaires

Réponses
4
Affichages
383
Réponses
2
Affichages
295

Statistiques des forums

Discussions
314 651
Messages
2 111 555
Membres
111 201
dernier inscrit
netcam