Mail sans corps de message
Résolu
Bonjour,
j'essaie d'envoyer un mail avec un message mais tout les éléments sauf le corps du mail sont là.
Comment faire pour que le corps soit bien présent dans le mail.
EDIT : Ajout des balises de code.
j'essaie d'envoyer un mail avec un message mais tout les éléments sauf le corps du mail sont là.
Comment faire pour que le corps soit bien présent dans le mail.
Sub mail()
Dim strMail As String
Dim ol As Outlook.Application
Dim olmessage As Outlook.MailItem
Dim corps As String
i = 1
For i = 5 To 50
Next
If Cells(i, 4) = Incomplet Then
corps = ActiveSheet.Columns("A:D").Rows(i).Select
Set ol = New Outlook.Application
Set olmessage = ol.CreateItem(olMailItem)
With olmessage
.To = "test@hotmail.fr"
.Subject = "test de brin"
.Body = corps
.Importance = olImportanceHigh
.Send
End With
End If
End Sub
EDIT : Ajout des balises de code.
2 réponses
-
Modérateur...dans un de tes doublons ... la réponse t'a déjà été donnée....
Lorsque tu fais un .select ... excel retourne comme résultat VRAI ou FALSE ... il ne retourne pas le CONTENU

Au passage .... a quoi te sert cette boucle ?For i = 5 To 50 Next
Elle ne sert strictement à rien... ou alors.. comme je le pense... tu as mal placé le NEXT qui devrait se trouver bien plus bas dans ton code.
Ensuite... pour comparer avec du TEXTE il faut le mettre entre quotes ou guillemets
Ceci :If Cells(i, 4) = "Incomplet" Then 'Là tu compare avec une le texte "Incomplet"
N'est pas la même chose que :If Cells(i, 4) = Incomplet Then 'Là tu compare avec une variable qui aurait comme nom Incomplet
Qu'entendez-vous par boucler dessus?
Parcourir chaque cellule de ta plage pour en récupérer le contenu et le mettre dans ta variable...
....
Voici un code fonctionnelSub mail() Dim strMail As String Dim ol As Outlook.Application Dim olmessage As Outlook.MailItem Dim corps As String Dim rng As Range Dim Destinataire As String Destinataire = "test@hotmail.fr" For i = 5 To 50 If Cells(i, 4) = "Incomplet" Then 'On initialise la variable corps à vide corps = "" 'on boucle de dessus pour récupérer le contenu Set rng = ActiveSheet.Range(Cells(i, "A"), Cells(i, "D")) For Each C In rng corps = corps & " " & C.Value2 Next ' Envoie du mail Set ol = New Outlook.Application Set olmessage = ol.CreateItem(olMailItem) With olmessage .To = Destinataire .Subject = "test de brin" .Body = corps .Importance = olImportanceHigh .Send End With End If Next End Sub
Par contre, pour fonctionner, pense que les utilisateurs doivent impérativement leur Outlook configuré et ouvert sur le pc.
Cordialement,
Jordane-
Bonjour,
Merci pour les infos, toutefois, je ne souhaite pas que la macro envoie un mail pour chaque ligne mais un seul mail regroupant toutes ces lignes, est-ce possible?
Enfin, comment ce fait-il que je reçoit, en plus des informations présentes sur les lignes, un chiffres à virgule relativement long et donc je ne sais pas à quoi il se réfère?
-