Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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.
@+
 
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 !!
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
739
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…