Integrer la valeur de cellules dans le corps d'un mail

Bernard-Louis

XLDnaute Occasionnel
Bonjour le forum,

Cette macro envoi des mails a partir d'Excel.


Code:
Sub envoi_mail()

    
    For k = 0 To 1000
    
        ' si la cellule Cells(k + 2, 2) est vide, on arrete
        If Sheets("Messages").Cells(k + 2, 2) = "" Then
            Exit For
        End If
        
    Next k
    
    'pour toute les valeurs de k :
    For i = 2 To k + 1
    
        
        'on crée 2 objets
        Dim ol As Object, NOUVEAU_MESSAGE As Object
        Dim strBody As String
        'ol contient les fonctions d'outlook
        Set ol = CreateObject("outlook.application")
       
        Set NOUVEAU_MESSAGE = ol.CreateItem(olMailItem)
        
        titre_mail = Sheets("Messages").Cells(i, 4)
        courriel_to = Sheets("Messages").Cells(i, 2)
        courriel_cc = Sheets("Messages").Cells(i, 3)
        
        corps_mail = Sheets("Messages").Cells(i, 5) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 6) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 7) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 8) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 9) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 10) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 11) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 12) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 13) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 14) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 15) & Chr(10)
        '
        
        NOUVEAU_MESSAGE.To = courriel_to
        NOUVEAU_MESSAGE.Subject = titre_mail
        NOUVEAU_MESSAGE.cc = courriel_cc
        NOUVEAU_MESSAGE.Body = corps_mail
        
        
     
            NOUVEAU_MESSAGE.Display
            Application.Wait (Now + TimeValue("00:00:02"))
            
            'on clique sur "entrer"
            SendKeys "^{ENTER}", True
            Application.Wait (Now + TimeValue("00:00:04"))
            
            'on detruit notre message dans la mémoire vive
            Set ol = Nothing
            Set NOUVEAU_MESSAGE = Nothing
        
       Next i
    
    
End Sub

Est il possible d'integrer la valeur de cellules dans le corps du mail ?
Après de nombreux essais ce code ne fonctionne pas.

Code:
corps_mail = Sheets("Messages").Cells(i, 5) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 6) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 7) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 8) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 9) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 10) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 11) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 12) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 13) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 14) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 15) & Chr(10)

Y aurait il une solution ?
Merci pour l'aide et bonne journée
 

Pièces jointes

  • Mails fin de mois.xls
    28.5 KB · Affichages: 79

Pierrot93

XLDnaute Barbatruc
Re : Integrer la valeur de cellules dans le corps d'un mail

Bonjour Bernard-Louis

pas ouvert ton fichier, mais petite remarque au passage, dans le code ci-dessous :

Code:
corps_mail = Sheets("Messages").Cells(i, 5) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 6) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 7) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 8) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 9) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 10) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 11) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 12) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 13) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 14) & Chr(10)
        corps_mail = Sheets("Messages").Cells(i, 15) & Chr(10)

ta variable "corps_mail" prendra la valeur de la dernière cellule testée. Il vaudrait mieux coder ainsi :
Code:
corps_mail = corps_mail & Sheets("Messages").Cells(i, 15) & Chr(10)

cela permet de concatener les differentes valeurs.

En espérant t'avoir aider un peu à avancer...

bonne journée.
@+
 

Bernard-Louis

XLDnaute Occasionnel
Re : Integrer la valeur de cellules dans le corps d'un mail

Merci Pierrot93,

Ta solution est la bonne. Les données sont bien importées.

Par contre j'ai un autre probleme,
Le mail 1 est correct par contre
Dans le mail 2, j'ai les données du mail 1 + mail 2
Dans le mail 3, j'ai les données du mail 1 +mail 2+mail 3

Pour le mail 3 ca donne :

Bonjour
Les fichiers suivants sont OK
AAAAAA
BBBBBB
CCCCCCCC
DDDDDDDD
EEEEEEEE
FFFFFFFF
GGGGGGGGGG
HHHHHHH (pas encore OK)
Cordialement

Bonjour
Veuillez m'adresser le fichier du mois :
decembre 2008
Cordialement

Bonjour
Veuillez m'adresser le fichier du mois :
decembre 2009
le plus rapidement possible
Cordialement


As tu une solution pour eviter ce probleme.
Encore merci !!
 

Bernard-Louis

XLDnaute Occasionnel
Re : Integrer la valeur de cellules dans le corps d'un mail

Mille MERCIS Pierrot93, et bonne journée

Ton code fonctionne impeccable.

Voici le code qui fonctionne tres bien, grace a Pierrot93

Code:
Sub envoi_mail()

    'Faire une boucle
    For k = 0 To 100
    
        ' si la cellule Cells(k + 2, 2) est vide, on arrete
        If Sheets("Messages").Cells(k + 2, 2) = "" Then
            Exit For
        End If
        
    Next k
    
    'pour toute les valeurs de k :
    For i = 2 To k + 1
    'Initialiser la variable au début de la boucle
    corps_mail = ""
        
        'on crée 2 objets
        Dim ol As Object, NOUVEAU_MESSAGE As Object
        Dim strBody As String
        'ol contient les fonctions d'outlook
        Set ol = CreateObject("outlook.application")
       
        Set NOUVEAU_MESSAGE = ol.CreateItem(olMailItem)
        
        titre_mail = Sheets("Messages").Cells(i, 4)
        courriel_to = Sheets("Messages").Cells(i, 2)
        courriel_cc = Sheets("Messages").Cells(i, 3)
        
        'Cela permet de concatener les differentes valeurs (corps_mail = corps_mail & Sheets).
        corps_mail = corps_mail & Sheets("Messages").Cells(i, 5) & Chr(10)
        corps_mail = corps_mail & Sheets("Messages").Cells(i, 6) & Chr(10)
        corps_mail = corps_mail & Sheets("Messages").Cells(i, 7) & Chr(10)
        corps_mail = corps_mail & Sheets("Messages").Cells(i, 8) & Chr(10)
        corps_mail = corps_mail & Sheets("Messages").Cells(i, 9) & Chr(10)
        corps_mail = corps_mail & Sheets("Messages").Cells(i, 10) & Chr(10)
        corps_mail = corps_mail & Sheets("Messages").Cells(i, 11) & Chr(10)
        corps_mail = corps_mail & Sheets("Messages").Cells(i, 12) & Chr(10)
        corps_mail = corps_mail & Sheets("Messages").Cells(i, 13) & Chr(10)
        corps_mail = corps_mail & Sheets("Messages").Cells(i, 14) & Chr(10)
        corps_mail = corps_mail & Sheets("Messages").Cells(i, 15) & Chr(10)
        
        
        
        NOUVEAU_MESSAGE.To = courriel_to
        NOUVEAU_MESSAGE.Subject = titre_mail
        NOUVEAU_MESSAGE.cc = courriel_cc
        NOUVEAU_MESSAGE.Body = corps_mail
        
        
     
            NOUVEAU_MESSAGE.Display
            Application.Wait (Now + TimeValue("00:00:02"))
            
            'on clique sur "entrer"
            SendKeys "^{ENTER}", True
            Application.Wait (Now + TimeValue("00:00:04"))
            
            'on detruit notre message dans la mémoire vive
            Set ol = Nothing
            Set NOUVEAU_MESSAGE = Nothing
        
       Next i
    
    
End Sub
 

Discussions similaires

Réponses
6
Affichages
268