Microsoft 365 [RESOLU] Mail multi destinataires avec vba

romubzh35

XLDnaute Occasionnel
Bonjour à toutes et à tous,
j'utilise cette macro (peut etre pas optimisée mais qui fonctionne lol) afin d'envoyer une plage de données d'un onglet excel vers le destinaire, en l'occurence coucou@moi.fr.
1_Je souhaiterais savoir comment faire pour pouvoir integrer plusieurs destinaires et que ces destinataires soient plutot sur un onglet excel.
2_comment puis je integrer un texte avant le copier coller de ma plage de données en indiquant un texte en préambule .
merci d'avance pour votre aide, bonne journée.

VB:
Sub envoyermailstockneg()
    Application.ScreenUpdating = False
    Dim oOutlook As Object
    Set oOutlook = CreateObject("Outlook.Application")
    
    Dim oMail As Object
    Set oMail = oOutlook.CreateItem(0)
    
    With oMail
    Dim oObjetWord As Object
    Set oObjetWord = .GetInspector.WordEditor
    
        
    .To = "coucou@moi.fr"
    .Subject = "Mail automatique : " & ThisWorkbook.Name
    Worksheets("PDCA").Select
    Range("A1:N28").Select
            Range("A1:N28").Copy
            oObjetWord.Range(0).Paste
        .Display
        .Save
        .Send
        Application.CutCopyMode = False
        Worksheets("Recapitulatif").Select
        Range("A2").Select
        ActiveWindow.ScrollRow = Selection.Row
        ActiveWindow.ScrollColumn = Selection.Column
        Application.EnableEvents = True
    End With
    
End Sub
 

romubzh35

XLDnaute Occasionnel
Hello

Je ne suis pas sur, mais à priori, pour envoyer ton mail à plusieurs personnes, il ne suffirait pas de modifier juste cette ligne de code
.To = "coucou@moi.fr"

par
.To = "coucou@moi.fr,adresse2@gmail.com,adresse3@yahoo.fr"

??
bonjour,
oui je viens de tester en mettant un ; entre les destinataires et cela fonctionne , merci beaucoup.
il me reste qu'a trouver comment mettre ses destinataires sur un fichier excel et comment mettre un coprs de message avant ma copie de plage de données :)
 

vgendron

XLDnaute Barbatruc
il te suffit de créer une table "Tab_Destinataires" qui te permet de lister les adresses
ensuite, tu crées la chaine "Listedenvoie" en parcourant la table et concaténant les adresses

et pour le message, ca va se passer ici je pense

Range("A1:N28").Copy
oObjetWord.Range(0).Paste

tu créés aussi une chaine de caractères
message="ton texte préliminaire"
puis
message=message &chr(10) &range("A1:N28")
et message.copy....
 

Deadpool_CC

XLDnaute Accro
Bonjour,

Pour tes destinataires, constitue avec une boucle du genre :

VB:
Dim ListeDestinataire as string
ListeDestinataire =""
for each cellule in range(NomDuTableau)
    ListeDestinataire = ListeDestinataire & cellule.value & ";"
Next

ps : code tapé directement ici sans test excel
 

romubzh35

XLDnaute Occasionnel
je crois qu'il va falloir que tu postes ton fichier (sans données perso)
listmail est le nom de la table que tu dois créer pour lister les adresses mail..
donc.. si elle n'existe pas.. vba pas aimer...
alors j'ai effacé pas mal de données avec des infos persos pour pas que cela apparaisse

je ne suis pas un pro VBA je tente de faire de mon mieux ...
mon fichier est apparemment trop voluminueux et la société me bloque l'acces à ci joint...pour le stockage en ligne ,pas simple..

je viens de supprimer un paquet de ligne de calcul j'espere que ca va aller
 

Pièces jointes

  • essai romu.xlsm
    595 KB · Affichages: 14
Dernière édition:

vgendron

XLDnaute Barbatruc
essaie avec ce code

VB:
Sub envoyermailstockneg()
    Application.ScreenUpdating = False
    Dim oOutlook As Object
    Set oOutlook = CreateObject("Outlook.Application")
    
    Dim oMail As Object
    Set oMail = oOutlook.CreateItem(0)
    Dim cellule As Range
    With oMail
    Dim oObjetWord As Object
    Set oObjetWord = .GetInspector.WordEditor
  
    Dim ListeDestinataire As String
    ListeDestinataire = ""
    Range("listmail").Columns(2).Select
    For i = 2 To Range("ListMail").Rows.Count
        If Range("ListMail").Item(i, 2) <> "" Then
            ListeDestinataire = ListeDestinataire & Range("ListMail").Item(i, 2) & ";"
        End If
    Next i
    
    .To = ListeDestinataire
    .Subject = "Mail automatique : " & ThisWorkbook.Name
    
    Worksheets("PDCA").Select
    Range("A1:N28").Select
    Range("A1:N28").Copy
    
    oObjetWord.Range(0).Paste
        .Display
        .Save
        .Send
    Application.CutCopyMode = False
    Worksheets("Recapitulatif").Select
    Range("A2").Select
    ActiveWindow.ScrollRow = Selection.Row
    ActiveWindow.ScrollColumn = Selection.Column
    Application.EnableEvents = True
End With
    
End Sub
 

Discussions similaires

Réponses
11
Affichages
2 K

Statistiques des forums

Discussions
315 089
Messages
2 116 098
Membres
112 661
dernier inscrit
ceucri