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.
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

  1. 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 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                                                                 
    0
    1. 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?
      0