Se connecter avec
S'enregistrer | Connectez-vous

placement d'une pièce jointe dans un fichier outlook

Dernière réponse : dans Programmation
Partagez

bonjour j'aimerais mette ma pièce jointe dans le corps du message a une place précise
SI quelqu'un sait comment faire merci d'avance
j'ai essayé le code suivant mais ma pièce joite est a la fin du message alors que j'aimerais qu'il soit entre deux ligne bien précise.
Merci d'avance a ceux qui pourront m'aider

  1. Set MonOutLook = CreateObject("Outlook.Application")
  2. Set MonMessage = MonOutLook.Createitem(0)
  3. MonMessage.to = adresse
  4. MonMessage.cc = adressecc
  5. MonMessage.bcc = ""
  6. MonMessage.Subject = Test
  7. MonMessage.Attachments.Add "D:\Test.xls"
  8.  
  9. 'On écrit le corps du message
  10. 'Le corps du message est divisé en X lignes :
  11. Corps = b3
  12. Corps = Corps & Chr(13) & Chr(10)
  13. Corps = Corps & b9
  14.  
  15. 'endroit ou j'aimerais placer l'icone de ma pièce jonte
  16. 'essau de code mais sans résultats
  17. Corps = Corps & attachement
  18.  
  19. Corps = Corps & Chr(13) & Chr(10)
  20. Corps = Corps & b10
  21. Corps = Corps & Chr(13) & Chr(10)
  22.  
  23. MonMessage.body = Corps
  24.  
  25.  
  26. MonMessage.Send

le mail est un texte enrichi mais je ne sais pas comment utiliser
cette fonction

  1. MonMessage.attachments(1).Position


pour définir de la pièce jointe dans le texte enrichi

Ben il manque quand même quelque chose d'énorme : Qu'est-ce que MonMessage ? (objet MAPI, objet Outlook, autre ?)


(Pour info Chr(13) & Chr(10) = vbCrLf ;)  )
Contenus similaires

Et il fait 50 caractères ton corps de message ?
Essaye avec 1, 10, 100, etc.
Et fait varier les autres paramètres, surtout AttachmentType.

Enfin, bref. Essaye. Tourne le problème dans tous les sens.
(Bah, alors darkspoilt ? Je t'ai connu plus débrouillard :o  )

(Désol', je n'ai pas Outlook pour tester. Mais comme je dis comme MSDN... :whistle:  )

justement j'ai beau mettre tous les chifres non il ne fait pas 50 mon coprs de message mais je veux que ma PJ soit après le 50ème caractère
après ma PF reste tjs a la fin

bah mon essage est fixe il comporte environ 300 ou 400 caractères j'ai pas le courage de tout compter

et puis même quand je met 1 qui est censé me le mettre au début du message ma pièce jointe est a la fin

>>et puis même quand je met 1
Ah, voilà un truc objectif.

Et en faisant varier les autres paramètres ?
Et en suivant l'exemple de Krosoft (voir lien plus haut) ?

  1. Dim MonOutlook As Outlook.MailItem
  2. Set MonOutlook = Application.CreateItem(olMailItem)


le message
propriété ou méthode non généra par cette objet
sur la ligne 2
J'ai bien les références outlook library

:??: 

VBA dans quelle application ?

Tu es dans Excel ou dans Access par exemple. Donc l'objet Application, c'est Excel.Application ou Access.Application.

Toi, tu as besoin d'un objet Outlook.Application.
Prière de faire un
  1. Dim MonOutlookMessage As Outlook.MailItem
  2. Set MaOutLookApplication = CreateObject("Outlook.Application" )
  3. Set MonOutlookMessage = MaOutLookApplication .CreateItem(olMailItem)

Ma PJ est toujours a la fin alors que je le demande de le mettre au début

Je ne comprends vraiment pas :??: 

  1. Dim MonOutlook As Outlook.MailItem
  2. Dim MesAttachements As Outlook.Attachments
  3. Dim MaOutLookApplication As Object
  4.  
  5. 'Création du message mail
  6.  
  7. Set MaOutLookApplication = CreateObject("Outlook.Application")
  8. Set MonOutlookMessage = MaOutLookApplication.CreateItem(olMailItem)
  9. Set MesAttachements = MonOutlookMessage.Attachments
  10.  
  11. 'Remplissage du mail avec les données "adresse", "corps" , "signature" et "sujet"
  12. MonOutlookMessage.to = adresse
  13. MonOutlookMessage.cc = adressecc
  14. MonOutlookMessage.bcc = ""
  15. MonOutlookMessage.Subject = "toto"
  16.  
  17. 'On écrit le corps du message
  18. 'Le corps du message est divisé en X lignes :
  19. Corps = b3
  20. Corps = Corps & Chr(13) & Chr(10) 'Chr(13) & Chr(10) = Touche ENTER
  21. Corps = Corps & b4
  22. Corps = Corps & Chr(13) & Chr(10)
  23. Corps = Corps & b5
  24. Corps = Corps & Chr(13) & Chr(10)
  25. Corps = Corps & b6
  26. Corps = Corps & Chr(13) & Chr(10)
  27. Corps = Corps & b7
  28. Corps = Corps & Chr(13) & Chr(10)
  29. Corps = Corps & Chr(13) & Chr(10)
  30. Corps = Corps & b8
  31. Corps = Corps & Chr(13) & Chr(10)
  32. Corps = Corps & b9
  33. Corps = Corps & Chr(13) & Chr(10)
  34. Corps = Corps & b10
  35. Corps = Corps & Chr(13) & Chr(10)
  36. Corps = Corps & b11
  37. Corps = Corps & Chr(13) & Chr(10)
  38. Corps = Corps & b12
  39. Corps = Corps & Chr(13) & Chr(10)
  40. Corps = Corps & b13
  41. Corps = Corps & Chr(13) & Chr(10)
  42. Corps = Corps & b14
  43. Corps = Corps & Chr(13) & Chr(10)
  44. Corps = Corps & b15
  45. Corps = Corps & Chr(13) & Chr(10)
  46. Corps = Corps & b16
  47. Corps = Corps & Chr(13) & Chr(10)
  48. Corps = Corps & b17
  49. Corps = Corps & Chr(13) & Chr(10)
  50. Corps = Corps & b18
  51. Corps = Corps & Chr(13) & Chr(10)
  52. Corps = Corps & b19
  53. Corps = Corps & Chr(13) & Chr(10)
  54. Corps = Corps & b20
  55. Corps = Corps & Chr(13) & Chr(10)
  56. Corps = Corps & b21
  57. Corps = Corps & Chr(13) & Chr(10)
  58. Corps = Corps & b22
  59. Corps = Corps & Chr(13) & Chr(10)
  60.  
  61. MonOutlookMessage.body = Corps
  62. MonOutlookMessage.body = Corps
  63.  
  64. MesAttachements.Add "D:\Test.xls", olByValue, 1
  65.  
  66.  
  67. MonOutlookMessage.Send
  68.  
  69. Set MonOutlook = Nothing



Tu vas me mettre des vbCrLf à la place de tes Chr(13) & Chr(10). Oui, je sais ça ne résoudra pas tes problèmes.

Regarde, tes lignes 19 à 62. N'est pas plus clair ?
MonOutlookMessage.body = b3 & vbCrLf & _
b4 & vbCrLf & _
b5 & vbCrLf & _
b6 & vbCrLf & _
b7 & vbCrLf & _
b8 & vbCrLf & _
b9 & vbCrLf & _
b10 & vbCrLf & _
b11 & vbCrLf & _
b12 & vbCrLf & _
b13 & vbCrLf & _
b14 & vbCrLf & _
b15 & vbCrLf & _
b16 & vbCrLf & _
b17 & vbCrLf & _
b18 & vbCrLf & _
b19 & vbCrLf & _
b20 & vbCrLf & _
b21 & vbCrLf & _
b22 & vbCrLf

Comme je n'ai pas Outlook, je tape un peu au hasard. Mais ...

CRLF, comme séparateur de message, ce n'est standard que sous Windows. Or la messagerie électronique a été inventée sous UNIX. Essaie avec vbLf (chr(10)) seulement, voire sans sauts de ligne du tout.
Bref, qu'est-ce que ça donne si ton corps de message ne contient que "AZERTYUIOP" et si ton attachement est à la position 5 ?

Ah non.
MaOutLookApplication, MonOutlookMessage et MesAttachements sont des variables. Et MonOutlookMessage et MesAttachements ne sont pas des méthodes ou des propriétés.

Par contre,
MonOutlookMessage.Attachments.Add "fichier", , 1
est légitime.


EDIT: :( 

Euh.... Y'a un * de trop :o 
Pis, là, c'est plutôt Août-Louque qui fait chier.
C'est pas pour autant que je te contre-dis :D 

Pis, moi aussi, ça m'énerve. Parce que figure-toi que je cherche aussi de mon côté et que quand je cherche, j'aime trouver :fou:  :fou:  :fou: 

Ah. Là ça devient très agaçant.
Bon, c'est la preuve que VB/VBA n'est pas en cause.

Bon énervons-nous : Teste tous les cas possibles de la propriété MailItem.BodyFormat.

Exemple :
  1. Dim msg As Outlook.MailItem
  2. Set msg = CreateObject("Outlook.Application").CreateItem(olMailItem)
  3. msg.to = "darkspoilt@darkspoilt.net"
  4. msg.Subject = "Ca va marcher, oui ou m**** !?"
  5. msg.BodyFormat = olFormatHTML
  6. msg.body = b3 & vbCrLf & b4 & vbCrLf & b5 & vbCrLf & b6 & vbCrLf & _
  7. b7 & vbCrLf & b8 & vbCrLf & b9 & vbCrLf & b10 & vbCrLf & _
  8. b11 & vbCrLf & b12 & vbCrLf & b13 & vbCrLf & b14 & vbCrLf & _
  9. b15 & vbCrLf & b16 & vbCrLf & b17 & vbCrLf & b18 & vbCrLf & _
  10. b19 & vbCrLf & b20 & vbCrLf & b21 & vbCrLf & b22 & vbCrLf
  11. msg.HTMLBody = "<html><body>Le fichier, là : >>> <<< <br/>" & _
  12. b3 & "<br/>" & b4 & "<br/>" & b5 & "<br/>" & b6 & "<br/>" & _
  13. b7 & "<br/>" & b8 & "<br/>" & b9 & "<br/>" & b10 & "<br/>" & _
  14. b11 & "<br/>" & b12 & "<br/>" & b13 & "<br/>" & b14 & "<br/>" & _
  15. b15 & "<br/>" & b16 & "<br/>" & b17 & "<br/>" & b18 & "<br/>" & _
  16. b19 & "<br/>" & b20 & "<br/>" & b21 & "<br/>" & b22 & "</body></html>"
  17. msg.Attachments.Add "D:\Test.xls", olByValue, 33
  18. msg.Send
(Voir si on fait sauter les lignes 6 à 10 ou pas.)

Alors ?

en HTML il est pris en compte car il va au dessus
mais commme je veux un text riche je le met
  1. MonOutlookMessage.BodyFormat = olFormatRichText
et il est tjrs a la fin
jsuis perdu :( 

kiki> Gné? C'est quoi ste pub pour un autre site ?

darkspoilt>, M'enfin si tu es en RFT, il faut écrire en RTF !
  1. Body = "{\rtf1" & b3 & "\par " & b4 & "\par " & b5 & ... & "\par}"

Dites par hasard c'est possible votre truc... Moi j'en doute sérieusement. Le corps d'un message c'est du texte ou de l'HTML, et en aucun cas il n'est censé contenir un fichier (sauf à plat en mode texte ou autre). Prends outlook et essaie de mettre un fichier en direct dans le message c'est impossible, il va toujours se mettre dans la partie attachement.

Alors je me demande si tu chercherais pas à intégrer une partie de ton tableau Excel dans le mail...

Freeman, Outlook ne fait que te "présenter" ce qui n'est qu'un fichier texte plat. (cf. rfc 821)

Le protocole SMTP d'envoi de fichiers ne fait pas la différence entre du bête texte et un format alambiqué avec pièce jointe au milieu.

A ce propos, il peut être intéressant d'envoyer différents mails-avec-pièce-jointe-au-milieu-ou-pas et de les récupérer en texte brut avec un bête telnet 110 pour "voir" la syntaxe en texte pur.
Posez votre question