Envoi mail avec lotus par excel vba

measty

XLDnaute Nouveau
Bonjour,

J'ai crée un questionnaire que j'envoie à quelques personnes. Je demande à ces personnes de répondre à ce questionnaire et à la fin du questionnaire il y a un bouton commande "envoyé par mail".

J'aimerais que ce bouton envoie automatiquement le questionnaire via lotus vers ma boite mail crée à cet effet. J'ai testé plusieurs codes qui ne marchent pas. (Bug car lotus fermé, bug dans cette ligne objNotesDocument = objNotesMailFile.CREATEDOCUMENT...)

Je souhaite :
- que ce mail soit envoyé même si lotus est fermé donc demander le mot de passe
- mettre le mail dans "message envoyé"


Pouvez-vous me proposer un code qui marche car cela fait un certain temps que je suis sur cette problématique !!

Merci d'avance !!!
 
C

Compte Supprimé 979

Guest
Re : Envoi mail avec lotus par excel vba

Bonjour Measty et bienvenue sur ce forum.

Merci de bien vouloir effectué une recherche avancée sur le forum avant de poster ;)

Sinon voici un code qui fonctionne très bien, même si Notes n'est pas ouvert
Code:
Option Explicit
Dim ErrLotus As Boolean
Sub EnvoiBordereau()
  Dim DerLig As Long
  Dim VPath As String, VFic As String, VPathFic As String
  ' Initialisation des variables
  VPath = ThisWorkbook.Path
  ' Création d'une copie de la feuille
  Sheets("Bordereau").Copy
  ' Supprimer le bouton sur la feuille copiée
  ActiveSheet.Shapes("BtnMail").Delete
  ' On sauvegarde le nouveau fichier
  VFic = "Bordereau envoi PAF du " & Format(Now(), "dd.mm.yyyy hh:mm") & ".xls"
  VFic = Replace(VFic, ":", "h")
  VPathFic = VPath & "\" & VFic
  ActiveWorkbook.SaveAs VPathFic
  ActiveWorkbook.Close
  ' Créer le message LOTUS
  ErrLotus = False
  Call CreateNotesMsg(VPathFic)
  If ErrLotus = True Then Exit Sub
  ' Effacer ensuite le tableau
  DerLig = Range("A" & Rows.Count).End(xlUp).Row
  Range("A3:H" & DerLig).ClearContents
End Sub
Sub CreateNotesMsg(VPathFic)
  '***********************************************
  'Objet :   Edition d'un message créé dans Notes
  '***********************************************
  Dim oSess As Object
  Dim oDB As Object
  Dim oDoc As Object
  Dim oItem As Object
  Dim WorkSpace As Object
  Dim ntsServer As String
  Dim ntsMailFile As String
  Dim sSendTo As String, sCopyTo As String
  Dim sSubject As String
  Dim sBodyText As String
  '
  On Error GoTo err_CreateNotesMsg
  ' Initialisation des variables
  sSendTo = ThisWorkbook.Sheets("Params").Range("AdrEnvoi")
  sCopyTo = ThisWorkbook.Sheets("Params").Range("AdrCopie")
  sSubject = "Envoi du " & Format(Now(), "dd.mm.yyyy hh:mm")
  '
  Set oSess = CreateObject("Notes.NotesSession")
  ntsServer = oSess.GetEnvironmentString("MailServer", True)
  'Acquière le nom du fichier mailfile de l'utilisateur courant dans Notes.ini
  ntsMailFile = oSess.GetEnvironmentString("MailFile", True)
  Set oDB = oSess.GetDatabase(ntsServer, ntsMailFile)
  ' Vérifier si la base est ouverte
  If oDB.IsOpen = False Then oDB.OPENMAIL
  '
  Set oDoc = oDB.CreateDocument
  'oDoc.Form = "Memo"
  ' Inscrire la/les adresse(s) d'envoi
  oDoc.AppendItemValue "SendTo", sSendTo
  ' Eventuellement la/les adresse(s) de copie
  If Not IsMissing(sCopyTo) Then
    oDoc.AppendItemValue "CopyTo", sCopyTo
  End If
  ' Inscrire le sujet du mail
  If Not IsMissing(sSubject) Then
    If sSubject <> "" Then oDoc.AppendItemValue "Subject", sSubject
  End If
  ' Créer le corps du message
  Set oItem = oDoc.CreateRichTextItem("BODY")
  ' Inscire le texte
  With oItem
    .AppendText "Bonjour,"
    .AddNewline 1
    .AppendText "Vous trouverez ci-joint le bodereau d'envoi,"
    .AppendText "ainsi que les PAF signés"
    .AddNewline 1
  End With
  ' Attacher le fichier de bordereau
  Call oItem.EmbedObject(1454, "", VPathFic, "Attachement")
  ' Ouvrir l'espace de travail
  'Set WorkSpace = CreateObject("Notes.NotesUIWorkspace")
  'Call WorkSpace.EditDocument(True, oDoc)
  ' ou Envoyer le Mail
  Call oDoc.Send(False)
 
exit_CreateNotesMsg:
  On Error Resume Next
  Set oItem = Nothing
  Set oDoc = Nothing
  Set oDB = Nothing
  Set oSess = Nothing
  Exit Sub
err_CreateNotesMsg:
  ErrLotus = True
  If Err.Number = 7225 Then
      MsgBox "Impossible d'attacher le fichier, vérifier le chemin!", vbCritical
  Else
      MsgBox "[" & Err.Number & "]: " & Err.Description
  End If
  MsgBox "Message non envoyé suite erreur!", vbCritical
  Resume exit_CreateNotesMsg
End Sub

Code a adapter selon tes besoins ;)

a+
 

measty

XLDnaute Nouveau
Re : Envoi mail avec lotus par excel vba

Merci beaucoup !

J'ai entré mes paramètres mais il m'indique l'erreur 424 : objet requis. Où dois-je intégrer l'objet? Si c'est bien ce que j'ai compris !

J'ai posté un message car j'ai beaucoup de mal à trouver une réponse à ma question vu le nombre de sujet posté !! ça fait 3 jours que je regarde les forums et que je ne trouve pas mon bonheur ! lol

Merci de m'éclaircir !
 

measty

XLDnaute Nouveau
Re : Envoi mail avec lotus par excel vba

bon en faite j'ai trouvé mais maintenant lotus me demande bien le mot de passe mais après il m'indique le message erreur suivant 7063 database mail replique\... . nsf has not been opened yet et cela me le fait à chaque fois avec les autres codes que j'avais trouvé

Merci d'avance
 

Roland_M

XLDnaute Barbatruc
Re : Envoi mail avec lotus par excel vba

bonjour

sinon une autre du même genre qui fonctionne très bien aussi
pour l'avoir déjà refilé sur le forum et chaque fois satisfait !
bien documenté (en bon français)

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()
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
 

measty

XLDnaute Nouveau
Re : Envoi mail avec lotus par excel vba

Bonjour,

J'ai testé votre code il marche cependant il m'affiche toujours le meme message d'erreur

7063 database mail\réplique... nsf has not been opened yet

Je ne sais plus quoi faire !
 
C

Compte Supprimé 979

Guest
Re : Envoi mail avec lotus par excel vba

Salut,

le problème est à mon avis que tu as une config trop spécifique :rolleyes:

Avec réplication, c'est pas simple, essaye de chercher sur google

A+
 

Discussions similaires

Réponses
2
Affichages
303
Réponses
1
Affichages
155
Compte Supprimé 979
C
Réponses
12
Affichages
284
Réponses
5
Affichages
403

Statistiques des forums

Discussions
312 502
Messages
2 089 022
Membres
104 006
dernier inscrit
CABROL