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