IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Envoi de mail via lotus notes


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 82
    Points : 52
    Points
    52
    Par défaut Envoi de mail via lotus notes
    Bonjour,

    j'utilise le code de la FAQ, a savoir celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    'Envoi d'un mail avec Lotus Notes
    'Subject : sujet du mail
    'Attachment : nom d'une pièce jointe
    'Recipient : adresse e-mail du destinataire principal
    'ccRecipient : destinataire en copie
    'bccRecipient : destinataire en copie invisible
    'BodyText : corps du mail
    'SaveIt : mettre à True pour que le mail soit sauvegardé
    'Password : mot de passe
     
    Public Sub SendNotesMail(ByVal Subject As String, ByVal Attachment As String, _
                             ByVal Recipient As String, ByVal ccRecipient As String, _
                             ByVal bccRecipient As String, ByVal BodyText As String, _
                             ByVal SaveIt As Boolean, ByVal Password As String)
     
        Dim Maildb As Object      'La base des mails
        Dim UserName As String    'Le nom d'utilisateur
        Dim MailDbName As String  'Le nom de la base des mails
        Dim MailDoc As Object     'Le mail
        Dim AttachME As Object    'L'objet pièce jointe en RTF
        Dim Session As Object     'La session Notes
        Dim EmbedObj As Object    'L'objet incorporé
     
        'Crée une session notes
        Set Session = CreateObject("Notes.NotesSession")
     
        '*** Cette ligne est réservée aux versions 5.x et supérieur : ***
        Session.Initialize (Password)
     
        'Récupère le nom d'utilisateur et crée le nom de la base des mails
        UserName = Session.UserName
        MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
     
        'Ouvre la base des mails
        Set Maildb = Session.GETDATABASE("", MailDbName)
        If Not Maildb.ISOPEN Then Maildb.OPENMAIL
     
        'Paramètre le mail à envoyer
        Set MailDoc = Maildb.CREATEDOCUMENT
        MailDoc.Form = "Memo"
        MailDoc.sendto = Recipient
        MailDoc.CopyTo = ccRecipient
        MailDoc.BlindCopyTo = bccRecipient
        MailDoc.Subject = Subject
        MailDoc.Body = BodyText
        MailDoc.SAVEMESSAGEONSEND = SaveIt
     
        'Prend en compte les pièces jointes
        If Attachment <> "" Then
            Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
            Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
            MailDoc.CREATERICHTEXTITEM (Attachment)
        End If
     
        'Envoie le mail
        MailDoc.PostedDate = Now()
        MailDoc.SEND 0, Recipient
     
        Set Maildb = Nothing
        Set MailDoc = Nothing
        Set AttachME = Nothing
        Set Session = Nothing
        Set EmbedObj = Nothing
    End Sub
    Mais je dois reconnaitre que je suis pas vraiment doué, et je ne vois pas trop comment le faire contionner.

    J'ai créer un bouton auquel j'affecte cette procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub envoi()
        test = SendNotesMail("salut", "", "toto@yahou.fr", "", "", "salut", False, "toto")
    End Sub
    et quand je lance la procédure je recois le message :

    fonction ou variable attendue et cela me souligne : SendNotesMail dans ma fonction envoi.
    Si une ame charitable pouvait m'aider je lui en serait infiniment reconnaisant

    Surtout que je ne vois pas trop comment le code fait pour récupérer la session en ayant que le mot de passe

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    rebonjour,

    alors en supprimant les parentheses de l'appel de la fonction sendnotesmail, j'ai supprimé le premier message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub envoi()
        test = SendNotesMail "salut", "", "toto@yahou.fr", "", "", "salut", False, "toto"
    End Sub
    c'est maintenant Session.Initialize (Password) qui plante.
    Le message d'erreur est : "un composant activex ne peut pas créer d'objet"

    merci d'avance pour votre aide

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Points : 37
    Points
    37
    Par défaut Erreur dans le lancement de la fonction
    Il faut que tu supprime "Test =" dans ton premier message et que tu mettes "call sendmail.....)

    Et ça marche.

    J'ai la même fonction dans une macro

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    salut,
    je te remercie pour ton aide Bibelosse.

    Alors j'ai remplacé comme tu m'as dit test par call sendnotesmail mais j'ai toujours la meme erreur : "un composant activex ne peut pas créer d'objet"

    il ne faut pas modifier autre chose? Il n'y a pas besoin d'ouvrir lotus note non?
    Ce que je comprends pas aussi c'est comment il fait pour récupérer la session en lui donnant juste le mot de passe.

    Edit: j'ai fait un screen avec mon erreur :
    + erreur souligné
    le module en question est le module 1.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    Après avoir lu la faq sur les bug j'ai ouvert lotus note et je n'ai plus l'erreur du composant activex .
    Cela vient d'une dll qui plante apparemment, cela ne se passe pas sur un autre poste.

    En revanche la ligne qui suit :

    Session.Initialize (Password) me met "propriété ou méthode non géré"

    Y a t'il une autre ame charitable que bibelosse pour m'aider s'il vous plait

  6. #6
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264
    Par défaut
    Salut,

    Moi j'ai retiré cette ligne et cela fonctionne, mais bien sûr Lotus doit être ouvert...voilà ! pas super mais bon !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Points : 37
    Points
    37
    Par défaut Complément
    Bon je ne suis plus au boulot mais demain je regarde cela de plus prêt. Eventuellement je t'envoie mon script avec la commande call ...
    As tu activé le complément pour lotus note ?
    Voir dans le menu compléments il faut que l'option Lotus note soit active. Je regarde aussi cela demain matin.

    Bonne soirée.

    Emmanuel

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Points : 37
    Points
    37
    Par défaut Script
    En fait je n'ai coché aucun complément.
    Mon script est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    '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(EmailAddr As String, CopyAddr As String, Texte As String) '(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)
        Dim Temp As String, Message As String
        Dim Rtitem As Object
        Dim MyStyle As Object
     
        '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
     
     
        Temp = Range("A1")
        I = InStrRev(Temp, "\")
        Temp = Right(Temp, Len(Temp) - I)
        Subj = "Demande d'archivage : " + Left(Temp, Len(Temp) - 4)
        If EmailAddr = "elannoy@zodiac.com" Then
            Temp = "File:" + Left(Range("A1"), I)
        Else
            Temp = "File:" + Range("A1")
        End If
     
        Msg = "Bonjour " + Chr(13) + Chr(13) + Texte + Chr(13) + Chr(13) + Temp + Chr(13) + Chr(13) + "Cordialement"
     
        Message = InputBox("Texte à ajouter au mail ", "Ajout texte", "Changement d'indice sans SE : Mettre à jour MOVEX")
        If Message <> "" Then
            Message = "Nota : " + Message
        End If
     
        'Set up the new mail document
        Set MailDoc = Maildb.CREATEDOCUMENT
        MailDoc.Form = "Memo"
        'MailDoc.tmpDisplayFrom = Range("D3")
        'MailDoc.tmpDisplaySentBy = Range("D3")
        'MailDoc.Principal = Range("D3")
        'MailDoc.smtpOriginator = Range("D3")
     
        MailDoc.sendto = EmailAddr
        MailDoc.copyto = CopyAddr
        MailDoc.Subject = Subj
        'MailDoc.ReturnReceipt = "1"
        Set Rtitem = MailDoc.CreateRichTextItem("Body")
        Set MyStyle = Session.CreateRichTextStyle
        MyStyle.Bold = True
        MyStyle.FontSize = 10
        MyStyle.NotesColor = 4
        MailDoc.Font = "Courrier New"
        With Rtitem
            .AppendText "Bonjour,"
            .AddNewLine 2
            .AppendText Texte
            .AddNewLine 2
            .AppendText Temp
            .AddNewLine 2
            .AppendText "Cordialement"
            .AddNewLine 2
            Call Rtitem.AppendStyle(MyStyle) 'Changement style de texte
            .AppendText Message
        End With
        MailDoc.SAVEMESSAGEONSEND = True
        '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, EmailAddr
        MsgBox "Mail envoyé à " + EmailAddr + " - " + CopyAddr
        'Clean Up
        Set Maildb = Nothing
        Set MailDoc = Nothing
        Set AttachME = Nothing
        Set Session = Nothing
        Set EmbedObj = Nothing
    End Sub
    Il est lancé par la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call SendNotesMail("Adressemail1", "Adressemail2", "Textepardéfaut")

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    Merci trini et bibelosse pour vos réponse.

    Alors j'ai d'abord testé ce que trini m'a dit, a savoir supprimer la ligne avec le initialize password et lancé lotus. Ca marche.
    Mais j'aurai aimé ne pas avoir a lancé lotus il n'y a pas un autre moyen?

    Sinon bibelosse j'ai testé ton code mais j'ai la meme erreur avec le controle active x sur la ligne create session au debut.

    j'ai remplacé session as object par session as notesession

    et j'ai fait session = new notesession

    cela marche, ca envoi le mail mais je me prend une erreur du type :

    visual c++ runtime error , abnomal termination et access se ferme.
    Donc le mail est envoyé mais ca me plante access.

    Voila je sais vraiment pas quoi faire , j'ai deja testé pas mal de choses et j'ai fait ce que vous m'avez dit.
    Je suis donc obligé d'ouvrir lotus pour envoyé un mail sans erreur?

  10. #10
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Bonjour,

    Essaie peut-être de placer un

    en début de procédure, pour voir ce que cela donne.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    merci Domi2.

    Alors j'ai essayé ce que tu m'as dit mais j'ai toujours la meme erreur avec runtime error, abnormal termination et access se ferme.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Points : 37
    Points
    37
    Par défaut autres pistes
    Qu'est-ce que tu as de cocher dans outil/références

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    j'ai lotus domino object de coché

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Points : 37
    Points
    37
    Par défaut fin de mes compétences
    Malheureusement je ne pourrai pas t'aider plus....

    Bon courage.

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/05/2014, 23h15
  2. Envoi de mails depuis Lotus notes via Access
    Par samia21 dans le forum IHM
    Réponses: 8
    Dernier message: 26/05/2008, 08h42
  3. Envoi de mail via Lotus note
    Par Theranthil dans le forum VBA Access
    Réponses: 4
    Dernier message: 24/04/2008, 11h17
  4. envoi de mail via Lotus Notes 6 a partir d'excel
    Par gilbisti dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/06/2007, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo