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 :

Créer une règle qui déplace une pièce jointe dans le répertoire D [OL-2010]


Sujet :

VBA Outlook

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut Créer une règle qui déplace une pièce jointe dans le répertoire D
    Bonjour à tous et à toutes

    Je ne sais si suis dans le bon forum ... si ce n'est pas le cas je vous de prie de m'en excuser.

    Mon problème est le suivant; je reçois chaque matin un mail qui contient en pièce jointe un fichier excel (.csv) (qu' on va appelé Le_fichier) et je souhaite créer une règle qui déplace non pas le mail mais la pièce jointe dans un dossier (Le_Dossier) du répertoire D:\ de mon poste. Je veux donc que ma règle déplace le Le_fichier vers le répertoire D:\Le_Dossier\

    Si vous avez des tuyaux à me filer, je vous en serais gré.De même si quelqu'un a un lien où ce problème a été résolu, je suis preneur.


    Merci par avance de votre aide.


    Kedmard.

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Le problème est déjà évoqué dans la FAQ ici

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Salut carden752,

    Merci de ta réponse j'ai fait ce qui est recommandé dans le tuto mais ça ne marche pas; je me suis envoyé un mail avec pièce jointe mais la pièce jointe n'a pas été déplacée vers le dossier spécifié.
    Ma règle s'applique sur les mails envoyés par moi-même.


    Serait-ce peut-être parce que je suis outook 2007 et que la référence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Microsoft CDO 1.21 Library
    n'y figure pas?
    J'ai néanmoins coché l'unique référence CDO que j'ai vu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Microsoft CDO  for Windows 2000 Library
    .


    Merci d'avance

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Essaies en déclarant tous les objets de type MAPI.quelque chose en Object.
    Comme ça plus de problème de référence.
    Autre chose, est-ce que tu as bien changé le répertoire dans le code aussi?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Salut, désolé de repondre tard...

    J'ai bel et bien changé le répertoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Repertoire = "D:\Le_Dossier\" & expediteur & "\"
    j'ai modifié la fonction Isembedded en substituant tous les "MAPI.quelque " par des "As Object" mais en vain.

    D'abord la description de ma règle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Appeliquer cette règle après l'arrivée du message de
    papimami@yahoo.fr
    et sur cette ordinateur seulement
    exécuter Projet1.extrait PJ vers rep
    et arrêter de traiter plus de règles




    Et le nouveau code de la fonction Isembedded

    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
     
    Function Isembedded(ByVal strEntryID As String, attindex As Integer) As Variant
        Dim oSession As Object
        ' CDO objects
        Dim oMsg As Object
        Dim oAttachs As Object
        Dim oAttach As Object
        ' 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
    Ai-je omis un détail?

  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
    Salut,
    tu n'es pas obligé d'appliquer ce code à la lettre, la fonction isembedded sert uniquement à vérifier le type de pj soit image insérée dans le texte soit réelle PJ.

    ' ajouter une référence à Microsoft CDO 1.21 library
    Pour Outlook 2007 il faut le télécharger là :
    http://www.microsoft.com/downloads/d...displaylang=en

    ps: il y a plusieurs "cdo" qui sont différents!

    mais comme dit au dessus tu peux supprimer cete partie :

    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
    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 ##########################################################
    
      
            Repertoire = "D:\Le_Dossier\" & 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
    
    
                    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
    
    
            Next PJ
    
    'cette partie là aussi est optionnelle 
            '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

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Salut Oliv-

    Merci de ta rèponse, en fait j'ai changé de poste et ça marche; je suis passé sur 2010.

    Je récapitule ce que j'ai fait:

    -passage sur outlook 2010
    -cocher la référence

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Microsoft CDO  for Windows 2000 Library
    -Activation des macros outlook

    -remplcacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Repertoire = "D:\Le_Dossier\" & expediteur & "\"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Repertoire = "D:\Le_Dossier\"
    -Retirer tout ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'on déplace le mail vers un sous dossier outlook
     
           Dim myDestFolder As Outlook.MAPIFolder
     
           Set myDestFolder = MyMail.Parent.Folders("test")
           MyMail.Move myDestFolder


    -Dans la fonction Isembedded j'ai remplacé tous les " MAPI.quelquechose " par "Object" comme me l'a suggéré Carden752.



    En tout cas merci à vous Messieurs .


    Cordialement,


    Kedmard.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/08/2013, 20h37
  2. Réponses: 7
    Dernier message: 21/03/2011, 13h36
  3. Réponses: 0
    Dernier message: 04/08/2010, 14h02
  4. Matisse : créer un formulaire qui gère UNE entité et pas une liste
    Par Chacual dans le forum NetBeans Platform
    Réponses: 0
    Dernier message: 11/06/2009, 19h09
  5. Réponses: 27
    Dernier message: 03/01/2008, 11h07

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