Autres remplir auto. l'objet de l'email avec nom PJ dans Outlook (et si pas de pj alors aucun objet)

  • Initiateur de la discussion Initiateur de la discussion martine24
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

martine24

XLDnaute Occasionnel
Bonjour,
J'ai saisi le code suivant dans vba => projet =>microsoft outlook objets +> thisoutlooksession afin de remplir auto. l'objet de l'email avec nom de la pièce jointe dans outlook:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim Msg As MailItem
Dim Atmt As Attachment
Dim FileNames As String

If TypeOf Item Is MailItem Then
Set Msg = Item
FileNames = ""

For Each Atmt In Msg.Attachments
FileNames = FileNames & Atmt.FileName & "; "
Next Atmt

If FileNames <> "" Then
Msg.Subject = FileNames
End If
End If
End Sub

je rencontre cependant 2 petits soucis:
1- lorsque j'inclus une pj, dans l'objet il est bien indiqué une fois envoyé (et uniquement une fois envoyé) le nom de la pj mais également par ex : si c'est un doc pdf: nom de la pj.pdf; image001.jpg; si c'est un doc word: nom de la pj.docx; image001.jpg ou si c'est un doc excel: nom de la pj.xls; image001.jpg;
En conséquence comment faire pour avoir uniquement le nom de la pj dans l'objet mais rien d'autre après?
2- lorsque je n'envoi pas de pj, j'ai image001.jpg;
Comment indiquer aucun objet lorsque je ne mets aucun objet?

Une question subsidiaire:
Est il possible de décider sur tel compte de messagerie d'avoir ce process ci-dessus mais pas sur telle autre adresse par ex?

Merci par avance
Pour info j'utilise office pro plus 2021
 
Bonjour Martine,
Une simple idée à tester.
Pour le premier point, peut être avec :
VB:
FileNames = FileNames & Mid(Atmt.Filename, 1, Len(Atmt.Filename) - 4) & "; "
Pour le second point peut être :
Code:
If FileNames <> "" And Filename <> "image001;" Then
 
Bonjour Martine,
Une simple idée à tester.
Pour le premier point, peut être avec :
VB:
FileNames = FileNames & Mid(Atmt.Filename, 1, Len(Atmt.Filename) - 4) & "; "
Pour le second point peut être :
Code:
If FileNames <> "" And Filename <> "image001;" Then
Bonjour sylvanu et merci pour ton aide.

Pour le 1er point:
je n'ai plu désormais le format de fichier en effet du type .pdf ou .xls par contre toujours nom du fichier; image001
Pour le 2ème point:
j'ai toujours dans l'objet image001;

Merci
 
Bon, J'ai essayé de retirer le ; après image001 mais je n'ai désormais ni d'objet avec l'envoi d'une pj comme ni d'objet sans envoi de pj.
Merci pour votre aide

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim Msg As MailItem
Dim Atmt As Attachment
Dim FileNames As String

If TypeOf Item Is MailItem Then
Set Msg = Item
FileNames = ""

For Each Atmt In Msg.Attachments
FileNames = FileNames & Mid(Atmt.FileName, 1, Len(Atmt.FileName) - 4) & "; "
Next Atmt

If FileNames <> "" And FileName <> "image001" Then
End If
End If
End Sub
 
L'idéal est de fournir un classeur anonymisé (donc pas d'adresse mail réelle, entre autre) et représentatif de ton vrai classeur.

Et quand tu postes du code VBA, n’hésite pas à l'encadrer de la balise [ code = vb ] et [ / code ] (sans les espaces bien sûr), ce sera plus lisible. 😉
 
Dernière édition:
L'idéal est de fournir un classeur anonymisé (donc pas d'adresse mail réelle, entre autre) et représentatif de ton vrai classeur.

Et quand tu postes du code VBA, n’hésite pas à l'encadrer de la balise [ code = vb ] et [ / code ] (sans les espaces bien sûr), ce sera plus lisible. 😉
je suis désolé mais vu ma connaissance dans le code vba je ne comprends pas trop car je n'ai pas indiqué d'adresse mail réelle.
quid?
 
Re,
VB:
If FileNames <> "" And FileName <> "image001" Then
End If
Ne peut pas marcher car Msg.Subject n'est jamais initialisé.
Peut être mettre :
Code:
If Filenames <> "" And Filename <> "image001" Then
    Msg.Subject = "Objet du mail " & Filenames
Else
    Msg.Subject = "Objet du mail"
End If
Mais sans fichier test on risque de tourner en rond. 🙂
 
Un peu au hasard, essaye cette macro (postée ici avec la balise dont je parlais, pour que ce soit plus lisible) :
VB:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim Msg As MailItem
Dim Atmt As Attachment
Dim FileNames As String
   If TypeOf Item Is MailItem Then
       Set Msg = Item
       FileNames = ""

       For Each Atmt In Msg.Attachments
           if Atmt.FileName<>"Image001.jpg" then FileNames = FileNames & Atmt.FileName & "; "
       Next Atmt

       If FileNames <> "" Then
           Msg.Subject = FileNames
       End If
   End If

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour