Signaler

Mail sans corps de message [Résolu]

Posez votre question campagnie 11Messages postés mardi 26 avril 2016Date d'inscription 16 février 2017 Dernière intervention - Dernière réponse le 9 oct. 2016 à 19:09 par campagnie
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.
Afficher la suite 
Utile
+0
moins plus
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.


campagnie 11Messages postés mardi 26 avril 2016Date d'inscription 16 février 2017 Dernière intervention - 9 oct. 2016 à 14:42
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?
Répondre
Donnez votre avis
Utile
+0
moins plus
...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                                                                 
campagnie 11Messages postés mardi 26 avril 2016Date d'inscription 16 février 2017 Dernière intervention - 9 oct. 2016 à 19:09
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?
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !