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

Macros et VBA Excel Discussion :

Adaptation code pour envoi d'un message avec Lotus Note 6.5 [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 58
    Points : 54
    Points
    54
    Par défaut Adaptation code pour envoi d'un message avec Lotus Note 6.5
    Bonjour,

    Je souhaiterai envoyer un message utilisant une macro à travers LotusNote:

    Voila mon point de départ:

    http://access.developpez.com/sources...NoteSauvegarde

    j'ai créé un bouton pour lancer la procedure qui possède ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CommandButton1_Click()
     
    SendNotesMail Me!txtSubject, Me!txtAttachment, Me!txtTo, _
                    Me!txtCC, Me!txtCCC, Me!txtMessage, False
     
    End Sub
    Voila la tentative d'adaptation que j'ai essayé de faire:

    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
    Public Sub SendNotesMail(ByVal Subject As String, _
    ByVal Attachment As String, ByVal RECIPIENT As String, _
    ByVal CC As String, ByVal BCC As String, _
    ByVal BodyText As String, ByVal SaveIt As Boolean)
     
    Dim oMaildb As Object
    Dim oMailDoc As Object
    Dim oAttachME As Object
    Dim oSession As Object
    Dim oEmbedObj As Object
     
    Dim sUserName As String
    Dim sMailDbName As String
     
    Const STR_ATTACHMENT As String = "Attachment"
     
    On Error GoTo L_ErrCannotCreateNotesSession
        Set oSession = CreateObject("Notes.NotesSession")
        sUserName = oSession.sUserName
        sMailDbName = Left$(sUserName, 1) & Right$(sUserName, _
             (Len(sUserName) - InStr(1, sUserName, " "))) & ".nsf"
        DoEvents
        lblStatus.Caption = "Information about sender..."
        Call Sleep(1000)
        Set oMaildb = oSession.GETDATABASE(vbNullString, _
                 sMailDbName)
         If oMaildb.IsOpen = True Then
         Else
             oMaildb.OPENMAIL
         End If
        Set oMailDoc = oMaildb.CREATEDOCUMENT
        oMailDoc.Form = "Memo"
        oMailDoc.SENDTO = "CST_BAntoniol@xxxxxxxx.com"
        If Len(CC) = 0 Then
        Else
            oMailDoc.CopyTo = ""
        End If
        If Len(BCC) = 0 Then
        Else
            oMailDoc.blindCopyTo = ""
        End If
        oMailDoc.Subject = "Test"
        oMailDoc.Body = "Essai de message"
        oMailDoc.SAVEMESSAGEONSEND = SaveIt
        DoEvents
        lblStatus.Caption = "Looking for attached files..."
        Call Sleep(1000)
     
        If Attachment <> vbNullString Then
            Set oAttachME = oMailDoc.CREATERICHTEXTITEM(STR_ATTACHMENT)
            Set oEmbedObj = oAttachME.EMBEDOBJECT(1454, _
                    vbNullString, Attachment, STR_ATTACHMENT)
            oMailDoc.CREATERICHTEXTITEM _
                    (STR_ATTACHMENT)
        End If
        DoEvents
        oMailDoc.PostedDate = Now()
     
     
     'To send the message, remove the quotes characters (') near each line
       lblStatus.Caption = "Sending message..."
       Call Sleep(1000)
      '
       oMailDoc.SEND 0, RECIPIENT
       lblStatus.Caption = "Message sent"
     
       MsgBox "Your message has been sent successfully...", 64, "End"
     
     
    L_ExCannotCreateNotesSession:
        Set oMaildb = Nothing
        Set oMailDoc = Nothing
        Set oAttachME = Nothing
        Set oSession = Nothing
        Set oEmbedObj = Nothing
        Exit Sub
    L_ErrCannotCreateNotesSession:
      Select Case Err
          Case 429
              MsgBox "Impossible de localiser un Client Notes; " & _
                         "Votre message n'a pas été envoyé !", 16, _
                              "Lotus Notes requis"
          Case Else
            MsgBox "Un erreur a empêché l'envoi du message." & _
                      vbCrLf & "Veuillez en référer à votre administrateur " & _
                          "pour lui soumettre cette erreur..." & vbCrLf & Error, 16, "Error #" & str(Err)
      End Select
      Resume L_ExCannotCreateNotesSession
    End Sub
    Cependant la procédure d'envoi de message ne se lance pas

    Avec Débug puis F8, je n'arrive pas a sortir de la procédure du "bouton_Click()". Un message d'erreur apparait:
    "Couldn t find the specific Object"



    Je suis dessus depuis ce matin et étant débutant je n'arrive pas à m'en sortir.

    auriez vous quelques conseils pour m'aider à résoudre ce problème?

    Merci d'avance.

    Bruno

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 58
    Points : 54
    Points
    54
    Par défaut
    Voici mon code final qui je pense adapté correctement pourra servir à d'autres personnes.
    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
     
    '---------- API -----------
    'pour faire passer au premier plan
    Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
    'pour ouvrir la fenêtre
    Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, _
                        ByVal nCmdShow As Long) As Long
    'pour vérifier si 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 'Le serveur de mail de l'utilisateur courant
    Dim MailDbName As String 'Le nom de la base mail de l'utilisateur courant
    Dim UserName As String 'Le nom de l'utilisateur courant
     
    Dim retVal As Variant 'La valeur de retour de la fonction
     
    '---------------- 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)
     
    '    sSrvr = Lotus_Session.GETENVIRONMENTSTRING("MailServer", True)
    '    MailDbName = Lotus_Session.GETENVIRONMENTSTRING("MailFile", True)
    '    UserName = Lotus_Session.UserName
     
    '    DoEvents
      'Ouverture de Lotus Notes
      'Mettre votre chemin d'accès pour notes.exe et notes.ini'
       'retVal = Shell("C:\Program Files\lotus\notes\notes.exe =C:\Program Files\lotus\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
     
     
     
     
     
     
    Private Sub CommandButton1_Click()
     
     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 = UserFormEMail.TextBox9.Value
            beDoc.CopyTo = CCToAdr
            beDoc.BlindCopyTo = BCCToAdr
            beDoc.Subject = UserFormEMail.TextBox10.Value & " Pendiente"
     
     
    With bodypart
    .AppendText "Buenos Dias,"
    .AddNewline 2
    .AppendText "Usted podrìa enviarme el Order Entry Form del (de los) proyecto(s) sigienete(s):"
    .AddNewline 2
    For i = 0 To UserFormEMail.ListBox2.ListCount - 1
    .AppendText UserFormEMail.ListBox2.List(i) & " --- " & UserFormEMail.ListBox3.List(i)
    .AddNewline 2
    Next i
    .AddNewline 2
    .AppendText "Un saludo Cordial"
    .AddNewline 1
    .AppendText "Bruno Antoniol"
    .AddNewline 3
    End With
     
            '-----------------------------------------
          'Remarque s'il y a des destinataires multiples, il suffit 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
     
     For i = 0 To UserFormEMail.ListBox2.ListCount - 1
    Textei = Textei & ListBox2.List(i) & " --- " & ListBox3.List(i) & Chr(10) & Chr(10)
    Next i
     
            'Affichage du mail dans Lotus Notes
          Set workspace = CreateObject("Notes.NotesUIWorkspace")
            Call workspace.EditDocument(True, beDoc).FieldSetText("Body", "Bonjour Monsieur " & TextBox1 & " " & ComboBox1 & "," & Chr(10) & Chr(10) & _
    "Je vous écrit concernant les projets: " & Listei & Chr(10) & Chr(10) & _
    "Afin que vous apportiez les précisions suivantes: " & CheckBox1.Caption & _
    " avant la date suivante: " & TextBox2 & Chr(10) & Chr(10) & Chr(10) & " Meilleures Salutations.Bruno")            
     
     
     
            Set s = Nothing
            Else
                MsgBox "Votre Lotus Notes est fermé !"
        End If
     
     
    End Sub
    Cdt et bonne chance si vous utilisez Lotus notes!!

    Bruno

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Adaptation code pour envoi d'un message avec Lotus Note 6.5
    Par brunounours dans le forum Lotus Notes
    Réponses: 1
    Dernier message: 29/11/2011, 15h49
  2. [AC-2007] code pour envoie automatique mail avec pdf en attaché
    Par Henk KROON dans le forum Access
    Réponses: 0
    Dernier message: 09/12/2010, 17h41
  3. [VBA] Envoi d'un mail avec lotus notes
    Par lou87 dans le forum Général VBA
    Réponses: 5
    Dernier message: 24/10/2007, 09h45
  4. Réponses: 2
    Dernier message: 21/11/2006, 11h08
  5. Code pour envoi mail
    Par nogood1 dans le forum Access
    Réponses: 7
    Dernier message: 05/10/2006, 17h31

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