Se connecter avec
S'enregistrer | Connectez-vous

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

Dernière réponse : dans Programmation

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
Lassé par la pub ? Créez un compte
Expert Programmation

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:  )
Expert Programmation

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



Expert Programmation

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 ?
Expert Programmation

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: :( 
Expert Programmation

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: 
Expert Programmation

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 ?
Expert Programmation

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...
Expert Programmation

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.
Lassé par la pub ? Créez un compte