Mailing : Envoyer un onglet par destinataire via Lotus

Bonjour à tous,

Ma toute première demande sur un forum! Je trouve des cas de figure qui s'approchent parfois de ma demande, mais je ne suis pas suffisamment douée en la matière pour pouvoir modifier le code "à ma sauce".

Je vous expose ma demande :

Dans un fichier Excel, je souhaite adresser chaque onglet à un destinataire différent par mail (certains onglets bien définis ne devront pas être envoyés, ils servent de base pour alimenter les onglets à diffuser) en tant que pièce jointe.

Un onglet Adresse comporte :

A : le nom des onglets

B : l'adresse mail du destinataire

Je souhaiterais pouvoir générer autant de mails que d'onglets, et dans la mesure du possible, que le mail soit créé mais non envoyé (histoire de pouvoir vérifier et ajouter quelques mots si besoin dans le corps du mail).

Mon fichier comporte une macro qui me permet de créer tous ces onglets, puis également de créer un fichier par onglet dans le répertoire du fichier d'origine.

Donc si besoin, ça serait soit

chaque onglet du fichier actif (sauf onglet adresse, x, y et par exemple) = 1 destinataire = 1 mail avec l'onglet en pièce jointe

soit

chaque fichier dans le répertoire = 1 destinataire = 1 mail avec le fichier en pièce jointe

J'imagine qu'il faut créer une boucle pour cela, mais de combiner autant d'infos, je ne sais pas faire...

Voici un fichier exemple

Je souhaite faire un mail pour chaque onglet :

Bleu

Orange

Vert

Par avance, merci pour votre aide!

Je vous souhaite une belle journée

Cordialement,

Anne

Bonjour,

je n'ai pas Lotus, mais j'ai trouvé le code suivant,

bien sur, il faudrait auparavant enregistrer chaque onglet en fichier pdf puis lancer la macro Envoimail, puis détruire les fichiers pdf.

dit nous si tu as de la difficulté pour la parti enregistrer chaque onglet en fichier pdf , puis détruire ceux-ci

'https://www.excel-downloads.com/threads/macro-excel-pour-envoi-mail-automatique-via-lotus-notes-6-5.105483/
Sub Envoimail()
    Dim EMailPJ As String
    Dim Email(3) As String
    Email(1) = "[email="erenaud@deutsch.net"]erenaud@deutsch.net[/email]"
    Email(2) = "[email="erenaud@orange.fr"]erenaud@orange.fr[/email]"
    For Z = 1 To 2
        EnvoiRef = prvSendNotesMail("Valorisation OF en cours (KKAO)", "", Email(Z), SaveIt:=False)
    Next Z
End Sub
Function prvSendNotesMail(Subject As String, Attachment As String, Recipient As String, SaveIt As Boolean) As Boolean
    '*********************************************
    'Repris et développé par EvilGost
    ' Adapté par Eric RENAUD
    'Subject: Sujet du mail
    'Attachment: Chemin complet du fichier à attacher (ex: "C:\test.txt"),
    'sinon, mettre "" /
    'Recipient: Destinataire (ex: "[email="erenaud@hotmail.fr"]erenaud@hotmail.fr[/email]")
    'Bodytext: Texte du mail
    'SaveIt: sauvegarde du mail dans les courriers envoyés
    '*************************************************************************************************************
    'Set up the objects required for Automation into lotus notes
    Dim Maildb As NotesDatabase    'The mail database
    Dim UserName As String    'The current users notes name
    Dim MailDoc As Object    'The mail document itself
    Dim AttachME As Object    'The attachment richtextfile object
    Dim oSession As NotesSession
    Dim dbDirectory As NotesDbDirectory
    Dim EmbedObj As Object    'The embedded object (Attachment)
    Dim maDate As String
    maDate = Format(Date, "dd-mm-yy")
    Dim objNotesField As Object
    On Error GoTo ErrHandle
    Set oSession = New NotesSession
    'Démarre une session de notes
    'La ligne suivante ne marche qu'avec les versions 5.x et 6.x , c'est l'injection du mot de passe
    oSession.Initialize ("password")
    'Récupère le nom par défaut de la session
    UserName = oSession.UserName
    'Ouvre la base mail en utilisant le serveur par défaut
    Set dbDirectory = oSession.GetDbDirectory("EVREUX01/DEUTSCH")    'vous pouvez mettre l'adresse du serveur dans ces parentheses
    Set Maildb = dbDirectory.OpenMailDatabase
    'Création du formulaire d'envoi de mail
    Set MailDoc = Maildb.CreateDocument()
    ' Accusé reception
    ' MailDoc.AppendItemValue "ReturnReceipt", "1"
    MailDoc.AppendItemValue "Subject", Subject    'remplissage du Sujet
    MailDoc.AppendItemValue "SendTo", Recipient
    Set objNotesField = MailDoc.CreateRichTextItem("Body")
    With objNotesField
        .AppendText "Valorisation OF en cours (KKAO)"
        .AddNewLine 2
        .AppendText "************************************************************************************************************************"
        .AddNewLine 2
        .AppendText "Le fichier est déposé sur V:\TRANSFER\FEDERICO\KKAO\KKAO.xls"
        .AddNewLine 2
        .AppendText "------------------------------------------------------------------------------------------------------------------------"
        .AddNewLine 2
        .AppendText "Cet e-mail a été généré par un processus automatique."
        '.APPENDTEXT "Please follow established contact " & _
         "procedures should you have any questions."
        .AddNewLine 2
        .AppendText "Cordialement"
        .AddNewLine 1
        .AppendText "Eric RENAUD"
        .AddNewLine 1
        .AddNewLine 1
    End With
    'Permet d'attacher un document au mail
    If Attachment <> "" Then
        Set AttachME = MailDoc.CreateRichTextItem("Attachment")
        Set EmbedObj = AttachME.EmbedObject(1454, "", Attachment, "Attachment")
    End If
    'Envoi le document
    If SaveIt = True Then
        MailDoc.SaveMessageOnSend = SaveIt    'si à True, Lotus sauvegarde le mail envoyé
    End If
    Call MailDoc.Send(False)    'j'obtiens une erreur lorsque je mets true au lieu de false, si quelqu'un sait pourquoi
    prvSendNotesMail = True
    GoTo ExitHandle
ErrHandle:
    MsgBox Err.Description
    prvSendNotesMail = False
ExitHandle:
    'Vidage mémoire
    Set Maildb = Nothing
    Set MailDoc = Nothing
    Set AttachME = Nothing
    Set oSession = Nothing
    Set dbDirectory = Nothing
    Set EmbedObj = Nothing
End Function

Bonjour sabV, merci pour ce retour!

j'ai impérativement besoin d'envoyer le fichier au format excel, car il doit m'être renvoyé également en Excel (le client complète le fichier et me le retransmets pour que je l'intègre sur une plateforme...)

Cordialement,

Bonjour,

pour enregistrer chaque onglets en fichier excel, sauf "xx" et "yy",

Sub Créer_fichier()
For Each sht In Worksheets
 If sht.Name <> "xx" Or sht.Name <> "yy" Then ' à adapter
    Sheets(sht.Name).Copy
    ActiveWorkbook.SaveAs Filename:="C:\Users\xxxxxxxx\Documents\" & sht.Name & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close
 End If
Next
End Sub
Rechercher des sujets similaires à "mailing envoyer onglet destinataire via lotus"