VBA => modification=> mail lotus note

Bonjour,

Suite à de nombreuses recherches sur Internet depuis 1 mois, j'espère avoir une réponse de votre part afin de m'aider dans mon projet professionnel. Je m'explique:

J'ai un tableau, qui lorsqu'il subit une modification ((ajout de texte, suppression de texte, peu importe), devrait envoyer un mail sur une messagerie lotus note.

Voila.

Merci de m'aider, je galère énormément.

Cordialement.

Toujours dans la même galère, j'ai trouvé ce code, mais ça ne fonctionne pas.

'Public Sub SendNotesMail(Subject as string, attachment as string,

'recipient as string, bodytext as string,saveit as Boolean)

'This public sub will send a mail and attachment if neccessary to the

'recipient including the body text.

'Requires that notes client is installed on the system.

Public Sub SendNotesMail(Subject As String, Attachment As String, Recipient As String, BodyText As String, SaveIt As Boolean)

'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 = Recipient

MailDoc.Subject = Subject

MailDoc.Body = BodyText

MailDoc.SAVEMESSAGEONSEND = SaveIt

'Set up the embedded object and attachment and attach it

If Attachment <> "" Then

Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")

Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")

MailDoc.CREATERICHTEXTITEM ("Attachment")

End If

'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

Cordialement.

bonjour,

une proposition

macros à mettre dans le module de la feuille

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Value <> a Then
        Set NSession = CreateObject("Notes.NotesSession")
        Set NUIWorkspace = CreateObject("Notes.NotesUIWorkspace")
        Set NMailDb = NSession.GETDATABASE("", "")
        NMailDb.OPENMAIL
        Set NUIDocument = NUIWorkspace.ComposeDocument(NMailDb.Server, NMailDb.filePath, "Memo")
        With NUIDocument
            .Fieldsettext "EnterSendTo", "to" ' remplacer to par mail du destinataire
            .Fieldsettext "EnterCopyTo", "cc," ' remplacer cc par mail du carbon copy
            .Fieldsettext "Subject", "modification fichier excel"
            .Fieldsettext "Body", "la cellule " & Target.Address & " a été modifiée. ancienne valeur " & a & ", nouvelle valuer " & Target.Value
            .Document.SaveOptions = "1"
            .Document.MailOptions = "1"
            .Close
        End With
        Set NUIDocument = Nothing
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    a = Target.Value
End Sub

instruction à mettre dans un module standard

Public a

Bonjour h2So4, vraiment génial cette macro. (module de la feuille).

Il y a juste un léger problème, ça envoie à chaque modification de la cellule, mais est-il possible de l'envoyer juste en cas de sauvegarde du fichier ? (enregistrer) Si tu y arrive, tu arrivera à résoudre mon problème que j'ai depuis des mois !!!

Bonjour,

code à mettre dans le module du classeur

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If a Then
        Set NSession = CreateObject("Notes.NotesSession")
        Set NUIWorkspace = CreateObject("Notes.NotesUIWorkspace")
        Set NMailDb = NSession.GETDATABASE("", "")
        NMailDb.OPENMAIL
        Set NUIDocument = NUIWorkspace.ComposeDocument(NMailDb.Server, NMailDb.filePath, "Memo")
        With NUIDocument
            .Fieldsettext "EnterSendTo", "to"    ' remplacer to par mail du destinataire
            .Fieldsettext "EnterCopyTo", "cc,"    ' remplacer cc par mail du carbon copy
            .Fieldsettext "Subject", "modification fichier excel"
            .Fieldsettext "Body", "le fichier a été modifié"
            .Document.SaveOptions = "1"
            .Document.MailOptions = "1"
            .Close
        End With
        Set NUIDocument = Nothing
    End If
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    a = True
End Sub

code à mettre dans un module standard

Public a

Dès que je remplace les adresses mails du code, et qu'ensuite j'enregistre, une fenêtre apparait:

Erreur de compilation:

Seuls des commentaires peuvent apparaître après End Sub, End Function,, ou End Property.

Merci pour ton aide H2so4

correction faite dans mon message précédent

Je n'ai plus d'erreur, mais il ne ce passe rien. Il faut bien mettre le code dans le This workbook ?

dans thisworkbook

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If a Then
        Set NSession = CreateObject("Notes.NotesSession")
        Set NUIWorkspace = CreateObject("Notes.NotesUIWorkspace")
        Set NMailDb = NSession.GETDATABASE("", "")
        NMailDb.OPENMAIL
        Set NUIDocument = NUIWorkspace.ComposeDocument(NMailDb.Server, NMailDb.filePath, "Memo")
        With NUIDocument
            .Fieldsettext "EnterSendTo", "to"    ' remplacer to par mail du destinataire
            .Fieldsettext "EnterCopyTo", "cc,"    ' remplacer cc par mail du carbon copy
            .Fieldsettext "Subject", "modification fichier excel"
            .Fieldsettext "Body", "le fichier a été modifié"
            .Document.SaveOptions = "1"
            .Document.MailOptions = "1"
            .Close
        End With
        Set NUIDocument = Nothing
    End If
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  seta
End Sub

et dans un module standard

Public a
Sub seta()
    a = True
End Sub

Bonjour,

Il me répond dans le workbook:

Erreur de compilation:

Sub ou Function non définie

en me soulignant la dernière ligne

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Cordialement.

C'est bon j'ai réussi :p merci beaucoup !

Je n'avais pas créé le modèle (oui, sans commentaires...)

Merci h2so4

Rechercher des sujets similaires à "vba modification mail lotus note"