Renommer une PJ dans un mail reçu

Le
Fabrice N.
Bonjour à tous,

Le principal est dans l'objet.

J'explique le contexte :
Sous O2003, on reçoit des mails venant de pays asiatique.
Les PJ, souvent des PDF, ont donc des caractères japonnais ou autre
dans le nom du fichier.
Mon soucis est que lorsqu'on essaye d'ouvrir le fichier depuis le mail,
Acrobat reader dit ne pas reconnaître le format.
Par contre, si on enregistre le fichier sur disque, les caractères un
peu spéciaux disparaissent et le fichier est lisible sans problème.

Jusque là, vous me direz, il n'y a pas trop de problème.
Le soucis, est que mes collègue confondent la messagerie avec le
serveur de stockage. Du coup, pour garder ces fichiers dans leur BAL,
il se le renvoie par mail et garde bien sûr le mail d'origine pour le
texte qu'il contient.
Du coup, des fichiers qui se retrouvetn 2 fois dans les BAL

Je cherche donc à savoir si il y a moyen de modifier le nom d'une ou
plusieurs PJ dans un mail pour éviter ça
Par VBA j'imagine, mais un conseil sur les instructions à utiliser
serait le bienvenue

Merci d'avance pour le coup de main
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Geo
Le #327936

Bonjour à tous,

Le principal est dans l'objet.

J'explique le contexte :
Sous O2003, on reçoit des mails venant de pays asiatique.
Les PJ, souvent des PDF, ont donc des caractères japonnais ou autre dans le nom du
fichier.
Mon soucis est que lorsqu'on essaye d'ouvrir le fichier depuis le mail, Acrobat reader
dit ne pas reconnaître le format.
Par contre, si on enregistre le fichier sur disque, les caractères un peu spéciaux
disparaissent et le fichier est lisible sans problème.

Jusque là, vous me direz, il n'y a pas trop de problème.
Le soucis, est que mes collègue confondent la messagerie avec le serveur de stockage.
Du coup, pour garder ces fichiers dans leur BAL, il se le renvoie par mail et garde
bien sûr le mail d'origine pour le texte qu'il contient.
Du coup, des fichiers qui se retrouvetn 2 fois dans les BAL...

Je cherche donc à savoir si il y a moyen de modifier le nom d'une ou plusieurs PJ dans
un mail pour éviter ça...
Par VBA j'imagine, mais un conseil sur les instructions à utiliser serait le
bienvenue...

Merci d'avance pour le coup de main...


Qqch comme ça (pas testé):
Public Sub RenommePJ()
Dim NS As NameSpace
Dim MonCourrier As MailItem
Dim NomFichier As String
Dim i As Integer
Dim NomPj As String
Dim PJ As Attachment
Dim Dossier As Folder
Set NS = GetNamespace("MAPI")
Set Dossier = NS.GetDefaultFolder(olFolderInbox)
Set MonCourrier = Dossier.Items(1)
For Each PJ In MonCourrier.Attachments
NomFichier = SansCarAsiatiques(PJ.DisplayName)
PJ.DisplayName = NomFichier
PJ.Save
Next
End Sub


Private Function SansCarAsiatiques(s As String) As String
Dim T As String
T = s
T = Replace(T, ":", "_")
'.... A compléter
SansCarAsiatiques = T
End Function

Reste aussi à voir quand et comment déclencher la macro.

--
A+

Fabrice N.
Le #327934
Bonjour Geo,

Bonjour à tous,

Le principal est dans l'objet.

J'explique le contexte :
Sous O2003, on reçoit des mails venant de pays asiatique.
Les PJ, souvent des PDF, ont donc des caractères japonnais ou autre dans le
nom du fichier.
Mon soucis est que lorsqu'on essaye d'ouvrir le fichier depuis le mail,
Acrobat reader dit ne pas reconnaître le format.
Par contre, si on enregistre le fichier sur disque, les caractères un peu
spéciaux disparaissent et le fichier est lisible sans problème.

Jusque là, vous me direz, il n'y a pas trop de problème.
Le soucis, est que mes collègue confondent la messagerie avec le serveur de
stockage. Du coup, pour garder ces fichiers dans leur BAL, il se le renvoie
par mail et garde bien sûr le mail d'origine pour le texte qu'il contient.
Du coup, des fichiers qui se retrouvetn 2 fois dans les BAL...

Je cherche donc à savoir si il y a moyen de modifier le nom d'une ou
plusieurs PJ dans un mail pour éviter ça...
Par VBA j'imagine, mais un conseil sur les instructions à utiliser serait
le bienvenue...

Merci d'avance pour le coup de main...


Qqch comme ça (pas testé):
Public Sub RenommePJ()
Dim NS As NameSpace
Dim MonCourrier As MailItem
Dim NomFichier As String
Dim i As Integer
Dim NomPj As String
Dim PJ As Attachment
Dim Dossier As Folder
Set NS = GetNamespace("MAPI")
Set Dossier = NS.GetDefaultFolder(olFolderInbox)
Set MonCourrier = Dossier.Items(1)
For Each PJ In MonCourrier.Attachments
NomFichier = SansCarAsiatiques(PJ.DisplayName)
PJ.DisplayName = NomFichier
PJ.Save
Next
End Sub


Private Function SansCarAsiatiques(s As String) As String
Dim T As String
T = s
T = Replace(T, ":", "_")
'.... A compléter
SansCarAsiatiques = T
End Function

Reste aussi à voir quand et comment déclencher la macro.


Merci pour ta réponse.

Malheureusement, ça ne marche pas... :'(

La méthode Save n'existe pas et sans cette ligne, ça tourne, mais rien
n'est modifié.
J'ai modifié en même temps l'objet pour voir, l'objet est bien
enregistré, mais la pièce jointe ne change pas...

Pour le quand et comment, l'idéal serait un bouton dans la barre
d'outils du mail pour déclencher ça depuis le mail voulu...
Mais bon, ça serait la cerise sur le gateau... ;-)


Geo
Le #327933
Bonjour à Geo qui nous a écrit des bêtises :

Au minimum au lieu de
PJ.Save
Next
Ceci

Next
Courrier.Save

Mais toujours pas testé

--
A+

Geo
Le #327932

Malheureusement, ça ne marche pas... :'(

La méthode Save n'existe pas et sans cette ligne, ça tourne, mais rien n'est modifié.
J'ai modifié en même temps l'objet pour voir, l'objet est bien enregistré, mais la
pièce jointe ne change pas...


Désolé

Pour le quand et comment, l'idéal serait un bouton dans la barre d'outils du mail pour
déclencher ça depuis le mail voulu...
Mais bon, ça serait la cerise sur le gateau... ;-)


C'est pas plus compliqué.
Je regarde ce soir.

--
A+

Fabrice N.
Le #327931
Bonjour Geo,
Bonjour à Geo qui nous a écrit des bêtises :

Au minimum au lieu de
PJ.Save
Next
Ceci

Next
Courrier.Save

Mais toujours pas testé


J'y ai pensé... malheureusement, pas mieux... ça enregistre la modif de
l'objet du mail, mais pas la modif du nom des PJ...

Merci en tout cas pour ton aide...


Geo
Le #327929


J'y ai pensé... malheureusement, pas mieux... ça enregistre la modif de l'objet du
mail, mais pas la modif du nom des PJ...


Hé non, car je me suis mélangé les pinceaux entre le DisplayName et le
FileName, mais le FileName est en lecture seule.
J'ai trouvé une solution pas très brillante :
Enregistrer la pièce jointe sous un autre nom, la supprimer en tant que
pièce jointe et la ré-attacher.
Ça a l'air de marcher.
Donc le courriel doit être ouvert. ça le fait sur toutes les pièces
jointes, et il y en a souvent plus qu'on ne le pense.
Suffirait de mettre un test sur le Pdf.
On peut aussi ajouter un kill pour effacer le fichier temporaire.
Ou alors vous mettez directement le fichier où vous voulez aussi
l'archiver.

Option Explicit

Public Sub RenommePJ()
Dim Courrier As MailItem
Dim NomFichier As String
Dim Inspecteur As Inspector
Dim NbPJ As Integer
Dim i As Integer
Dim PJ As Attachment
Set Inspecteur = ActiveInspector
' y a t-il un affichage d'item actif
If Inspecteur Is Nothing Then
MsgBox "Pas de contenu affiché"
Exit Sub
End If
'Cet affichage concerne-t-il un courrier ?
Set Courrier = Inspecteur.CurrentItem
If TypeName(Courrier) <> "MailItem" Then
MsgBox "Choisir un courrier"
Exit Sub
End If
NbPJ = Courrier.Attachments.Count
If NbPJ = 0 Then
MsgBox "Pas de pièce jointe"
Exit Sub
End If
For i = NbPJ To 1 Step -1
Set PJ = Courrier.Attachments(i)
NomFichier = SansCarAsiatiques(PJ.FileName)
PJ.SaveAsFile "c:temp" & NomFichier
PJ.Delete
Courrier.Attachments.Add "c:temp" & NomFichier
PJ.DisplayName = NomFichier
Next
Courrier.Save
'Courrier.Close olSave
End Sub

--
A+

Fabrice N.
Le #328529
Bonjour Geo,


J'y ai pensé... malheureusement, pas mieux... ça enregistre la modif de
l'objet du mail, mais pas la modif du nom des PJ...


Hé non, car je me suis mélangé les pinceaux entre le DisplayName et le
FileName, mais le FileName est en lecture seule.
J'ai trouvé une solution pas très brillante :
Enregistrer la pièce jointe sous un autre nom, la supprimer en tant que pièce
jointe et la ré-attacher.
Ça a l'air de marcher.
Donc le courriel doit être ouvert. ça le fait sur toutes les pièces jointes,
et il y en a souvent plus qu'on ne le pense.
Suffirait de mettre un test sur le Pdf.
On peut aussi ajouter un kill pour effacer le fichier temporaire.
Ou alors vous mettez directement le fichier où vous voulez aussi l'archiver.

Option Explicit

Public Sub RenommePJ()
Dim Courrier As MailItem
Dim NomFichier As String
Dim Inspecteur As Inspector
Dim NbPJ As Integer
Dim i As Integer
Dim PJ As Attachment
Set Inspecteur = ActiveInspector
' y a t-il un affichage d'item actif
If Inspecteur Is Nothing Then
MsgBox "Pas de contenu affiché"
Exit Sub
End If
'Cet affichage concerne-t-il un courrier ?
Set Courrier = Inspecteur.CurrentItem
If TypeName(Courrier) <> "MailItem" Then
MsgBox "Choisir un courrier"
Exit Sub
End If
NbPJ = Courrier.Attachments.Count
If NbPJ = 0 Then
MsgBox "Pas de pièce jointe"
Exit Sub
End If
For i = NbPJ To 1 Step -1
Set PJ = Courrier.Attachments(i)
NomFichier = SansCarAsiatiques(PJ.FileName)
PJ.SaveAsFile "c:temp" & NomFichier
PJ.Delete
Courrier.Attachments.Add "c:temp" & NomFichier
PJ.DisplayName = NomFichier
Next
Courrier.Save
'Courrier.Close olSave
End Sub


Mon héro... !!!!

Je t'embrasserais bien sur la bouche, mais on ne se connait pas encore
assez et ma femme risque de faire la gueule en plus... ;-)

Mais en tout cas, un grand merci, ça marche à merveille, pour les
points de détails, je vais pouvoir me débrouiller tout seul...

Vraiment merci de t'être penché sur mon problème...
A charge de revanche... ;o)


Geo
Le #328528

Mais en tout cas, un grand merci, ça marche à merveille,
pour les points de détails, je
vais pouvoir me débrouiller tout seul...


J'en suis ravi.
Pouvez-vous me confirmer que vous n'avez aucun message d'alerte de
Outlook ? Il semble qu'en version 2007 la plupart ont disparu.

--
A+

Fabrice N.
Le #328527
Bonjour Geo,

Mais en tout cas, un grand merci, ça marche à merveille, pour les points de
détails, je vais pouvoir me débrouiller tout seul...


J'en suis ravi.
Pouvez-vous me confirmer que vous n'avez aucun message d'alerte de Outlook ?
Il semble qu'en version 2007 la plupart ont disparu.


Je confirme, je n'ai eu aucun message d'alerte...

Par contre, je suis sous O2003, pas sous 2007...


Geo
Le #328499

Pouvez-vous me confirmer que vous n'avez aucun message d'alerte de Outlook ? Il
semble qu'en version 2007 la plupart ont disparu.


Je confirme, je n'ai eu aucun message d'alerte...

Par contre, je suis sous O2003, pas sous 2007...


Gasp, si j'avais mieux lu, je ne me serai pas lancé ;-)

Et en version 2003 :
Dim Dossier As Folder
passe aussi ?

--
A+


Publicité
Poster une réponse
Anonyme