Créer un mail avec variables contenant plusieurs résultats --> split

Bonsoir à tous,

Je viens demander votre aide car je butte sur un résultat inattendu.

Dans ma feuille j'ai des noms en colonne "R" et des données en colonne "AL"

Tout d'abord j'initalise mon UserForm avec les noms "R" dont la ligne "AL" est vide (et 2 autres conditions) pour alimenter mes 3 ListBox, jusque là tout va bien.

Je souhaite ensuite, au clic sur le bouton repris dans mon UserForm, envoyer un mail rapportant la liste de ces noms, et c'est là que je coince.

"Tout" fonctionne, mais le résultat indiqué dans mon mail est le dernier nom de la liste, doublé.

Je ne parviens pas à obtenir une liste reprenant les mêmes noms que dans mes listbox et je ne comprends pas pourquoi.

Pouvez-vous m'aider ? Où est-ce que je me suis trompée ? J'ai fait de multiples essais de modifications de code mais sans succès.

Dim i As Long, DerLig As Long, AM_SE_B As String, AM_SF_B As String, AM_TDN_B As String
Dim Result1() As String, Result2() As String, Result3() As String
Dim Text_TDN_B As String, Text_SE_B As String, Text_SF_B As String
Dim Liste_AM_SE_B As String, Liste_AM_SF_B As String, Liste_AM_TDN_B As String

Private Sub UserForm_Initialize()
With Sheets("Formations NT")
DerLig = .Range("R" & Rows.Count).End(xlUp).Row
For i = 4 To DerLig
If .Range("AL" & i).Value = "" And .Range("S" & i).Value = "Bruxelles" And .Range("AA" & i).Value = "" Then
Me.ListBox_SE_B.AddItem Range("R" & i).Value
End If
If .Range("AM" & i).Value = "" And .Range("S" & i).Value = "Bruxelles" And .Range("AA" & i).Value = "" Then
Me.ListBox_SF_B.AddItem Range("R" & i).Value
End If
If .Range("AN" & i).Value = "" And .Range("S" & i).Value = "Bruxelles" And .Range("AA" & i).Value = "" Then
Me.ListBox_TDN_B.AddItem Range("R" & i).Value
End If
Next
End With
End Sub

Private Sub CommandButton1_Click()
Dim Ol As Outlook.Application
Dim Olmail As MailItem

With Sheets("Formations NT")
DerLig = .Range("R" & Rows.Count).End(xlUp).Row
For i = 4 To DerLig
If .Range("AL" & i).Value = "" And .Range("S" & i).Value = "Bruxelles" And .Range("AA" & i).Value = "" Then
Liste_AM_SE_B = Range("R" & i).Value
End If

If .Range("AM" & i).Value = "" And .Range("S" & i).Value = "Bruxelles" And .Range("AA" & i).Value = "" Then
Liste_AM_SF_B = Range("R" & i).Value
End If

If .Range("AN" & i).Value = "" And .Range("S" & i).Value = "Bruxelles" And .Range("AA" & i).Value = "" Then
Liste_AM_TDN_B = Range("R" & i).Value
End If
Next

Result1 = Split(Liste_AM_TDN_B, ",")
For k = LBound(Result1()) To UBound(Result1())
Text_TDN_B = Liste_AM_TDN_B & Result1(k) & vbNewLine
Next k

Result2 = Split(Liste_AM_SE_B, ",")
For k = LBound(Result2()) To UBound(Result2())
Text_SE_B = Liste_AM_SE_B & Result2(k) & vbNewLine
Next k

Result3 = Split(Liste_AM_SF_B, ",")
For k = LBound(Result3()) To UBound(Result3())
Text_SF_B = Liste_AM_SF_B & Result3(k) & vbNewLine
Next k

Set Ol = New Outlook.Application
Set Olmail = Ol.CreateItem(olMailItem)
With Olmail
.To = "jlm@...; mo@...."
.CC = "fs@..."
.Subject = "Formations nouveaux travailleurs à planifier"
.Body = "Bonjour" & Chr(13) & Chr(10) & _
 Chr(13) & Chr(10) & "Voici la liste des formations à planifier." _
 & Chr(13) & Chr(10) & _
 Chr(13) & Chr(10) & "Merci de me confirmer les dates planifiées dans les 5 jours ouvrables." _
& Chr(13) & Chr(10) & _
 Chr(13) & Chr(10) & " Formation de Savoir-Etre : " & Text_SE_B _
& Chr(13) & Chr(10) & " Formation de Savoir-Fer : " & Text_SF_B _
& Chr(13) & Chr(10) & " Formation Techniques de nettoyage : " & Text_TDN_B _
& Chr(13) & Chr(10) & "Bonne journée à vous." _
& Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Latifa"
.Display
 End With
 End With
End Sub

Merci beaucoup pour votre aide.

10pour-forum.zip (675.42 Ko)

Bonjour Lorence,

Bonjour la lenteur d'ouverture du fichier

Ceci dit, je ne comprends pas votre code

Vous mettez dans une variable une seule cellule et vous en faite un split()

A+

Oui effectivement, j'essaie de trouver une solution mais pour l'instant je n'y arrive pas

Il ne doit pas y avoir un seul résultat dans cette variable mais plusieurs, d'où la volonté de splitter pour en faire une liste

Re,

Pour la lenteur, c'est simple supprimez des colonnes car toutes les utiliser => XFC
vous courrez au devant de gros ennuis

Sinon, pour votre souci, je pense que tout vient du fait que vous splitez une variable qui ne contient rien

A+

Re,

C'est bon, j'ai fini par trouver ;)

Private Sub CommandButton1_Click()

Dim i As Long, DerLig As Long
Dim Liste_AM_TDN_B As String
Dim Ol As Outlook.Application
Dim Olmail As MailItem

Liste_AM_TDN_B = ""

With Sheets("Formations NT")
DerLig = .Range("R" & Rows.Count).End(xlUp).Row
For i = 4 To DerLig
If .Range("AN" & i).Value = "" And .Range("S" & i).Value = "Bruxelles" And .Range("AA" & i).Value = "" Then Liste_AM_TDN_B = Liste_AM_TDN_B & Chr(10) & .Range("R" & i).Value
Next i
End With

Set Ol = New Outlook.Application
Set Olmail = Ol.CreateItem(olMailItem)
With Olmail
.To = "jlm@; mo@"
.CC = "fs@"
.Subject = "Formations nouveaux travailleurs à planifier"
.Body = "Jorge, Mehmet" & Chr(13) & Chr(10) & _
 Chr(13) & Chr(10) & "Voici la liste des formations à planifier." _
 & Chr(13) & Chr(10) & _
 Chr(13) & Chr(10) & "Merci de me confirmer les dates planifiées dans les 5 jours ouvrables." _
& Chr(13) & Chr(10) & _
 Chr(13) & Chr(10) & " Formation Techniques de nettoyage : " & Liste_AM_TDN_B _
 & Chr(13) & Chr(10) _
& Chr(13) & Chr(10) & "Bonne journée à vous."
.Display
 End With
End Sub

Au final c'était inutile de spliter, cette méthode m'a mis les résultats à la ligne.

VBA voulait manifestement juste que je définisse d'abord mes variables en "" avant de me les remplir, puisqu'au final c'est tout ce qui a changé.

J'ai bien maintenant tous mes résultats qui s'affichent en colonne dans mon mail ;)

Bonne soirée

Rechercher des sujets similaires à "creer mail variables contenant resultats split"