Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

AIDE SUR L'AUTOMATION LOTUS NOTES SOUS VB


Information sur la source

Catégorie :OLE, DDE, Automation Niveau : Débutant Date de création : 02/12/2003 Date de mise à jour : 18/11/2004 20:07:30 Vu / téléchargé: 41 017 / 1 075

Note :
6,2 / 10 - par 5 personnes
6,20 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (40)
Ajouter un commentaire et/ou une note

Description

Bonjour à  tous

Voici une aide vraiment bien détaillée pour tous ceux qui veulent utiliser Lotus Notes dans leur application VB et qui n'y arrivent pas...ça arrive des fois !!!!;)

Je vous met le lien vers cette page car le document (900ko en pdf) est trop gros pour aller sur ce site

ftp://ftp.boulder.ibm.com/software/lotus/pub/lotusweb/ssdev/lsvbrb.pdf

Bon code à tous

SeHN
 

Source

  • Option Explicit
  • '---------- API -----------
  • 'pour faire passer au premier plan
  • Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
  • 'pour ouvrir la fenetre
  • Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
  • 'pour verifier si la Lotus est ouvert
  • Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  • Dim sSrvr As String 'the mail server for the current user
  • Dim MailDbName As String 'THe current users notes mail database name
  • Dim UserName As String 'The current users notes name
  • Dim retval As Variant 'Holds return value for functions handle
  • '---------------- fonction ouverture de session Notes -----------
  • Function CreateNotesSession() As Boolean
  • Const notesclass$ = "NOTES"
  • Const SW_SHOWMAXIMIZED = 3 'plein ecran
  • Const SW_SHOWMMINIZED = 2 'reduire
  • Const SW_SHOWWINDOW = 1 'fenetre
  • Const SW_SHOW = 5
  • Dim Lotus_Session As Object
  • Dim rc&
  • Dim lotusWindow&
  • lotusWindow = FindWindow(notesclass, vbNullString)
  • Set Lotus_Session = CreateObject("Notes.NotesSession")
  • sSrvr = Lotus_Session.GETENVIRONMENTSTRING("MailServer", True)
  • MailDbName = Lotus_Session.GETENVIRONMENTSTRING("MailFile", True)
  • UserName = Lotus_Session.UserName
  • DoEvents
  • 'Ouverture de Lotus Notes
  • retval = Shell("C:\APPLI\Notes5\notes.exe =h:\notes\notes.ini", vbMaximizedFocus)
  • 'verifier que Lotus est bien ouvert (recupere le handle)
  • lotusWindow = FindWindow(notesclass, vbNullString)
  • If lotusWindow <> 0 Then
  • rc = ShowWindow(lotusWindow, SW_SHOW)
  • rc = SetForegroundWindow(lotusWindow)
  • CreateNotesSession = True
  • Else
  • CreateNotesSession = False
  • End If
  • End Function
  • Sub CreateMailandAttachFileAdr(Optional IsSubject As String = "", Optional SendToAdr As String, Optional CCToAdr As String, Optional BCCToAdr As String = "", Optional Attach1 As String = "", Optional Attach2 As String = "", Optional body As String = "")
  • Const EMBED_ATTACHMENT As Integer = 1454
  • Const EMBED_OBJECT As Integer = 1453
  • Const EMBED_OBJECTLINK As Integer = 1452
  • Dim s As Object ' use back end classes to obtain mail database name
  • Dim db As Object '
  • Dim doc As Object ' front end document
  • Dim beDoc As Object ' back end document
  • Dim workspace As Object ' use front end classes to display to user
  • Dim bodypart As Object '
  • Dim bodyAtt As Object '
  • Dim lbsession As Boolean
  • lbsession = CreateNotesSession
  • If lbsession Then
  • 'cree la session Lotus Notes
  • Set s = CreateObject("Notes.Notessession")
  • 'se connecte a sa database
  • Set db = s.getDatabase(sSrvr, MailDbName)
  • If db.ISOPEN = True Then
  • 'database deja ouvert
  • Else
  • Call db.Openmail
  • End If
  • 'cree un document memo
  • Set beDoc = db.CreateDocument
  • beDoc.Form = "Memo"
  • 'construction du mail
  • Set bodypart = beDoc.CREATERICHTEXTITEM("Body")
  • 'beDoc.From = "Moi" 'inutile
  • beDoc.SendTo = SendToAdr
  • beDoc.CopyTo = CCToAdr
  • beDoc.BlindCopyTo = BCCToAdr
  • beDoc.Subject = IsSubject
  • '-----------------------------------------
  • 'Remarque si destinataire multiple il suffie de mettre un tableau d'e-mail dans SendTo (CopyTo,BlindCopyTo)
  • 'exemple :
  • 'Dim recip(25) as variant
  • 'recip(0) = "emailaddress1"
  • 'recip(1) = "emailaddress2" e.t.c
  • 'beDoc.sendto = recip
  • '----------------------------------------
  • ' documents joint 1
  • If Len(Attach1) > 0 Then
  • If Len(Dir(Attach1)) > 0 Then
  • Set bodyAtt = bodypart.EmbedObject(EMBED_ATTACHMENT, "", Attach1, Dir(Attach1))
  • End If
  • End If
  • ' documents joint 2
  • If Len(Attach2) > 0 Then
  • If Len(Dir(Attach2)) > 0 Then
  • Call bodyAtt.EmbedObject(EMBED_ATTACHMENT, "", Attach2, Dir(Attach2))
  • End If
  • End If
  • 'Affichage du mail dans Lotus Notes
  • Set workspace = CreateObject("Notes.NotesUIWorkspace")
  • Call workspace.EditDocument(True, beDoc).FieldSetText("Body", body)
  • Set s = Nothing
  • Else
  • MsgBox "Votre Lotus Notes est fermé !"
  • End If
  • End Sub
  • Private Sub envoyer_Click()
  • CreateMailandAttachFileAdr Msujet.Text, Mto.Text, Mcc.Text, Mbcc.Text, MdocJoint1.Text, MdocJoint2.Text, Mbody.Text
  • End Sub
Option Explicit
'---------- API -----------
'pour faire passer au premier plan
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
'pour ouvrir la fenetre
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
'pour verifier si la Lotus est ouvert
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    
Dim sSrvr As String  'the mail server for the current user
Dim MailDbName As String 'THe current users notes mail database name
Dim UserName As String 'The current users notes name

Dim retval As Variant  'Holds return value for functions handle

'---------------- fonction ouverture de session Notes -----------
Function CreateNotesSession() As Boolean
    Const notesclass$ = "NOTES"
    Const SW_SHOWMAXIMIZED = 3 'plein ecran
    Const SW_SHOWMMINIZED = 2 'reduire
    Const SW_SHOWWINDOW = 1 'fenetre
    Const SW_SHOW = 5
    
    Dim Lotus_Session As Object
    Dim rc&
    Dim lotusWindow&
    
    lotusWindow = FindWindow(notesclass, vbNullString)
 
    Set Lotus_Session = CreateObject("Notes.NotesSession")
    sSrvr = Lotus_Session.GETENVIRONMENTSTRING("MailServer", True)
    MailDbName = Lotus_Session.GETENVIRONMENTSTRING("MailFile", True)
    UserName = Lotus_Session.UserName
    
    DoEvents
    'Ouverture de Lotus Notes
    retval = Shell("C:\APPLI\Notes5\notes.exe =h:\notes\notes.ini", vbMaximizedFocus)
    
    'verifier que Lotus est bien ouvert (recupere le handle)
    lotusWindow = FindWindow(notesclass, vbNullString)
    If lotusWindow <> 0 Then
        rc = ShowWindow(lotusWindow, SW_SHOW)
        rc = SetForegroundWindow(lotusWindow)
        CreateNotesSession = True
    Else
         CreateNotesSession = False
    End If
End Function
Sub CreateMailandAttachFileAdr(Optional IsSubject As String = "", Optional SendToAdr As String, Optional CCToAdr As String, Optional BCCToAdr As String = "", Optional Attach1 As String = "", Optional Attach2 As String = "", Optional body As String = "")
Const EMBED_ATTACHMENT As Integer = 1454
Const EMBED_OBJECT As Integer = 1453
Const EMBED_OBJECTLINK As Integer = 1452

Dim s As Object ' use back end classes to obtain mail database name
Dim db As Object '
Dim doc As Object ' front end document
Dim beDoc As Object ' back end document
Dim workspace As Object ' use front end classes to display to user
Dim bodypart As Object '
Dim bodyAtt As Object '
Dim lbsession As Boolean

lbsession = CreateNotesSession

If lbsession Then
    'cree la session Lotus Notes
    Set s = CreateObject("Notes.Notessession")
    'se connecte a sa database
    Set db = s.getDatabase(sSrvr, MailDbName)
    If db.ISOPEN = True Then
        'database deja ouvert
    Else
        Call db.Openmail
    End If
    'cree un document memo
    Set beDoc = db.CreateDocument
    beDoc.Form = "Memo"
    
    'construction du mail
    Set bodypart = beDoc.CREATERICHTEXTITEM("Body")
    'beDoc.From = "Moi" 'inutile
    beDoc.SendTo = SendToAdr
    beDoc.CopyTo = CCToAdr
    beDoc.BlindCopyTo = BCCToAdr
    beDoc.Subject = IsSubject
    '-----------------------------------------
    'Remarque si destinataire multiple il suffie de mettre un tableau d'e-mail dans SendTo (CopyTo,BlindCopyTo)
    'exemple :
    'Dim recip(25) as variant
    'recip(0) = "emailaddress1"
    'recip(1) = "emailaddress2" e.t.c
    'beDoc.sendto = recip
    '----------------------------------------
    ' documents joint 1
    If Len(Attach1) > 0 Then
        If Len(Dir(Attach1)) > 0 Then
           Set bodyAtt = bodypart.EmbedObject(EMBED_ATTACHMENT, "", Attach1, Dir(Attach1))
        End If
    End If

    ' documents joint 2
    If Len(Attach2) > 0 Then
        If Len(Dir(Attach2)) > 0 Then
            Call bodyAtt.EmbedObject(EMBED_ATTACHMENT, "", Attach2, Dir(Attach2))
        End If
    End If
        
    'Affichage du mail dans Lotus Notes
    Set workspace = CreateObject("Notes.NotesUIWorkspace")
    Call workspace.EditDocument(True, beDoc).FieldSetText("Body", body)

    Set s = Nothing
Else
    MsgBox "Votre Lotus Notes est fermé !"
End If
End Sub
Private Sub envoyer_Click()
    CreateMailandAttachFileAdr Msujet.Text, Mto.Text, Mcc.Text, Mbcc.Text, MdocJoint1.Text, MdocJoint2.Text, Mbody.Text
End Sub

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

18 novembre 2004 20:07:31 :

Commentaires et avis

signaler à un administrateur
Commentaire de jack le 02/12/2003 20:31:03 administrateur CS

Salut Sehn
Dommage, le lien ne fonctionne pas.
Je l'ai quand même trouvé à celle-ci : http://suitedev.psclistens.com/lotus/smtsuite/smtstdev.nsf à gauche dans la rubrique "Resources" et le lien "LotusScript for Visual Basic Programmers"
Si tu as planché sur le problème des mails gérés par LotusNotes : petite question.
Mon appli possède une liste de destinataires et je voudrais envoyer cette liste à LotusNotes simplement pour qu'il crée un nouveau mémo avec tous ces noms MAIS sans l'envoyer, juste m'éviter de le créer moi-même et de copier-coller ces noms.
Une idée ?

signaler à un administrateur
Commentaire de sehn le 03/12/2003 10:56:57

Salut Jack,

J'ai mis a jour ma source. J'espere que ca va t'aider.
J'ai retester mon lien, et il fonctionne bien !!!!!

bon code
SeHN

signaler à un administrateur
Commentaire de Dalton le 03/12/2003 23:06:07

Ma conexion à lotus note nécessite un mot de passe, y a t il une instruction pour transmettre le mot de passe par VB?
Merci.

signaler à un administrateur
Commentaire de ITALIA le 05/01/2004 16:21:25

Chez moi ca met une erreur sur la ligne du CreateObject :

Erreur d'exécution '429' :
Le Composant ActiveX ne peut creer l'objet

D'ou vient cette erreur ????

MERCI D AVANCE

signaler à un administrateur
Commentaire de sehn le 08/01/2004 18:29:55

Tu as bien Lotus Notes sur ton PC ? Quel est ta version de Lotus Notes ?
Bizzard !!!
il n'est pourtant pas nécessaire d'ajouter de référence

signaler à un administrateur
Commentaire de ITALIA le 09/01/2004 08:18:19

G la version Lotus Notes R5, qui fonctionne bien pourtant !!
T sur qu'il ni a pas de Ref a mettre ?

signaler à un administrateur
Commentaire de BIG10 le 10/02/2004 16:26:07

Bonjour,

j'ai voulu utiliser cette fonction mais j'ai un problème car une erreur se produit au niveau de call workspace.editdocument (true,bedoc).fieldsettext ("Body",body)
En effet, le message d'erreur me dit que la commande spécifiée n'est pas disponible à partir de l'espace groupe de travail...

En fait au niveau lotus j'ai un espace de travail puis plusieurs bases de documents dont une me servant pour la messagerie... Comment dois je faire pour y avoir accès en VBA?

Merci pour réponse

signaler à un administrateur
Commentaire de sehn le 11/02/2004 16:27:20

salut big10

je ne possède plus d'environnement Lotus Notes donc je ne peux pas  tester ton problème. Mais je penses que tu dois définir ta base de travail (pourtant, dans mon code c'est déjà fait)  avant d'ouvrir ton mail.
Regarde dans le document pdf que j'ai mis dans ma source page 130.
Je suis désolé de ne pas pouvoir t'aider plus que ça

SeHN

signaler à un administrateur
Commentaire de TonTonFr le 14/05/2004 12:21:25

salut, je veux accéder à lotus à partir d'un prog delphi donc j'ai fait à peu de choses près la même chose que toi pour ce qui est des appels de fonctions. Mais un problème se pose à moi parce que je souhaiterai automatiser mon prog pour qu'il reste invisible à l'utilisateur, et donc que lotus ne s'ouvre pas (ou au pire, se ferme après).
J'ai déjà fait de l'ole-automation avec excel et j'ai vu qu'il n'était pas obligatoire d'ouvrir excel pour le faire. Est-il possible de faire pareil avec lotus ou doit-on toujours ouvrir Lotus pour acceder aux bases?
Enfin, comme j'ai dit, au pire, je veux bien qu'il s'ouvre mais à condidtion que je puisse le fermer après.. C'est possible de le fermer à partir de mon prog delphi?

D'avance merci
TonTon

signaler à un administrateur
Commentaire de thorch68 le 11/06/2004 18:17:46

salut, excellent ce code, j'aimerais savoir, si en creant une table avec des adresses mails, on peut envoyer certains fichier a certaines personnes en un seul coup.

Je m'explique : Je souhaiterais envoyer a plusieur destinataires xxx@xxx.fr, yyy@ttt.fr, .... le fichier aaa.zip
rrr@xxx.fr, uuu@uuu.fr, .... le fichier bbb.zip

les adresses sont dans une table qui contient deus colonnes : une pour les adresses mail et l'autre, le chemin d'accès du fichier à envoyer pour cette personne.

Franchement j'ai trop galeré pour trouver. Si quelqu'un peut m'aider

signaler à un administrateur
Commentaire de aithamus le 23/06/2004 15:39:53

bonjour tout le monde,
j'ai dévélopper un code tout simple pour accéder à des bases de données lotus Notes 4.6 (activeX) qui pourrait répondre à la question de BIG10 :

    Dim ws As Object
    Set ws = CreateObject("Notes.NotesUIWorkspace")
    Call ws.OpenDatabase(ServerName, BasePath)

ça marche mais j'ai un petit soucis que vous pourriez peut etre résoudre: quand j'ouvre mes bases, elles sont toujours en mode réduit dans la barre des taches, alors que je voudrais que la base ouverte s'affiche en plein écran!

merci d'avance pour votre aide !!!

ensuite, si quelqu'un s'y connait au démarches à faire afin de signer un controle ActiveX (inséré dans une page HTML) pour qu'il soit téléchargeable par les navigateurs IE des postes client  sans problèmes, je lui serai reconnaissant de me donner quelques tuyaux
et encore merci!!!

signaler à un administrateur
Commentaire de DotNET74 le 12/07/2004 21:57:56

Bonjour,

Voilà je voulais savoir comment créer un mail Lotus Notes qui s'appui sur un des modèles de mail disponible dans Lotus.

Merci

signaler à un administrateur
Commentaire de Lezar le 03/09/2004 15:04:16

Bonjour,
j'ai utilisé le script qui fonctionne bien, mais je voudrais importer un fichier .rtf dans le corps du mémo.

Pour cela, je rajoute les lignes:
set uidoc=workspace.currentdocument
uidoc.import "Microsoft RTF","C:\test.rtf"

Mais cela ne fonctionne pas car "Microsoft RTF" n'est pas la bonne valeur pour que Notes reconnaisse que c'est un fichier RTF.
(j'ai aussi essayé "RTF" ou "MicrosoftWord RTF" mais sans résultat !Par contre quand je met "html" ça marche, mais moi je veux du RTF !!)

Quelqu'un peut-il m'aider ?

signaler à un administrateur
Commentaire de rokar le 18/11/2004 12:00:25

Bonjour,

Je ne suis pas un pro de programmation lotus, et c'est mon premier coup d'essai. J'ai repris ton code (qui est poussé par rapport à mes connaissances), mais ça affiche des messages d'erreurs, ensuite ça ouvre lotus, crée le message mais ne l'envoi pas. Je l'envoi donc manuellement, mais le message reçu n'est pas affichable (erreur du genre : subforms connet be displayed ...).
Bref, j'ai essayé de le simplifier pour :
- ne pas utiliser Shell de VB
- ne pas tester si la fenetre lotus est ouverte ou pas
...

Bref ça donne ceci :

'-----------------------------------------------------------------------
Const EMBED_ATTACHMENT As Integer = 1454
Const EMBED_OBJECT As Integer = 1453
Const EMBED_OBJECTLINK As Integer = 1452

Dim session As Object    'NOTESSESSION
Dim doc As Object    'NOTESDOCUMENT
Dim db As Object    'NOTESDATABASE

Set session = CreateObject("Notes.NotesSession")    'Ouvre unje session lotus notes
Set db = session.getDatabase(session.GETENVIRONMENTSTRING("MailServer", True), session.GETENVIRONMENTSTRING("MailFile", True))  'ouvre la base de donnée lotus mail

Set doc = db.CreateDocument()

Dim bodypart As Object
Set bodypart = doc.CREATERICHTEXTITEM("Body")

doc.Form = "SENT"   'Ouvre la page SENT
doc.Subject = "Transfert de courrier automatique"   'sujet du mail
doc.body = "Bonjour ce mail a été envoyé automatiquement"   'Contenu du mail
doc.SendTo = "john.doe@lotus.www"   'destinataire du mail

Dim bodyAtt As Object
Dim attach As String
attach = "C:\Setup.txt"
If Len(attach) > 0 Then
    If Len(Dir(attach)) > 0 Then
        Set bodyAtt = bodypart.EmbedObject(EMBED_ATTACHMENT, "", attach, Dir(attach))
    End If
End If

Call doc.Save(True, True)    'sauvegarde le mail
Call doc.send(True)    'envois le mail

Set db = Nothing
Set session = Nothing

'-----------------------------------------------------------------------

Le seul inconvénient c'est que lotus reste ouvert après l'envoi du mail.

Est-ce que quelqu'un a une idée sur la méthode comment insérer du code formaté dans le corps du message (html ou autre solution) ?

signaler à un administrateur
Commentaire de rokar le 18/11/2004 12:04:43

Désolé, j'ai oublié :

Merci SeHN

P.S : le raccourci vers le document pdf ne fonctionne pas

signaler à un administrateur
Commentaire de sehn le 18/11/2004 20:05:22

salut roker et les autres

Je suis désolé je ne peut plus utiliser ce code car je ne possede plus d'environnement lotus

je remets un lien qui fonctionne ce jour

ftp://ftp.boulder.ibm.com/software/lotus/pub/lotusweb/ssdev/lsvbrb.pdf

mais le mieux à faire si ce lien ne marche plus c'est de faire une recherche sous google avec comme mot clef  " lsvbrb.pdf "

bon courage

SeHN

signaler à un administrateur
Commentaire de skowee59 le 29/03/2005 14:31:47

Je sais envoyer un Lotus sans problème.
Seulement je voudrais faire un test (pour une autre appli) pour voir si Lotus Notes est ouvert. Je pensais utiliser CreateObject("") puis IsOpen mais bien sur dès que j'utilise CreateObject(""), il me lance forcément Lotus !
Quelqu'un aurait-il une solution comme du style 'tester la présence du processus nlnotes.exe" (que j'ai essayé mais ne marche pas)
Merci

signaler à un administrateur
Commentaire de fmoriss le 27/04/2005 20:59:21

Skowee,

Voici un bout de code en VBScript qui permet de vérifier si Notes est ouvert ou non, en vérifiant la présence de NLNOTES.EXE en mémoire:

Set WshShell = WScript.CreateObject("WScript.Shell")

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'NLNOTES.EXE'")
    
If colProcesses.Count = 1 Then
    WScript.echo "Lotus Notes est en cours d'utilisation."
Else
WScript.echo "Lotus Notes n'est pas en cours d'utilisation."
End If

Fred

signaler à un administrateur
Commentaire de mavreick le 11/05/2005 19:38:39

bonjour,

quelqu'un peut il me dire si ce code marche sous lotus 6.5.3

je suis novice et je me sers de vba sous excel pour tester ce code mais ça ne marche pas.

merci de bien vouloir me répondre

signaler à un administrateur
Commentaire de sadate le 04/10/2005 17:28:18

Envoyer un jpg par VB6 vers Lotus Notes dans le body URGENT

Bonjour,

Voici mon problème

Je voudrais envoyer une image JPG vers Lotus Notes mais qui s'affiche dans
le body de Lotus Notes

Voici mon code.

Que dois-je modifier?


Public Sub SendEmailHide(strSubject As String, strMessage As String,
strRecipient As String, _
                  blnSaveIt As Boolean, Optional strCheminAttachment As
String, _
                  Optional strCopyRecipient As String, _
                  Optional strBlindCopyRecipient As String)
'***************************************************************************
**************
'* Envoi un message automatiquement, sans le montrer à l'usager
'* Inputs :
'*   strSubject   : sujet du message
'*   strMessage   : Corps du message
'*   strRecipient : Destinataires du message séparés par une virgule
'*   blnSaveIt    : True= on enregistre le message, False= on ne garde pas
de copie du message
'*   strCheminAttachment   : optionnel : chemin et nom du fichier qu'on veut
attacher
'*   strCopyRecipient      : optionnel : Nom des destinataires à mettre en
copie
'*   strBlindCopyRecipient : optionnel : Nom des destinataires à mettre en
copie invisible
'***************************************************************************
**************
    Dim objNotes As Object          'Crée une session Notes
    Dim objNotesDB As Object        'Ouvre la base de données de Notes
    Dim objNotesMailDoc As Object   'Message Notes
    Dim objNotesBody As Object      'Corps du message Notes
    Dim AttachME                    'Pour créer un attachment
    Dim EmbedObj
    Dim arrRecipient() As String             'Array pour la liste des
destinataires
    Dim arrCopyRecipient() As String         'Array pour la liste des
destinataires de copie
    Dim arrBlindCopyRecipient() As String    'Array pour la liste des
destinataires de copie invisible

    On Error GoTo Err:

    'Ouvre la session notes et la base de données active
    Set objNotes = GetObject("", "Notes.Notessession")
    'ObjNotes.GetDatabase(Server, NotesDb)

    Set objNotesDB = objNotes.GETDATABASE("", "")

    'Ouvre la messagerie
    Call objNotesDB.OPENMAIL

    'Créé un nouveau document
    Set objNotesMailDoc = objNotesDB.CREATEDOCUMENT()

    With objNotesMailDoc
        'Transforme le document en mémot
        .Form = "Memo"
        'Place le sujet requis
        .Subject = strSubject


**********************************************  ici le body
je peu tu mettre le chemin et nom du fichier.jpg
exemple :     .Body = strCheminAttachment
*******************************************************

        'Place le message requis
        .Body = strMessage

        'Vérifie s'il enregistre le message
        .SAVEMESSAGEONSEND = blnSaveIt

        'Place le destinataire
        'On doit envoyer un array au SendTo pour qu'il fonctionne
        arrRecipient = Split(strRecipient, ",")
'        Debug.Print arrRecipient(0)
'        Debug.Print arrRecipient(1)
'        Debug.Print arrRecipient(2)
        .sendto = arrRecipient

        'Place la personne en copie
        'On doit envoyer un array au CopyTo pour qu'il fonctionne
        arrCopyRecipient = Split(strCopyRecipient, ",")
        .CopyTo = arrCopyRecipient

        'Place la personne en copie cachée
        'On doit envoyer un array au BlindCopyTo pour qu'il fonctionne
        arrBlindCopyRecipient = Split(strBlindCopyRecipient, ",")
        .BlindCopyTo = arrBlindCopyRecipient

        'Set up the embedded object and attachment and attach it
        'Si envoyer un message d'erreur ne pas attacher un fichier
        If frmCourrierLotus.LabelAction <> "Erreur" Then
            Set AttachME = objNotesMailDoc.CREATERICHTEXTITEM("Attachment")
            Set EmbedObj = AttachME.EMBEDOBJECT(1454, "",
Trim(strCheminAttachment), "")
        End If
        'Envoie le message (Je sais pas ce que fais le False)
        Call .Send(False)
    End With

    Set objNotes = Nothing
    Set objNotesDB = Nothing
    Set objNotesMailDoc = Nothing
    Set objNotesBody = Nothing

    Exit Sub

Err:
    MsgBox "Le message n'a pu être envoyé.  Vérifiez avec l'administrateur
de ce programme"
    'Il fait l'erreur quand la boîte de messagerie est trop pleine.
End Sub

signaler à un administrateur
Commentaire de LEDUFF le 21/11/2005 13:31:13

Bonjour je ne suis absolument pas un pro. J'ai un vrai besoin par contre: POuvoir envoyer un modele Mail Notes à une liste de destinataire et que celui ci devienne un de leur modeles. Je suis en Notes V5. Merci de votre aide

signaler à un administrateur
Commentaire de sds972 le 28/11/2005 15:03:22

Hello Hello!
Super la source, ça marche nickel apres qqes adaptations.
Je reste bloquée un peu betement dans le contenu du mail.
Je m'explique :
Mon fichier excel est un formulaire de demande.Le contenu du mail doit contenir le fichier (ça c ok ;-) ) et un resumé des infos du formulaire.

Exemple:

Demandeur : XXXXX
Date de la demande : XX/XX/XX
Urgent : OUI

Dans le code :
mailbody = vbCr & "Demandeur : " & param1 & _
           vbCr & "Date Demande : " & param2 & _
           vbCr & "Urgent :  " & param3

Ce "mailbody", je le passe en paramètre de la fonction CreateMailandAttachFileAdr.

Ben ce $&#%*µ$ de Lotus, il n'interprete pas mes passages à la ligne et m'ecrit tout d'une seul bloc et c'est pas tres joli ...
Une idée?
D'avance merci!

signaler à un administrateur
Commentaire de sds972 le 28/11/2005 16:14:08

Re - moi, j'ai ma reponse tte seule comme une grande :

VbCrLf
au lieu de
VbCr

Saluté!

signaler à un administrateur
Commentaire de skowee59 le 10/01/2006 16:00:50

Bonjour,

Dans l'ensemble, l'envoi de Lotus fonctionne bien ... sous XP. Lorsque le code est exécuté sous Windows NT4, l'applicatif génère une erreur à l'étape CREATEDOCUMENT --> "Database names.nsf has not been opened yet". Il s'agit du même code légèrement remanié mais je ne comprends d'où vient le problème entre XP et NT4...
Une idée ?
Merci

signaler à un administrateur
Commentaire de julien_u le 22/01/2006 15:02:47

script très intéressant !
mais je cherche dans un premier temps à créer un nouveau utilisateur lotus notes en vbs, ce qui me permettrait de créer dans un seul script de créer un nouvel utilisateur dans l'active directory, dans lotus etc...
Est ce possible ?

Merci

signaler à un administrateur
Commentaire de irq11 le 12/05/2006 19:48:00

bonjour,

merci pour le script, tout marche nickel sauf la ligne suivante

Call workspace.EditDocument(True, beDoc).FieldSetText("Body", body)

vbscript me renvoie une erreur : erreur d'exécution 7419, incorrect argument type:
object expected.

j'ai juste un client lotus 6.5.5.

j'ai même essayé ce que disait aithamus le 23/06/2004 15:39:53 mais même problème.

une idée ?

merci d'avance

signaler à un administrateur
Commentaire de ljouvenaux le 08/06/2006 14:33:28

Bonjour,

Une tres bonne macro qui rend bien service !
Voici une adaptation pour MS Access VBA (2eme partie uniquement):
j'ai 2 parametres en plus de l'originale :
- pathtonotes : sert dans la 1ere macro (CreateNotesSession), vous savez ou
- SaveSentMessages : true/false
Les 3 "sendto" sont envoyes avec ","(virgule) separateur

Sub CreateMailandAttachFileAdr(pathtonotes, SaveSentMessages, SendToAdr, IsSubject, IsBody, Optional CCToAdr, Optional BCCToAdr, Optional Attach1, Optional Attach2)
    Const EMBED_ATTACHMENT As Integer = 1454
    Const EMBED_OBJECT As Integer = 1453
    Const EMBED_OBJECTLINK As Integer = 1452

    Dim s As Object ' use back end classes to obtain mail database name
    Dim db As Object '
    Dim doc As Object ' front end document
    Dim beDoc As Object ' back end document
    Dim workspace As Object ' use front end classes to display to user
    Dim bodypart As Object '
    Dim bodyAtt As Object '
    Dim lbsession As Boolean

    If CreateNotesSession(pathtonotes) Then
        'creates Lotus Notes session
        Set s = CreateObject("Notes.notessession")
        'database connection
        Set db = s.getDatabase(sSrvr, MailDbName)
        If db.ISOPEN = True Then
            'database already open
            Else
            Call db.openmail
        End If
        'creates a memo
        Set beDoc = db.CreateDocument
        beDoc.Form = "Memo"

        'mail construction
        Set bodypart = beDoc.CREATERICHTEXTITEM("Body")
        beDoc.SendTo = Split(SendToAdr, ",")
        If IsMissing(CCToAdr) = False Then beDoc.CopyTo = Split(CCToAdr, ",")
        If IsMissing(BCCToAdr) = False Then beDoc.BlindCopyTo = Split(BCCToAdr, ",")
        beDoc.Subject = IsSubject
        Call bodypart.APPENDTEXT(IsBody & vbCrLf & vbCrLf)
        
        ' documents joint 1
        If IsMissing(Attach1) = False Then
            If Len(Dir(Attach1)) > 0 Then
                Call bodypart.EmbedObject(EMBED_ATTACHMENT, "", Attach1, Dir(Attach1))
            End If
        End If
        
        ' documents joint 2
        If IsMissing(Attach2) = False Then
            If Len(Dir(Attach2)) > 0 Then
            Dim bodyatt2
               Call bodypart.EmbedObject(EMBED_ATTACHMENT, "", Attach2, Dir(Attach2))
            End If
        End If
        
        'Sends the document
        If SaveSentMessages = True Then beDoc.SAVEMESSAGEONSEND = True
        Call beDoc.Send(True)
        
        Set s = Nothing
    Else
        MsgBox "Lotus Notes is Closed, Could not send the mail"
    End If
End Sub


Par contre, j'ai un probleme : si je me l'envoie, OK, mais des que ca va dans une version superieure a la mienne, quand la personne ouver le mail elle a un message comme quoi les forms ne sont pas bonne (invalid circular use). Quelqu'un a ce probleme ?

signaler à un administrateur
Commentaire de ljouvenaux le 09/06/2006 06:16:21

Pour eviter les erreurs de type "invalid circular use", remplacer :
Call beDoc.Send(True)

par

Call beDoc.Send(False,false)

signaler à un administrateur
Commentaire de Sonar92 le 30/11/2006 17:02:33

Bonjour,
Merci à ceux qui m'ont apporté de l'aide d'envoi de mail avec Lotus Note, ça m'a bien servi. Cependant pour info, j'ai rencontré un souci sur la ligne suivante :
beDoc.Form = "Memo"
Quand j'essaie d'ouvrir le mail reçu, j'ai le message suivant de Lotus Note : "A stored form can not contain computed subforms". Ce message apparait plusieurs fois avant que le mail s'ouvre enfin. Pour que ça marche normalement j'ai dû changé en :
beDoc.Form = "Form"

Là, ça marche bien ! Est-ce Lotus Note V6 qui fait ça ? ...

signaler à un administrateur
Commentaire de picar le 03/12/2006 21:45:08

Bonjour,
Votre macro est très interressante pour envoyer un texte ou un fichier attaché
d'ailleur je m'en suis déjà servi mais aujourd'hui j'ai besoin en plus d' envoyer un tableau de mon fichier excel dans le corps de mon mail (de préférence pas entant qu'image, pour qu'on puisse utiliser le tableau ensuite quand on reçoit l'email)?
Merci pour votre aide j'ai vraiment besoin de trouver cette instruction !

signaler à un administrateur
Commentaire de DominiqueRT le 12/12/2006 08:06:26

Bonjour,

J'ai le même besoin ; à savoir importer dans le Mail :
- un tableau (range) extrait d'Excel (pour un tableau croisé dynamique),
- un graphique (pas un fichier car j'y arrive avec NotesField = NotesField.EmbedObject(1454, "", FileStr) )

En remplaçant 1454 (EMBED_ATTACHMENT) par EMBED_OBJECT = 1453 ou EMBED_OBJECTLINK = 1452 je n'arrives à rien d'exploitable.

Si vous avez des idées je suis preneur.

Merci

signaler à un administrateur
Commentaire de IPEC le 29/01/2007 15:52:02

Bonjour,

Je suis preneur comme DOMINIQUE RT de toutes infos concernant la création d'un lien (hotspot) vers un fichier sous Notes 6 (évitant ainsi dans mon cas de charger la messagerie par des pieces jointes). L'utilisation de EMBED_OBJECTLINK (1452) genere bien un mail mais aucun lien n'apparait (il semblerait d'aprés le poids du mail que la piece jointe est en plus inserée !).

Merci de vos réponses.

signaler à un administrateur
Commentaire de Le Cyd le 04/04/2007 16:40:50

Bonjour, je trouve ce script super génial étant donné que je séchais sur ce point. Cependant, quand je veux l'éxecuter, le débogueur excel se lance et me dit que les variables sons non-définies à cet emplacement :
[code]Private Sub envoyer_Click()
    CreateMailandAttachFileAdr Msujet.Text, Mto.Text, Mcc.Text, Mbcc.Text, MdocJoint1.Text, MdocJoint2.Text, Mbody.Text
End Sub
[/code]
Si quelqu'un peut me dire pourquoi, je le remercie d'avance.

Aussi, j'ai un fichier xls qui se présente comme suit :
Nom: xxxx
Prénom: xxxx
Date de demande : xx/xx/xx
Demande : xxxxx

et je voudrais que ça apparaisse dans le corps de mon mail lotus. Comment faire ?
Et enfin, comment faire pour que s'inscrive automatiquement un objet dans le champ "object" du mail lotus ?

Merci beaucoup. En plus, je ne suis pas une pro donc je suis ouverte à toutes propositions. ^^

signaler à un administrateur
Commentaire de sehn le 18/04/2007 15:59:48

Bonjour CYD,
je ne passe plus souvent par la, mais je vois que la source sert encore.
De mémoire, pour ce qui est des variables non défini il s'agit en faite d'objet :
Msujet.Text, Mto.Text, Mcc.Text, Mbcc.Text, MdocJoint1.Text, MdocJoint2.Text et  Mbody.Text sont des textbox (zone de texte)
tu doit les créer.
Pour ce qui est de mettre un Objet automatique il suffit de faire Msujet.text="le titre que je veux" idem pour le reste :
Mbody.Text ="Nom: xxxx " & vbcr & "Prénom: xxxx " & vbcr & "Date de demande : xx/xx/xx " & vbcr & "Demande : xxxxx"
voila

Sehn

signaler à un administrateur
Commentaire de Le Cyd le 23/04/2007 18:02:14

D'accord ! C'est super ! merci pour la réponse vraiment !
Le dernier de mes soucis est que, je ne crois pas avoir bien saisi le sens de Mbody.txt. Comment faire pour que le nom et le prénom + date apparaissent dans le corps de mémo ?
Quand j'utilise la solution donnée, Lotus me marque "Faux" dans le corps du mémo. Comment faire alors ?
Et les nom prénoms date, doivent apparaître dans une cellule ou dans tout doit être dans une seule textbox ?
Merci d'avance. Vraiment ce script est génial.

signaler à un administrateur
Commentaire de bennbenn le 07/05/2007 19:51:25

Bonjour,

J'ai un programme similaire qui fonctionne bien sur un mon poste, j'ai essayé de le lancer sur un autre poste avec les mêmes caractéristiques mais en gardant lotus ouvert sur mon poste, l'envoie de courriel ne se fait pas et je pense que la raison est que mon lotus est déjà ouvert sur un autre poste.

Y a t-il un moyen d'ouvrir mon lutus sur plusieurs postes en même temps ?

Merci

Benn

signaler à un administrateur
Commentaire de Le Cyd le 11/05/2007 12:00:37

Bien sûr que c'est possible !
Pour cela tu dois récupérer le fichier de connexion sous ton nom :
tu va dans C:\Lotus Notes\Notes\Data\ tonnom.nsf
tu fais un copier / coller sur une clé ou autre et tu le recolle à la même adresse sur ton deuxième PC
( Si il n'est pas direct dans un fichier Lotus regarde dands Program Files)
J'espère que ça va t'aider
Bye

signaler à un administrateur
Commentaire de PhilIT06 le 04/12/2008 18:19:01

Bonjour à tous,
Au niveau de l'envoi de mail par VB en utilisant lotus mail, après avoir parcouru les différents forums, je n'ai pas de problème ou presque.
Par contre, dans le corps du texte, je voudrai envoyer un document HTML mais là les choses se corsent.
En effet, je voudrai envoyer un document HTML lisible (non un lien) si j'utilise EMBED_OBJECT lors de la réception, le message est transformé en :
Embedded image moved to file: pic30523.jpg où le jpg est une petite image qui ne veut rien dire.
J'ai également remarqué que le message ne comporte pas de signature alors que par défaut, j'ai un document HTML.
J'ai pensé également ne pas mettre de "Body" et ne mettre qu'une nouvelle signature qui serait en fait mon document HTML, mais je ne sais pas faire.
Ene effet, on sait paramétrer le destinataire, le sujet, le corps du texte mais les infos concernant les signatures manquent.
Toutes les aides seront les bien venues.
Merci et à bientôt de vous lire.  

signaler à un administrateur
Commentaire de fleurdemavie le 27/03/2009 17:54:32

Bonjour,
J'ai une base de données lotus note "gestion des clients" stocké dans un serveur.
Le travail qui m'as été demandé c'est d'exporter automatiquement les données de cette base vers une autre base de données ( sous Access par exemple).
J'ai commencer avec lotus script sous Lotus Domino Designer mais j'ai pas réussi à le faire!! J'ai trouvé peu de doc en français!
Existe t'il une autre méthode? Quelle méthode vous me conseiller? c'est vraiment urgent!!
J'utilise Lotus version 5, Windows 2003 Server.
Merci.

signaler à un administrateur
Commentaire de fleurdemavie le 27/03/2009 18:02:18

Je m'excuse pour l'erreur j'utilise Windows 2000 Server

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.