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 :

Extraire pièces jointes ".xls" d'un dossier puis archiver le mail


Sujet :

VBA Outlook

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2013
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Extraire pièces jointes ".xls" d'un dossier puis archiver le mail
    Bonjour a tous !

    Dans le cadre du boulot, j'aimerais extraire les pieces jointes, au format ".xls*", d'un dossier Outlook nommé "test".

    Si ces mails sont munis d'une ou plusieurs pièce jointe (pas toujours le cas), j'aimerais deplacer le mail vers un dossier "test2".

    A la fin il ne devrait plus que me rester les mails sans pièces jointes dans "test" et les mails avec pièces jointes dans "test2".

    Deux problèmes :
    • A quel moment du code faut-il déplacer le mail ? (Ici le mail est déplacé qu'il soit muni d'un PJ ou non)
    • Le code fonctionne mais s'arrête toujours au milieu, sans message d'erreur (s'il y a 50 mails il en déplace 25, je relance la macro il en bouge 12 autres, puis 6...). C'est incompréhensible, je me prend la tête dessus !


    Voici le code que j'ai pu obtenir en aller chercher des petits bouts sur plusieurs forums :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Option Explicit
    '------------------------------------------------------------------------
    'Nécessite d'activer la référence Microsoft Outlook xx.xx Object Library
    '------------------------------------------------------------------------
     
    Dim x As Integer
     
        'La boite de réception, la boite des éléments supprimés et tous leurs
        'sous dossiers sont pris en compte.
    Sub ExportePiecesJointes()
        Dim Ol As New Outlook.Application
        Dim Ns As Outlook.NameSpace
        Dim Dossier As Outlook.MAPIFolder
     
        Set Ns = Ol.GetNamespace("MAPI")
        Set Dossier = Ns.Folders(1)
     
        SearchFolders Dossier
        x = 0
    End Sub
     
     
    Private Sub SearchFolders(ByVal fld As Outlook.MAPIFolder)
     
     
    Dim y As Integer
    Dim olmail As Outlook.MailItem
    Dim pceJointe As Outlook.Attachment
    Dim SousDossier As Outlook.MAPIFolder
    Dim myNameSpace As Outlook.NameSpace
    Dim myDestFolder As Outlook.MAPIFolder
    Dim myInbox As Outlook.MAPIFolder
    Dim myOlApp As New Outlook.Application
     
    Set myNameSpace = myOlApp.GetNamespace("MAPI")
    Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
    Set myDestFolder = myInbox.Folders("test2")
     
    For Each SousDossier In fld.Folders
        If SousDossier.DefaultItemType = 0 And SousDossier.Name = "Test" Then
            For Each olmail In SousDossier.Items
                If Not olmail.Attachments.Count = 0 Then
                    For y = 1 To olmail.Attachments.Count
                         Set pceJointe = olmail.Attachments(y)
                            If Right(pceJointe.FileName, 3) = "xls" Or Right(pceJointe.FileName, 4) = "xlsx" Then
                            x = x + 1
                            pceJointe.SaveAsFile "Chemin d'accès"                        End If
                            olmail.Move myDestFolder
                         Set pceJointe = Nothing
                    Next y
                End If
            Next olmail
        End If
        SearchFolders SousDossier
     
    Next SousDossier
    End Sub
    Merci à celui qui pourra m'aider !

  2. #2
    Membre habitué
    Homme Profil pro
    Back Office Marchés
    Inscrit en
    Mars 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Back Office Marchés
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 65
    Points : 139
    Points
    139
    Par défaut Pb Enumération
    Bonjour,

    Je crois que ton problème vient du fait que tu retires des objets d'une énumération. Essaye plutôt de boucler à l'envers avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = SousDossier.Items.Count to 1 step -1
    ...
    Next i
    plutôt que ton For Each... Next et ça devrait le faire.

    Guillaume

Discussions similaires

  1. [XL-2010] Extraire pièces jointes de fichiers .msg
    Par 2lester dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/01/2013, 15h19
  2. Extraire pièces jointes des mails
    Par Josette92 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 20/10/2010, 11h07
  3. Extraire Pièces jointe (*.xls et *.zip uniquement) d'outlook
    Par roidurif dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/12/2009, 10h14

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