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 :

[O-07] - enregistrement piece jointe dans un dossier


Sujet :

VBA Outlook

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 57
    Points : 50
    Points
    50
    Par défaut [O-07] - enregistrement piece jointe dans un dossier
    Bonjour,

    Je reçois chaque semaine plusieurs fichiers CSV par mail que je voudrais stocker dans un répertoire pour faire un traitement de masse derrière.

    J'ai trouvé le code d'un script pour faire cela, mais je n'arrive pas a le faire fonctionner. Il crée bien un dossier avec l'adresse mail de l'expéditeur du message, mais le dossier reste vide.

    J'ai cherché sur les différents forums mais je reste coincé.

    J'ai trouvé le code suivant en ligne (a cette adresse : http://outlook.developpez.com/faq/?p...eceive_Save_PJ) :
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    Sub extrait_PJ_vers_rep(strID As Outlook.MailItem)
     
    ' ***olivier CATTEAU***
     
    ' 23 avril 2007
     
        Dim olNS As Outlook.namespace
        Dim MyMail As Outlook.MailItem
     
        Dim expediteur
        Set olNS = Application.GetNamespace("MAPI")
        Set MyMail = olNS.GetItemFromID(strID.EntryID)
     
        'MsgBox "nouveau message"
     
        If MyMail.Attachments.Count > 0 Then
     
            expediteur = MyMail.SenderEmailAddress
     
            'on crée le répertoire où mettre les fichiers joints ##########################################################
     
            'c:\temp\pj\ doit déjà exister !!!
     
            Repertoire = "c:\temp\pj\" & expediteur & "\"
     
            If Repertoire <> "" Then
     
                If "" = Dir(Repertoire, vbDirectory) Then
     
                    MkDir Repertoire
     
                End If
     
            End If
     
            'on traite les pj
     
            Dim PJ, typeatt
     
            For Each PJ In MyMail.Attachments
                'vérification si c'est une PJ Embedded
     
                typeatt = Isembedded(strID, PJ.Index)
     
                If typeatt = "" Then
     
                    If "" <> Dir(Repertoire & PJ.FileName, vbNormal) Then
     
                        MsgBox Repertoire & PJ.FileName & " existe !!"
     
                        'si existe copie vers le répertoire old
     
                        If "" = Dir(Repertoire & "old", vbDirectory) Then
     
                            MkDir Repertoire & "old"
     
                        End If
     
                        FileCopy Repertoire & PJ.FileName, Repertoire & "old\" & PJ.FileName
     
                    End If
     
                    PJ.SaveAsFile Repertoire & PJ.FileName
     
                End If
     
            Next PJ
     
            'drapeau vert
     
            MyMail.FlagIcon = olGreenFlagIcon
     
            'Marque lu
     
            MyMail.UnRead = False
     
            MyMail.Save
     
            'on déplace le mail vers un sous dossier outlook
     
            Dim myDestFolder As Outlook.MAPIFolder
     
            Set myDestFolder = MyMail.Parent.Folders("test")
            MyMail.Move myDestFolder
     
        End If
     
        Set MyMail = Nothing
        Set olNS = Nothing
     
    Fin:
     
    End Sub
     
     
     
    ' Function: Fields_Selector
     
    ' Purpose: View type of attachment
     
    ' olivier catteau fevrier 2006
     
    Function Isembedded(ByVal strEntryID As String, attindex As Integer) As Variant
     
        Dim oSession As MAPI.Session
        ' CDO objects
     
        Dim oMsg As MAPI.Message
        Dim oAttachs As MAPI.Attachments
     
        Dim oAttach As MAPI.Attachment
     
        ' initialize CDO session
     
        On Error Resume Next
     
        Set oSession = CreateObject("MAPI.Session")
        oSession.Logon "", "", False, False
     
        ' get the message created earlier
     
        Set oMsg = oSession.GetMessage(strEntryID)
        ' set properties of the attached graphic that make
     
        ' it embedded and give it an ID for use in an image tag
     
        Set oAttachs = oMsg.Attachments
        Set oAttach = oAttachs.Item(attindex)
        Dim strCID As String
     
        strCID = oAttach.Fields(&H3712001E)
     
        Isembedded = strCID
     
        Set oMsg = Nothing
     
        oSession.Logoff
     
        Set oSession = Nothing
     
    End Function
    Merci d'avance pour votre aide.

  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 Voisin,

    Où est tu bloqué dans ce code ? avec quele logiciel est créé ton mail d'origine contenant le csv ?

    rempalce pour essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    typeatt = Isembedded(strID, PJ.Index)
    par 
    typeatt=""

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    Bonjour

    Je ne sais pas trop où le code bloque... J'ai essayé de faire fonctionner le code en pas à pas mais ça ne fonctionne pas, j'ai essayé de mettre des MsgBox, pareil, je ne vois rien....

    Je n'ai aucune idée du logiciel a partir duquel le mail est créé.

    J'ai essayé de faire la manip typeatt="", rien n'y fait...


    mes infos n'aident pas beaucoup mais je ne sais pas ce qui pourrait etre utile pour avancer


    EDIT : En fait le mail m'est transmis par une collègue qui utilise outlook express (mais elle doit prochainement passer sur outlook2007)

  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
    Salut,
    Avec ce code tu vas pouvoir tester le script sur le mail en cours :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test_script()
    Dim OITEM As Outlook.MailItem
    Set OITEM = ActiveInspector.CurrentItem
    extrait_PJ_vers_rep OITEM
    End Sub

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    J'ai essayé de tester ça, mais là j'ai une erreur sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set OITEM = ActiveInspector.CurrentItem
    Variable objet ou variable de bloc With non définie

    Je me suis placé dans le dossier concerné et j'ai lancé le script en pas a pas pour en arriver là.

  6. #6
    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
    il faut avoir un mail ouvert.

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    OK, avec le mail ouvert ça fonctionne.

    Ma piece jointe a bien été enregistrée dans un dossier.

    Par contre je ne sais pas si en recevant de nouveau un mail le script fonctionnera. Je vais tester ça.

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    Ca fonctionne comme cela, mais comme les fichier reçus ont toujours le même nom (on recoit 4 fichier d'un coups), je souhaiterai maintenant les enregistrer en fonction de la date de reception. (si possible au format aammjj)

    avez vous une idée de comment faire ça ?

    Merci

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    C'est bon j'ai trouvé apres une recherche sur google

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dateMail = MyMail.ReceivedTime
    dateMail = Format(dateMail, "yymmdd")
    Merci beaucoup pour cet aide précieuse.

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

Discussions similaires

  1. [Toutes versions] Récupération pieces jointes dans tout dossier
    Par Aladin_23 dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 22/06/2010, 15h39
  2. Envoyer document par piece jointe dans sous dossier
    Par webmantoine dans le forum Configuration
    Réponses: 0
    Dernier message: 12/10/2009, 12h45
  3. envoyer un formulaire en piece jointe dans outlook
    Par gadjou dans le forum Access
    Réponses: 12
    Dernier message: 01/08/2006, 18h36
  4. [Forum] Pièce jointe dans un post
    Par LedZeppII dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 01/06/2006, 11h43
  5. piece jointe dans envoie de Fax
    Par ston dans le forum Access
    Réponses: 15
    Dernier message: 17/10/2005, 12h18

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