Modification d'un code VBA envoi de mail depuis lotus

link93

XLDnaute Occasionnel
Bonjour le forum,

J'ai trouvé un code VBA qui répond en grande partie à ma problématique :

Sub EnvoiUnMail()
Dim MailAd As String
Dim Msg As String
Dim Subj As String
Dim URLto As String, CC As String
MailAd = Range("d1")
Subj = Range("d3")
Msg = Msg & Range("d4")
CC = Range("D2")
URLto = "mailto:" & MailAd & "?subject=" & Subj & "&cc=" & CC & "&body=" & Msg
ActiveWorkbook.FollowHyperlink Address:=URLto
End Sub

Le problème est que ce code me crée le message dans ma boite mail mais ne l'envoie pas. Comment faire pour qu'il s'envoie automatiquement ?

A l'heure actuel, le code permet d'envoyer un contenu à une personne (Ex adresse mail en d1 recoit le msg écrit en d4).

Comment faire si je veux envoyer également d'autre contenue à d'autre personne ? J'ai copie coller les lignes en changeant les destinations ça fonctionne mais ça me fait un code enorme, peut on indiquer une plage plutot ?

Merci pour votre aide.
 

link93

XLDnaute Occasionnel
Re : Modification d'un code VBA envoi de mail depuis lotus

Bonjour,

Après plusieurs recherche j'ai adapté un code qui répond en partie à ma problématique :

Code:
Sub sendMail2()
    Dim envoyerA As String, envoyerCc As String, Subject As String
    Dim envoyerB As String
      
    ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message :
    envoyerA = Sheets("Feuil2").Range("G20").Value
    envoyerB = Sheets("Feuil2").Range("G21").Value
    ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message en copie carbone (Cc) :
    envoyerCc = ""
    ' Indiquer ici le sujet de l'e-mail :
    Subject = "Test"
      
    Dim s As Object
    Dim docMail As Object
    Dim body As Object
    Dim stream As Object
    Set s = CreateObject("Notes.NotesSession")
      
    Set db = s.CurrentDatabase
    s.ConvertMIME = False ' Do not convert MIME to rich text
      
    'Create email to be sent
    Set docMail = db.CreateDocument
      
    With docMail
        .Form = "Memo"
        .SendTo = envoyerA
        .SendTo = envoyerB
        .copyTo = envoyerCc
        .Subject = Subject
        .From = s.COMMONUSERNAME
        .ReplyTo = s.COMMONUSERNAME
        '.Principal = FROM ADDRESS
                
    End With
      
      Set stream = s.CreateStream
    Set body = docMail.CreateMIMEEntity
    Call stream.WriteText("<h1>Une tâche en , World!</h1><ul><li>Une</li><li>Liste</li><li>À</li><li>Puce</li></ul>")
      '. écrire son message
    Call body.SetContentFromText(stream, "text/html;charset=iso-8859-1", ENC_IDENTITY_8BIT)
      
    Call docMail.SEND(False)
    Set docMail = Nothing
    Set body = Nothing
    Set stream = Nothing
    
      
    MsgBox "Message envoyé"
End Sub

Donc la je peux envoyer plusieurs mail en fonction du nombre de "envoyerA = ..." que je rajoute. Le corps du texte reste le même pour tout les destinataires, j'aimerais si possible faire référence à une cellule pour le corps du texte et non plus l'écrire directement dans le code.

Je voudrais aussi différencier le message en fonction du destinataire.

Ex : envoyerA = Sheets("Feuil2").Range("G20").Value j'envoi le texte en cellule h20

envoyerB = Sheets("Feuil2").Range("G21").Value j'envoi le texte en cellule h21

Merci pour vos retours
 

link93

XLDnaute Occasionnel
Re : Modification d'un code VBA envoi de mail depuis lotus

Bonjour a tous,

Petit à petit l'oiseau fait son nid, je touche presque au but, j'ai maintenant un code qui me permet d'envoyer un mail en prenant en compte les valeurs de cellule pour le constituer et l'envoyer.

Code:
Sub SendNotesMail()
'Set up the objects required for Automation into lotus notes
Dim Maildb As Object 'The mail database
Dim UserName As String 'The current users notes name
Dim MailDbName As String 'THe current users notes mail database name
Dim MailDoc As Object 'The mail document itself
Dim AttachME As Object 'The attachment richtextfile object
Dim Session As Object 'The notes session
Dim EmbedObj As Object 'The embedded object (Attachment)
'Start a session to notes
Set Session = CreateObject("Notes.NotesSession")
'Get the sessions username and then calculate the mail file name
'You may or may not need this as for MailDBname with some systems you
'can pass an empty string
UserName = Session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
'Open the mail database in notes
Set Maildb = Session.GETDATABASE("", MailDbName)
If Maildb.IsOpen = True Then
'Already open for mail
Else
Maildb.OPENMAIL
End If
'Set up the new mail document
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
MailDoc.Sendto = Worksheets(1).Cells(2, 2).Value
MailDoc.CopyTo = "test@gmail.com"
MailDoc.Subject = "Attention retard sur la tâche  " & Worksheets(1).Cells(1, 2).Value
MailDoc.Body = "Bonjour, Vous n'avez plus que 3 jours pour finir la tâche  " & Worksheets(1).Cells(3, 2).Value
MailDoc.SaveMessageOnSend = SaveIt
 
'Send the document
MailDoc.PostedDate = Now() 'Gets the mail to appear in the sent items folder
MailDoc.Send 0, Recipient
 
'Clean Up
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj = Nothing
 
End Sub

Ce qu'il me manque est la possibilité de l'envoyer à plusieurs déstinataire et de pouvoir changer le message en fonction du destinataire. Ex :

destinataire 1 cel a1 msg cel b1 - destinataire 2 cel a2 msg cel b2

Si vous avez une idée sur comment faire je suis prenneur ^^.

Merci
 

Discussions similaires

  • Question
Microsoft 365 Macro VBA
Réponses
2
Affichages
428
Réponses
2
Affichages
140

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 853
Membres
103 975
dernier inscrit
denry