IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Outlook Discussion :

Enregistrer des pièces jointes et les renommer en extrayant la date et l'heure [OL-2007]


Sujet :

VBA Outlook

  1. #1
    Candidat au Club
    Femme Profil pro
    Ingénieure Efficacité Energétique
    Inscrit en
    Septembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieure Efficacité Energétique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Enregistrer des pièces jointes et les renommer en extrayant la date et l'heure
    Bonjour à tou-te-s,

    Je reçois des prévisions météo par e-mails, en pièce jointe au format pdf, deux fois par jours. Je souhaite automatiser l'archivage, en les renommant au format date+heure, par exemple 20170906-1130 pour un mail reçu le 6 septembre 2017 à 11h30.

    J'utilise actuellement un code trouvé sur ce forum :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub SaveAttachement(Item As Outlook.MailItem)
            Set attachs = Item.Attachments
     
            For Each attach In attachs
                file = attach.FileName
                attach.SaveAsFile "C:\mails\météo\" & file
            Next
    End Sub
    Le problème, c'est que comme mes pièces jointes ont toutes le même nom à réception du mail, je me retrouve avec un seul fichier, le plus récent. Je souhaite donc extraire la date et l'heure du mail pour renommer le fichier. Savez-vous comment faire ?
    Je précise qu'il n'y a qu'un seul fichier pdf dans chaque e-mail, donc peut-être que je n'ai pas besoin de la boucle For Each ?

    Merci d'avance,
    Ilweth

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,

    Si tu gères ton déclenchement par une règle, ce code suffira

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub SaveAttachement(Item As Outlook.MailItem)
            Set attachs = Item.Attachments
     
            For Each attach In attachs
                file = attach.FileName
                attach.SaveAsFile "C:\mails\météo\" & Item.senton & "-" & file
            Next
    End Sub

  3. #3
    Candidat au Club
    Femme Profil pro
    Ingénieure Efficacité Energétique
    Inscrit en
    Septembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieure Efficacité Energétique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci de ta réponse, malheureusement, "item.SentOn" renvoit une date au format jj/mm/aaaa hh:mm:ss, ce qui n'est pas compatible avec le nom d'un fichier, il ne se passe donc rien quand je lance le script.

    Je pensais essayer de passer par une variable, dans laquelle je mets la donnée date+heure, puis la convertir au format voulu (aaaammjj-hhmm) avant de renommer le fichier, mais je n'ai pas encore trouvé comment faire.

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    bonjour,
    effectivement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub SaveAttachement(Item As Outlook.MailItem)
            Set attachs = Item.Attachments
     
            For Each attach In attachs
                file = attach.FileName
                attach.SaveAsFile "C:\mails\météo\" & format(Item.senton, "YYYYMMDD-hhnn") & "-" & file
            Next
    End Sub

  5. #5
    Candidat au Club
    Femme Profil pro
    Ingénieure Efficacité Energétique
    Inscrit en
    Septembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieure Efficacité Energétique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    C'est parfait, merci beaucoup !

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Chef de projets
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Chef de projets

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Uniquement les PDF
    Bonjour,

    J'ai mis en place votre script et tout fonctionne parfaitement.
    Cependant, je reçois parfois des mails avec un logo dans la signature du mail, en plus de la pièce jointe en PDF et dans ces cas-là le script enregistre le PDF mais aussi l'image.
    Est-il possible de spécifier qu'on ne veut enregistrer que les formats PDF ?
    Merci d'avance pour votre aide.

  7. #7
    Candidat au Club
    Femme Profil pro
    Ingénieure Efficacité Energétique
    Inscrit en
    Septembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieure Efficacité Energétique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Uniquement les PDF
    Bonjour,

    J'utilise une condition "if" pour un autre système de tri, mais en le mettant de la façon suivante, ça devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub SaveAttachement(Item As Outlook.MailItem)
            Set attachs = Item.Attachments
     
            For Each attach In attachs
                file = attach.FileName
                If Item.Subject Like "*.pdf" Then
                    attach.SaveAsFile "C:\mails\météo\" & Format(Item.SentOn, "YYYYMMDD-hhnn") & ".pdf"
                End If
            Next
    End Sub
    J'ai ajouté le ".pdf" à la fin car le script précédent faisait disparaitre le format de la pièce jointe lors de l'enregistrement. J'ai égalemnt supprimé la partie < & "-" & file > car je ne veux pas réutiliser le nom de la pièce jointe, mais vous pouvez le rajouter/le laisser si vous voulez.

  8. #8
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Ilweth Voir le message
    Bonjour,

    J'utilise une condition "if" pour un autre système de tri, mais en le mettant de la façon suivante, ça devrait fonctionner :


    J'ai ajouté le ".pdf" à la fin car le script précédent faisait disparaitre le format de la pièce jointe lors de l'enregistrement. J'ai égalemnt supprimé la partie < & "-" & file > car je ne veux pas réutiliser le nom de la pièce jointe, mais vous pouvez le rajouter/le laisser si vous voulez.
    Bonjour je pense que c'est plutôt comme cela car tu testais le sujet de l'Email et pas le nom de la PJ. Attention aussi à la CASSE pdf<>PDF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    'A mettre en HAUT du module
    Option Compare Text
     
    Sub SaveAttachement(Item As Outlook.MailItem)
            Set attachs = Item.Attachments
     
            For Each attach In attachs
                file = attach.FileName
                If file Like "*.pdf" Then
                    attach.SaveAsFile "C:\mails\météo\" & Format(Item.SentOn, "YYYYMMDD-hhnn") & ".pdf"
                End If
            Next
    End Sub
    on peut aussi comparer en mettant en MAJUSCULE le tout


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    file = UCASE(attach.FileName)
                If file Like "*.PDF" Then
    Voir aussi instr, strcomp et FSO.GetExtensionName

  9. #9
    Candidat au Club
    Femme Profil pro
    Ingénieure Efficacité Energétique
    Inscrit en
    Septembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieure Efficacité Energétique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Bien vu !
    Effectivement, j'utilise "item.subject" au lieu de "file" car dans mon cas, je différencie par le sujet du mail. J'ai mis du temps à voir la différence entre les deux, bien joué !
    (ça m'apprendra à faire des copier-coller sans relire ^^ )

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Chef de projets
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Chef de projets

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Merci !!
    Merci à tous les deux, cela fonctionne et répond parfaitement à mon attente.

    Bonne fin de journée

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Chef de projets
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Chef de projets

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Plusieurs pièces jointes
    Bonjour,
    Vous avez été tellement efficaces la dernière fois que je me permets de revenir vers vous.
    Tout fonctionne bien s'il n'y a qu'une pièce jointe en pdf avec le mail, par contre s'il y en a plusieurs, cela ne prend que la première.

    Pouvez-vous me dire ce que je dois rajouter au script pour que cela prenne bien en compte la totalité des PJ ?

    Merci d'avance

  12. #12
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,

    Ce qui est important c'est le nom donné à la PJ

    Effectivement dans le dernier code le nom est figé, soit tu utilises le nom d'origine de la pj soit tu incrémentes ce nom avec un index
    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     attach.SaveAsFile "C:\mails\météo\" & Format(Item.SentOn, "YYYYMMDD-hhnn") & ".pdf"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     attach.SaveAsFile "C:\mails\météo\" & file
    tu peux aussi regarder ici
    https://www.developpez.net/forums/bl...yperlien-mail/


    cette partie là évite les doublons

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    n = 1
                    MemPath = remplaceCaracteresInterdit(Expediteur & "¤" & pj.fileName)
                    PathNomExport = MemPath
                    If Export Then
                        While Dir(repertoire & PathNomExport) <> ""
                            'MsgBox "Le fichier " & vbCr & PathNomExport & vbCr & "existe déjà", vbInformation
                            PathNomExport = "(" & n & ")" & MemPath
                            n = n + 1
                        Wend
                        pj.SaveAsFile repertoire & PathNomExport

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Chef de projets
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Chef de projets

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Merci !!
    Bonsoir,
    C'est parfait.
    Merci
    Bonne fin de journée

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2018
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Save PJ Outlook avc fichier incrémenté
    Bonjour. Jai utiliser le code situé au dessus qui fonctionne très bien. Mais j'ai un soucis tt mes pièces jointes on les même nom. Et j'ai essayé de mettre la date d'envoi et de réception dans le nom du fichier mais les mails envoyés son envoyé à la même seconde près donc mes fichiers sauvegardés sont écrasé. J'aimerai que le nom de fichier soit différent à chaque enregistrement.merci de votre aide.

  15. #15
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    je t'invite à consulter ce code

    https://www.developpez.net/forums/bl...yperlien-mail/

    en particulier la partie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                    n = 1
                    MemPath = remplaceCaracteresInterdit(PrefixePj & "¤" & pj.FileName)
                    PathNomExport = MemPath
                    If Export Then
                        While Dir(repertoire & PathNomExport) <> ""
                            'MsgBox "Le fichier " & vbCr & PathNomExport & vbCr & "existe déjà", vbInformation
                            PathNomExport = "(" & n & ")" & MemPath
                            n = n + 1
                        Wend
                        pj.SaveAsFile repertoire & PathNomExport

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraire des pièces jointes et les sauvegarder
    Par LANGAZOU dans le forum VBA Outlook
    Réponses: 30
    Dernier message: 17/04/2019, 14h53
  2. Enregistrer des pièces jointes sur un tableau excel
    Par Roberta. dans le forum Outlook
    Réponses: 3
    Dernier message: 22/07/2016, 21h56
  3. [OL-2010] Enregistrement des pièces jointes de tous les mails d'un fichier pst
    Par Daejung dans le forum Outlook
    Réponses: 3
    Dernier message: 21/03/2015, 07h37
  4. [OL-2003] enregistrement de pièce jointe pour les nuls
    Par enicnath dans le forum Outlook
    Réponses: 3
    Dernier message: 20/10/2014, 18h53
  5. Des pièces jointes dans les groupes sociaux
    Par SmileSoft dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 0
    Dernier message: 16/11/2010, 23h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo