Mail sans corps de message

[Résolu/Fermé]
Signaler
Messages postés
11
Date d'inscription
mardi 26 avril 2016
Statut
Membre
Dernière intervention
16 février 2017
-
Messages postés
11
Date d'inscription
mardi 26 avril 2016
Statut
Membre
Dernière intervention
16 février 2017
-
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.
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.

A voir également:

2 réponses

Messages postés
33734
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 octobre 2021
3 770
Bonjour,

Tu fais :
corps = ActiveSheet.Columns("A:D").Rows(i).Select 

... donc ta variable corps.. ne contient rien... là tu ne fais que "séléctionner" une plage de cellules.... !

A la place du "select"... c'est éventuellement "value" qu'il faut utiliser....
Mais sur une "plage" de cellules... tu vas devoir boucler dessus (sur chaque cellule que tu veux inclure dans le message) et concaténer le tout dans ta variable corps.


Messages postés
11
Date d'inscription
mardi 26 avril 2016
Statut
Membre
Dernière intervention
16 février 2017

Pourtant, lorsque je mets :
corps = ActiveSheet.Range("A1:D18").Select
le message contient bien ma sélection, alors pourquoi, les lignes répondant à une condition ne serait pas incluses?
Qu'entendez-vous par boucler dessus?
Messages postés
33734
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 octobre 2021
3 770
...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 fonctionnel
Sub 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                                                                 
Messages postés
11
Date d'inscription
mardi 26 avril 2016
Statut
Membre
Dernière intervention
16 février 2017

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?