VBA : Envoi d'un mail Outlook personnalisé
winnie100gn
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
winnie100gn Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
winnie100gn Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite envoyer à chaque correspondants en charge d'un certain nombre de commerciaux
un mail dont le corps du mail apparaisse 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

Exemple du texte du mail :
Dans le cas d'un seul commercial
"Bonjour,"
"Comment va votre commercial " saut de ligne
"-" Titre + Prénom + Nom ?"
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 de plusieurs commerciaux.
Bonjour,"
"Comment vont vos commerciaux " saut de ligne
"-" Titre + Prénom + Nom ?"
"-" Titre + Prénom + Nom ?"
Merci d'avance car je n'ai pas un niveau très élevé pour imbriquer autant de conditions.
Je souhaite envoyer à chaque correspondants en charge d'un certain nombre de commerciaux
un mail dont le corps du mail apparaisse 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
Exemple du texte du mail :
Dans le cas d'un seul commercial
"Bonjour,"
"Comment va votre commercial " saut de ligne
"-" Titre + Prénom + Nom ?"
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 de plusieurs commerciaux.
Bonjour,"
"Comment vont vos commerciaux " saut de ligne
"-" Titre + Prénom + Nom ?"
"-" Titre + Prénom + Nom ?"
Merci d'avance car je n'ai pas un niveau très élevé pour imbriquer autant de conditions.
Configuration: Windows / Chrome
A voir également:
- VBA : Envoi d'un mail Outlook personnalisé
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
2 réponses
Bonjour,
Essaie de faire plutôt une fusion. Je n'ai pas bien compris comment est organisée ta base en ce qui concerne le correspondant à qui tu écris et les noms des commerciaux.
Regarde ici, j'explique le publipostage de ce type :
http://faqword.com/index.php/word/publipostage/416-publipostage-conditionnel-maison
m@rina
Essaie de faire plutôt une fusion. Je n'ai pas bien compris comment est organisée ta base en ce qui concerne le correspondant à qui tu écris et les noms des commerciaux.
Regarde ici, j'explique le publipostage de ce type :
http://faqword.com/index.php/word/publipostage/416-publipostage-conditionnel-maison
m@rina
Bonjour Marina,
Merci pour ton aide , mais je cherche à envoyer un mail via Vba Excel et mon code ci-dessous ne fonctionne pas pour le correspondant C car il émet un mail ligne par ligne alors que je voudrais dans le cas de ce correspondant C qui a 2 commerciaux qu'il me fasse qu'un seul email avec dans le corps du mail l'énumération des 2 commerciaux:
mon code Vba :
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 pour ton aide , mais je cherche à envoyer un mail via Vba Excel et mon code ci-dessous ne fonctionne pas pour le correspondant C car il émet un mail ligne par ligne alors que je voudrais dans le cas de ce correspondant C qui a 2 commerciaux qu'il me fasse qu'un seul email avec dans le corps du mail l'énumération des 2 commerciaux:
mon code Vba :
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