Envoi par mail (Lotus Notes 7) fichier excel

coolman53

XLDnaute Junior
Bonjour a tous

J'ai trouvé sur divers forum un code permettant l'envoi d'un fichier Excel via une macro

Par contre j'ai plusieurs problemes :

Quand Lotus est deja ouvert sa plante, je voudrai que le code marche meme quand il est ouvert
Le code ne me crée pas le message il m'ouvre juste Lotus

Merci de bien vouloir m'aider

Voici le code :

' --------- Envoi d'un mail avec Lotus Notes ---------- .
'Ajouter la référence Lotus Domino Objects (domobj.tlb) .
'Cocher Référence [x]Lotus Domino Objects .

'Public Sub RoutineEnvoiMailLotus()
Public Sub EnvoiMail_Click()
Application.ScreenUpdating = False
'------- compléter les variables nécessaires pour envoi --------------
AdresDestinataire$ = "??????" 'si plusieurs adresses séparer par le point virgule !
Sujet$ = "????????" ' sujet
Message$ = "??????" ' message
Fichier$ = "??????" ' "NomDuFichier.xls"
Chemin$ = "???????" ' chemin du fichier exp: = ThisWorkbook.Path
If Chemin$ > "" And Right(Chemin$, 1) <> "\" Then Chemin$ = Chemin$ & "\"
CheminEtFichier$ = Chemin$ & Fichier$

'------ départ envoi messagerie --------
'met en tableau si plusieurs adresses !?
If InStr(AdresDestinataire$, ";") = 0 Then AdresDestinataire$ = AdresDestinataire$ & ";"
Dim TabloAdresDestin As Variant
TabloAdresDestin = Split(AdresDestinataire$, ";")

'------ préparation session ------
On Error GoTo ErreurNET: Err.Clear

Dim oSession As Object 'CreateObject("Notes.NotesSession")
Dim UserName As String 'Nom d'utilisateur
Dim DataBase As Object 'Base des mails
Dim DataBaseName As String 'Nom de la base
Dim Document As Object 'Mail
Dim AttachME As Object 'Fich joint en RTF
Dim AttachF1 As Object '1' pièce attachée

' Création de la session
Set oSession = CreateObject("Notes.NotesSession")
' Récupèration du nom d'utilisateur
UserName = oSession.UserName
DataBaseName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
' Ouvre la base des mails (si fermé, ouvre et demande le password)
Set DataBase = oSession.GetDatabase("", DataBaseName)
If Not DataBase.IsOpen Then DataBase.OPENMAIL

' boucle envoi au(x) destinataire(s)
For I = LBound(TabloAdresDestin) To UBound(TabloAdresDestin)
If Trim(TabloAdresDestin(I)) > "" Then
AdresDestinataire$ = TabloAdresDestin(I)
'crée le document et colle /AdresDestinataire /Sujet /Message
Set Document = DataBase.CreateDocument
Document.Form = "Memo"
Document.Sendto = AdresDestinataire$
Document.Subject = Sujet$
Document.Body = Message$
'Joint le Fichier s'il y a !?
If CheminEtFichier$ <> "" Then
Set AttachME = Document.CreateRichTextItem("Attachment")
Set AttachF1 = AttachME.EmbedObject(1454, "", CheminEtFichier, "Attachment")
End If
'Envoi le Mail
Document.SaveMessageOnSend = True 'True = save dans les courriers envoyés
Document.PostedDate = Now() ' date du jour
Document.Send 0, AdresDestinataire$ 'envoi
'reinit adresse suivante !?
Set Document = Nothing: Set AttachME = Nothing: Set AttachF1 = Nothing
End If
Next
GoTo FinMail ' fin ########################################################

ErreurNET:
Msg$ = "Erreur " & Err.Source & " No " & Err.Number & vbLf & vbLf & Err.Description
T$ = "Envoi Mail: Problème de connexion !?"
MsgBox Msg$, vbCritical, T$, Err.HelpFile, Err.HelpContext
GoTo FinMail

FinMail:
'libère les variables Object
Set oSession = Nothing: Set DataBase = Nothing
Set Document = Nothing: Set AttachME = Nothing: Set AttachF1 = Nothing
On Error GoTo 0: Err.Clear
Application.ScreenUpdating = True
End Sub
 

STephane

XLDnaute Occasionnel
Re : Envoi par mail (Lotus Notes 7) fichier excel

Bonjour,

Je n'ai pas Lotus. Ton programme plante-t-il ? Si oui, sur quelle ligne ?
Tu utilises la méthode CeateObject pour créer l'instance "Lotus" quand Lotus est fermé.
Pour capturer l'instance Lotus ouverte, tu peux utilsier laméthode "GetObject", tu trouveras de nombreux exemples liés à Word et Excel sur ce forum.
 

coolman53

XLDnaute Junior
Re : Envoi par mail (Lotus Notes 7) fichier excel

J'ai trouvé ce code qui m'envoi bien le mail quand lotus est deja ouvert par contre j'ai d'autres problemes :

Comment faire pour qu'il m'envoi la feuille voulu en PJ
Je voudrai ecrire un message dans le mail, comment on fait les retour a la ligne

Ex : Bonjour,

Voici le formulaire.......

Cordialement


Merci d'avance pour votre aide


Sub SendNotesMail()

'Set up the objects required for Automation into lotus notes
Dim Maildb As NotesDatabase 'The mail database
Dim MailDoc As Object 'The mail document itself
Dim oSession As NotesSession
Dim dbDirectory As NotesDbDirectory
Dim objNotesField As Object

On Error GoTo ErrHandle


'Démarre une session de notes
Set oSession = New NotesSession
'La ligne suivante ne marche qu'avec les versions 5.x et 6.x , c'est l'injection du mot de passe
oSession.Initialize ("XXXXX")
'Ouvre la base mail en utilisant le serveur par défaut
Set dbDirectory = oSession.GetDbDirectory("XX/XX/XX")
Set Maildb = dbDirectory.OpenMailDatabase
'Création du formulaire d'envoi de mail
Set MailDoc = Maildb.CreateDocument()
MailDoc.AppendItemValue "Subject", "Formulaire FOR0015"
MailDoc.AppendItemValue "SendTo", "X@XX.fr"
Set objNotesField = MailDoc.CreateRichTextItem("Body")
With objNotesField
.AppendText "Bonjour,"
.AppendText "Voici le formulaire FOR0015"
End With
'Envoi le document
If SaveIt = True Then
MailDoc.SaveMessageOnSend = SaveIt 'si à True, Lotus sauvegarde le mail envoyé
End If
Call MailDoc.Send(False)
GoTo ExitHandle
ErrHandle:
MsgBox Err.Description
ExitHandle:
'Vidage mémoire
Set Maildb = Nothing
Set MailDoc = Nothing
Set oSession = Nothing
Set dbDirectory = Nothing
Set objNotesField = Nothing

End Sub
 

Discussions similaires

Réponses
2
Affichages
272
Réponses
6
Affichages
311

Statistiques des forums

Discussions
312 330
Messages
2 087 338
Membres
103 524
dernier inscrit
Smile1813