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 :

Classer email dans dossier correspondant via mot contenu dans objet email [VBA]


Sujet :

VBA Outlook

  1. #1
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Classer email dans dossier correspondant via mot contenu dans objet email [VBA]
    Bonjour à tous,

    Merci pour ce site que j'apprécie au quotidien!

    Courage et merci à ceux qui liront.


    Voici ma problématique :

    Je souhaiterai faire comme l'option règle de Outlook : [mot] contenu dans objet d'un email -> classer dans Sous-Dossier s'appelant [mot].

    Mais, je suis obligée avant de faire cette "règle" de lire ces messages dans la boite de réception et de les trier dans un premier dossier.
    Donc, je ne peux pas utiliser directement la règle OL, s'eut été trop beau !

    Si il existe une autre méthode que le VBA je suis bien sure preneuse!

    Voici chronologiquement le travail quotidien à faire sur OL :

    1/ Réception d'un email
    2/ (Traiter cette email suivant la demande)
    3/ Le classer en fonction de la demande dans un dossier [Prestations]
    4/ Dans ce dossier [Prestations], il y a des sous dossiers [Nom Sociétés]
    5/ Classement "à la main" de chaque email de [Prestations] dans chaque sous dossier correspondant à la bonne [société].

    J'ai donc bcp d'email à classer car les demandes sont traités par bcp de personnes mais c'est moi qui les classe
    Heureusement, les expéditeurs écrivent leur objet de cette manière [nom société] [prestations], ce qui nous simplifie grandement le travail de classement, mais le volume est tout de même très important.

    Etant donné que je me débrouille bien en VBA sur Excel, on va dire que j'ai la logique mais sur OL, je ne connais pas tous les termes.

    J'ai déjà regardé ce sujet là :
    http://www.developpez.net/forums/d27...sous-dossiers/

    Mais j'avoue ne pas tout saisir, et surtout je souhaiterai lancer ma macro qd je le souhaite (bouton dans ruban).

    Donc voici comment je vois la logique du programme :

    1/ Parcourir chaque sous dossier [sociétés] du dossier [Prestations] et prendre pour chacun le [nom] (valeur) du sous-dossier.
    2/ Pour chaque [nom] le comparer à chaque [mot] présent dans l'objet de chaque email du dossier [Prestations]
    3/ Quand ça match, me demander éventuellement une validation avec un MsgBox "[nom] = Objet du mail complet comprenant le [mot]"
    4/ Si "yes" l'email comportant dans l'objet ce [mot] va se classer dans le dossier [nom] correspondant


    Problèmes qui se posent de mon idée (entre autres):
    Que se passe t il si il y a plusieurs emails comportant le [nom], va t'il "boucler" jusqu'à classer tous les emails concernés puis passer à une autre [société]?
    Que se passe t il si le [mot] n'est pas complet par rapport au [nom] de la société ou même si il y a une faute de frappe?

    Enfin avant ça, je me retourne vers votre expérience et savoir pour me dire si cela est possible ou non ?

    Si oui, alors je suis tout ouïe

    MERCI MERCI MERCI
    LH

  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,

    Tu souhaites bien déplacer le mail d'origine, pas une réponse ?

    Peut on dire que le premier [] dans l'objet comporte le nom de la société ?

  3. #3
    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
    Voici un exemple

    Ici le dossier de classement est un sous dossier de la boite de reception se nommant Diffusion

    si ce dossier n'existe pas il sera créé


    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
    Sub Classe_Prestations()
    '---------------------------------------------------------------------------------------
    ' Procedure : Classe_Prestations
    ' Author    : OCTU
    ' Date      : 11/01/2016
    ' Purpose   : Classe Les Emails dans le dossier si le sujet contient la structure []
    '---------------------------------------------------------------------------------------
    '
       Dim MonOutlook As Outlook.Application
        Dim Item As Object
        Dim LeMail As Outlook.MailItem
        Dim LesMails As Object
        Set MonOutlook = Outlook.Application
        Set LesMails = MonOutlook.ActiveExplorer.Selection
       
        Dim objFolderDestination As MAPIFolder
       
           For Each Item In LesMails
            If Item.Class = olMail Then
                Set LeMail = Item
               
            Dim DossierName, StructureDossierName
            StructureDossierName = "["
            DossierName = getDossierName(Item.Subject, StructureDossierName)
     
            If InStr(1, Item.Subject, DossierName, vbTextCompare) Then
                Set objFolderDestination = getDestinationFolder("Diffusion", DossierName)
                Item.Move objFolderDestination
            End If
            End If
        Next
    fin:
    End Sub
     
    Function getDestinationFolder(ParentName, FolderName) As Folder
    '---------------------------------------------------------------------------------------
    ' Procedure : getDestinationFolder
    ' Author    : OCTU
    ' Date      : 03/04/2015
    ' Purpose   : Renvoi le sous dossier d'un dossier avec création
    '---------------------------------------------------------------------------------------
    '
        Dim objNS As NameSpace
        Dim objFolderParent As MAPIFolder
        Dim objFolderDestination As MAPIFolder
        On Error Resume Next
        Set objNS = Application.GetNamespace("MAPI")
        Set objFolderParent = objNS.GetDefaultFolder(olFolderInbox).folders(ParentName)
        If TypeName(objFolderParent) = "Nothing" Then
            Set objFolderParent = objNS.GetDefaultFolder(olFolderInbox).folders.add(ParentName)
        End If
        Set objFolderDestination = objFolderParent.folders(FolderName)
        If TypeName(objFolderDestination) = "Nothing" Then
            Set objFolderDestination = objFolderParent.folders.add(FolderName)
        End If
        Set getDestinationFolder = objFolderDestination
    End Function
     
    Function getDossierName(Subject, Structure) As String
    '---------------------------------------------------------------------------------------
    ' Procedure : getDossierName
    ' Author    : OCTU
    ' Date      : 03/04/2015
    ' Purpose   : Trouve dans le sujet le nom qui correspond au début #XM
    '---------------------------------------------------------------------------------------
    '
        OuCommenceAdresse = InStr(1, Subject, Structure, vbTextCompare)
        If OuCommenceAdresse > 0 Then
            fin = InStr(OuCommenceAdresse + Len(Structure), Subject, "]", vbTextCompare)
            If fin = 0 Then
                getDossierName = Mid(Subject, OuCommenceAdresse)
            Else
                getDossierName = Mid(Subject, OuCommenceAdresse + Len(Structure), fin - OuCommenceAdresse - 1)
            End If
        End If
     
    End Function

  4. #4
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    Bonjour,

    Tu souhaites bien déplacer le mail d'origine, pas une réponse ?

    Peut on dire que le premier [] dans l'objet comporte le nom de la société ?
    bonjour Oliv,

    Merci pour ta réponse,

    Oui en effet dans l'objet une partie ou le nom de la société entière = nom sous-dossier

    LH

  5. #5
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci pour ton code,

    Je vais l'essayer et te tiens au courant.

    Aujourd'hui pas la grande forme alors, pas possible de réfléchir.

    Mais je m'y attèle très vite,

    Encore merci
    LH

  6. #6
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Me revoilà !!!
    Bonjour Oliv,

    Me revoilà enfin, désolée, j'étais sur un autre projet.

    J'ai décortiqué ton code (sans l'essayer), arrête moi si je me trompe mais, si je comprends bien, dès qu'il voit un email avec un sujet comprenant [] il les classe dans le dossier "diffusion" ?

    Ce que je souhaite en fait c'est que le code parcourt dans un sous-dossier TOTO / les sous-dossiers "PIERRE";"PAUL";"JACQUES";[...];"SEBASTIEN"
    Qu'il prenne les 4 ou 5 premiers caractères de la valeur textuelle de ce dossier "PIERR" et qu'il la mette dans le cadre de recherche du sous dossier TOTO puis avec les emails apparus, avec cette recherche, soient déplacés dans le dit sous-dossier TOTO/PIERRE

    Ensuite, une fois terminé, il descend dans le dossier PAUL etc. jusqu'à avoir fait tous les sous dossiers dans TOTO

    J'espère que je me suis bien expliquée

    MERCI d'avance
    LH

  7. #7
    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,

    Pas tout à fait.

    Le programme parcours tous les emails SELECTIONNES du dossier où il est.

    Si le sujet contient "[" il extrait le nom contenu entre "[" et "]"

    Vérifie si le dossier "Boîte de réception\DIFFUSION\nom trouvé" existe
    si non il créé LES DOSSIERS "DIFFUSION" et "NOM TROUVE"
    ENSUITE IL DÉPLACE l'Email dans ce ss dossier.

    Ton complément d'explication n'est pas bien clair.

    d'abord où se trouve PRESTATION ? est-ce un sous dossier de la "Boite de réception" ou un dossier au même niveau ?


    Qu'il prenne les 4 ou 5 premiers caractères de la valeur textuelle de ce dossier "PIERR"
    ca veut dire quoi au maxi on prend 5 caractères ?

    est ce que cette séquence est entourée par "[" et "]" dans le sujet
    comme :
    EXAMPLE 1 [PIERR]
    où se trouve librement dedans
    comme :
    EXAMPLE 2 PIERR

  8. #8
    Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour Oliv,

    Merci de prendre le temps de me répondre.

    Ok pour tes explications merci.

    d'abord où se trouve PRESTATION ? est-ce un sous dossier de la "Boite de réception" ou un dossier au même niveau ?
    Le dossier se déroule comme celà :

    Boite de Réception
    _______________ _ PRESTATIONS
    ______________________ _ Nom Société (nom trouvé)
    ______________________ _ "
    ______________________ _ ETC.

    ca veut dire quoi au maxi on prend 5 caractères ?
    Cela veut dire que parfois dans le sujet, le nom trouvé peut être plus long mais en général les 5 premiers caractères correspondront

    est ce que cette séquence est entourée par "[" et "]" dans le sujet
    comme : [PIERR]

    où se trouve librement dedans
    comme : PIERR
    En fait les 2...

    Je vais essayer ton code sans trop faire de dégâts

    Merci encore
    LH

Discussions similaires

  1. Découpage de mots contenu dans un fichier en bash
    Par oranoutan dans le forum Linux
    Réponses: 3
    Dernier message: 08/05/2010, 00h24
  2. Découper un mot contenu dans une variable en plusieurs variables
    Par AZzjeioafh dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 25/11/2009, 18h24
  3. Réponses: 8
    Dernier message: 09/09/2009, 19h19
  4. Afficher dans Excel tous les fichiers contenu dans un dossier
    Par popsmelove dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/01/2008, 18h21
  5. [DEBUTANT]Recherche mot contenu dans une String
    Par lynxman dans le forum Langage
    Réponses: 7
    Dernier message: 16/12/2005, 11h49

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