Bonjour,
Je souhaite envoyer à chaque correspondants en charge d'un certain nombre de commerciaux
un mail dont le corps du mail contiendrait le titre + Prénom + Nom du commercial. En sachant que chaque correspondant habite dans une ville et a un nombre de commerciaux différents.
Le mail ne se génère que lorsque la colonne Mail = Oui

Exemple du fichier excel

Nom : Capture d’écran 2020-10-27 165755.png
Affichages : 828
Taille : 170,9 Ko

J'ai réussi à faire un code mais le problème est qu' il me génère autant de mail que de ligne à Oui c'est dire 7 au lieu de 6.
Le problème vient du correspondant C qui habite à Bordeaux qui a 2 commerciaux car le code me génère 2 mails au lieu d'un seul.
Par ailleurs , je voudrais que le texte du Body change en fonction du nombre de commercial

Dans le cas d'un seul commercial le corps du mail doit être :

"Bonjour,"
"Comment va votre commercial " saut de ligne
"-" Titre + Prénom + Nom ?"



Dans le cas de plusieurs commerciaux, le corps du mail doit être :

Bonjour,"
"Comment vont vos commerciaux " saut de ligne
"-" Titre + Prénom + Nom ?"
"-" Titre + Prénom + Nom ?"


Ci-dessous le code VBA

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Sub EMAIL()
 
Dim LEMAIL As Variant
Dim ligne As Integer
Dim xSht As Worksheet
 
Set xSht = Sheets("Feuil1")
Set LEMAIL = CreateObject("Outlook.Application") 'création d'un objet outlouk
 
For ligne = 3 To 100
 
If Range("h" & ligne) = "Oui" Then
 
With LEMAIL.CreateItem(olMailItem) ' informe le programme que nous voulons envoyer un mail.
 
.Importance = 2 'Message importante haute
.ReadReceiptRequested = True 'Accusé de lecture
.OriginatorDeliveryReportRequested = True 'Accusé de réception
 
.Subject = "test " 'le sujet
.SentOnBehalfOfName = "adm@gmail.fr" 'la commande SentOnBehalfOfName
permet de prendre le mail générique
.To = Range("G" & ligne) 'placer l'adresse mail du correspondant
.CC = ""
.Body = "Bonjour," & vbCrLf & vbCrLf & "Comment vont vos commerciaux : " & vbCrLf & vbCrLf & Range("b" & ligne) & Range("c" & ligne) & Range("d" & ligne)
 
.Display 'afficher le mail avant de l'envoyer sinon placer send pour envoyer
 
SendKeys "^+{END}", True
SendKeys "{END}", True 'envoi le curseur à la fin du texte
 
End With
 
End If
 
Next ligne
 
End Sub

Merci d'avance car je n'ai pas un niveau très élevé pour imbriquer autant de conditions.