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 : 37
    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
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  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 : 37
    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?
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  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