VBA copier feuille excel (transformé en PDF) dans lotus note.

Fermé
Gilles.DR315 Messages postés 26 Date d'inscription samedi 2 novembre 2013 Statut Membre Dernière intervention 27 janvier 2015 - Modifié par crapoulou le 6/01/2015 à 21:56
Gilles.DR315 Messages postés 26 Date d'inscription samedi 2 novembre 2013 Statut Membre Dernière intervention 27 janvier 2015 - 11 janv. 2015 à 00:14
Bonjour,

Je vous expose mon problème
j'ai une commande macro qui copie et transforme une feuille Xls en format PDF pour l'envoyer en pièce jointe par E-Mail. (Lotus)
Au boulot nous utilisons Lotus note 8.5

Voici le code il fonctionne, mais le problème c'est qu'il va créer un nouveau message lotus, sans récupérer les informations d'en tête de l'expéditeur carte de visite. (on a juste le nom / prénom)
Et la pièce jointe en PDF s'insère bien mais elle n'est pas dans le corps du message.

Sub EnvoiEmailPDF()

Const EMBED_ATTACHMENT As Long = 1454
Const stPath As String = ""
 
 Sub EnvoiEmailPDF()
 
MsgBox ("Fiche d'accord transmise à LOTUS NOTES en format PDF pour renvoi.")
Sheets("Fiche Saisie pour Apac").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "\" & "Accord.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
  Dim MaDate As String
  Dim stFileName As String
  Dim vaRecipients As Variant
  Dim noSession As Object
  Dim noDatabase As Object
  Dim noDocument As Object
  Dim noEmbedObject As Object
  Dim noAttachment As Object
  Dim stAttachment As String
  Dim vaMsg As Variant
  Dim StrSignature As Variant
  Dim stSubject As String
  
  On Error GoTo TraiteErreur
 
  stSubject = ""
  MaDate = Date
 
  vaMsg = "Bonjour, " & vbCrLf & vbCrLf & vbCrLf & _
  vbCrLf & vbCrLf & vbCrLf & vbCrLf _
  & "Bonne réception." & vbCrLf _
  & "Cordialement."
 
  stFileName = "test"
  stAttachment = ActiveWorkbook.Path & "\" & "Accord.PDF"
  
  'test de l'existance de la PJ
If Dir(stAttachment) = "" Then GoTo TraitePJ

  vaRecipients = ""
  Set noSession = CreateObject("Notes.NotesSession")
  Set noDatabase = noSession.GETDATABASE("", "")
 
  'If Lotus Notes is not open then open the mail-part of it.
If noDatabase.IsOpen = False Then noDatabase.OPENMAIL
 
  'Create the e-mail and the attachment.
Set noDocument = noDatabase.CREATEDOCUMENT
  Set noAttachment = noDocument.CREATERICHTEXTITEM("stAttachment")
  Set noEmbedObject = noAttachment.EmbedObject(EMBED_ATTACHMENT, "", stAttachment)
  
  'Add values to the created e-mail main properties.
  With noDocument
        .Form = "Memo"
        .sendto = vaRecipients
        .Subject = stSubject
        .body = vaMsg
        .SaveMessageOnSend = True
        .PostedDate = Now()
    End With
    
    'Affichage du mail dans Lotus Notes.
  Dim Workspace
    Set Workspace = CreateObject("Notes.NotesUIWorkspace")
    Call Workspace.EditDocument(True, noDocument).FieldSetText("Body", vaMsg)

  'Release objects from memory.
Set noEmbedObject = Nothing
  Set noAttachment = Nothing
  Set noDocument = Nothing
  Set noDatabase = Nothing
  Set noSession = Nothing
 
  Exit Sub
   
TraitePJ:
    
    MsgBox "Un problème est survenu lors de l'insertion de la pièce jointe", vbCritical, "Error"
 
    Set noEmbedObject = Nothing
    Set noAttachment = Nothing
    Set noDocument = Nothing
    Set noDatabase = Nothing
    Set noSession = Nothing

    Exit Sub
 
TraiteErreur:
 
    MsgBox "Un problème est survenu lors de la création du mail", vbCritical, "Error"
 
    Set noEmbedObject = Nothing
    Set noAttachment = Nothing
    Set noDocument = Nothing
    Set noDatabase = Nothing
    Set noSession = Nothing
 
End Sub



Je dois solutionner le problème d'entête lors de la création du mail.
Il doit y avoir un problème sur la création du "memo" initié par la ligne de commande.

Merci d'avance de votre appui et astuces.

J'ai un exemple sur une feuille ici :
https://forum.excel-pratique.com/download/file.php?id=83204

A voir également:

1 réponse

pcturbo Messages postés 567 Date d'inscription samedi 26 juillet 2008 Statut Contributeur Dernière intervention 13 avril 2024 200
10 janv. 2015 à 13:09
Bonjour,

La pièce jointe ne s'affiche pas dans le corps du message parce qu'elle n'est pas incorporée dans le NotesRichTextItem "Body". Dans votre code elle est placée dans un champ qui ne fait pas partie du masque standard "Memo", donc Notes l'affiche à part. Mais cela n'a pas d'importance en l'occurrence. Lors de l'envoi, Notes joindra bien la pj. Je suppose que ces messages sont destinés à être envoyés à l'extérieur de votre entreprise. Dans ce cas n'oubliez pas que de toute façon votre message va être acheminé en format MIME et que vous ne savez pas quel logiciel servira pour les lire, et que la plupart des messageries n'affichent pas les pj dans le corps du msg, plus souvent elles les affichent à part (Lotus Notes est assez rare à gérer les pj au sein du corps).

Je ne suis pas sûr d'avoir compris la question concernant l'"en-tête". De quelles informations s'agit-il? Le bloc-signature (pavé d'infos avec nom d'expéditeur, adresse, tél, etc. généralement à la fin des msgs)? Dans ce cas d'où viennent-elles ces informations d'habitude? Insertion automatique paramétrée, modèle de courrier, ... ? Si c'est une insertion automatique de texte configuré dans les préférences ou à partir d'un fichier alors vous pouvez l'ajouter manuellement avant d'envoyer le message avec l'option adéquate ou faire ajouter en même temps que le message d'accompagnement (ligne 35). D'autres solutions plus sophistiquées existent bien-sûr.

Je me permets une petite remarque: ce que vous faites là est relativement avancé. Ces techniques permettent de faire de belles choses et aussi de belles bétises. Je ne peux pas conseiller la démarche de récupérer des brins de code sur l'Internet et de les utiliser sans savoir ce que l'on fait. Il faut soit se faire former correctement (et CCM n'est pas vraiment là pour ça), soit confier le travail à un professionnel qualifié.
0
Gilles.DR315 Messages postés 26 Date d'inscription samedi 2 novembre 2013 Statut Membre Dernière intervention 27 janvier 2015 1
11 janv. 2015 à 00:14
Bonjour,

Merci d'avoir pris le temps de me répondre.
Non l'usage n'est pas pour l'extérieur.
L'usage est interne à l'entreprise. Les employés sont tous sous lotus note.

Nous avons dans notre en tête (situé en haut à gauche) , à la création du message/memo
les informations détaillés sur l'expéditeur (fonction, tél, adresse, logo....), ces informations sont paramétrées/sauvegardées dans le menu préférences de chaque utilisateur.
Donc ce bloc signature est situé en tout en haut à gauche.
L'envoi d'un nouveau message à un collègue, reprend bien toutes ses informations.

La signature, elle est situé en bas.

Mais pour mon code VBA, la création du mail ne fait reprendre que le nom et prénom.
Mon code n'arrive donc pas à la création du "memo" à reprendre les informations sauvegardés dans les préférences de l'utilisateur pour la création du bloc signature.
Ca ne marche pas non plus pour les boites e-mail générique ou partagés.

J'ai effectivement l'insertion de la pièce jointe qui n'est pas dans le corps du message.
Je dois à mon avis avoir une mauvaise ligne de code pour la création du message.
Ce n'est pas un message, comme-ci je faisais nouveau memo avec le clic de la souris directement sous note.

Je suis sous lotus 8.5

Merci
0