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

Outlook Discussion :

Compter le nombre de mail par catégorie uniquement


Sujet :

Outlook

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Compter le nombre de mail par catégorie uniquement
    Bonjour,

    Je souhaiterais obtenir de l'aide concernant le VBA Outlook, je vous explique :
    Je souhaite mettre en place un macro me permettant d'obtenir le nombre de mails pour chaque nom de catégorie d'un dossier (qui est sélectionné à l'écran).

    Dans mes sous-dossiers, je dispose de catégories différentes selon le dossier père où je me trouve.
    Par exemple :
    Dans le dossier 1, j'ai le sous-dossier Sub1, où la catégorie rouge correspond à nom de catégorie nameCategory1
    Dans le dossier 2, j'ai le sous-dossier Sub2, où la catégorie rouge correspond à nom de catégorie nameCategory2

    Et ceci avec plusieurs catégories.

    Je parviens à obtenir les noms des catégories mais de la boite de réception et non ceux du dossier à l'écran.
    Je ne parviens pas non plus à compter le nombre de mails par catégorie.

    Voici mon code :
    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
     
     Sub ListCategory()
     Dim objNameSpace As NameSpace
     Dim objFolder As MAPIFolder
     Dim objCategory As Category
     Dim strOutput As String
     Dim positionRep, nbMail
     
     Set objFolder = ActiveExplorer.CurrentFolder ' Positionnement sur le dossier active
     Set objNameSpace = Application.GetNamespace("MAPI")
     
     If objNameSpace.Categories.Count > 0 Then 'Compteur de catégories > 0 categorie
     For Each objCategory In objNameSpace.Categories
     Set positionRep = objFolder 'Valeur correspondant au positionnement actuel"
     
     
     
     strOutput = strOutput & objCategory.Name & _
     " : " & nbMail & vbCrLf
     Next
     End If
     MsgBox "Réptertoire actuel : " & positionRep & "" _
     & vbCrLf & vbCrLf & strOutput 'Affichage des messages
     Set objCategory = Nothing
     Set objNameSpace = Nothing
     
    End Sub
    Pouvez-vous me venir en aide ?

    PS : Je n'ai jamais toucher à du VBA (même si j'ai des notions sur d'autres langages)

  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 : 52
    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,
    C'est pas la bonne méthode !

    En fait la catégorie est une propriété concaténée du Mail

    Tu peux avoir :"Orange Category" mais aussi :"Orange Category; Developpement" ou "Orange Category; Developpement; Red Category" etc...



    Donc il faut découper cette propriété avec SPLIT par exemple

    Split(expression[, delimiter[, limit[, compare]]])

    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
    Sub Lance_Traitement_categories()
    '---------------------------------------------------------------------------------------
    ' Procedure : Lance_Traitement
    ' Author    : Oliv
    ' Date      : 18/1/2018
    ' Purpose   :
    '---------------------------------------------------------------------------------------
    '
        Dim OL As Outlook.Application
        Dim olNS As Outlook.NameSpace
        Dim olFolder As Outlook.Folder
     
        Set OL = Outlook.Application
        Set olNS = OL.GetNamespace("MAPI")
     
        'soit on connait le dossier
        'Set olFolder = olNS.GetDefaultFolder(olFolderInbox).folders
     
        'soit on le choisi
        Set olFolder = olNS.PickFolder
     
        For Each truc In olFolder.Items
            If truc.Class = olMail Then
                CATs = Split(truc.Categories, ";")
     
                For Each CAT In CATs
                    MsgBox truc.Subject & vbCr & "Nb de catégories=" & UBound(CATs) + 1 & vbCr & CAT
     
                Next CAT
            End If
     
        Next truc
     
        MsgBox "Traitement terminé"
    End Sub
    ensuite il faut que tu crées un Dictionnary ou une Collection pour chaque nouvelle catégorie et que tu mettes à jour le nombre trouvé


    edit: tu peux utiliser gettable qui est plus rapide que de parcourir mail par mail voici un exemple qui exporte la liste vers excel
    https://www.developpez.net/forums/d1...e/#post9758176

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour Oliv,

    Je te remercie pour ton aide,

    Concernant les catégories, je pensais qu'il s'agissait d'une constante qu'on pourrait trouver dans les libs d'Outlook.
    Ceci étant, j'ai testé le morceau de code que tu as écris.

    Le problème de ta solution au vue des mails c'est que pour chaque dossier, il peut y avoir plus de 3 000 mails par dossiers, et de passer d'une fenêtre à une autre serai très compliqué pour moi.

    Par rapport à ma demande (pour faire simple) je souhaiterais sélectionner un dossier, puis en une seule fenêtre, obtenir uniquement le nombre de mail catégorisé
    ex :
    "Dossier blablabla
    NomCategory1 = 4 ("mails")
    NomCategory2 = 365
    NomCategory5 = 28..."

    L'idée que tu as eu d'effectuer un extract est aussi une solution potentielle.
    Au bout du compte, le script que je souhaite élaborer me permettra de relever le nombre de mails tagé (par catégorie) pour chaque dossier.

    Idéalement, il serait bien d'avoir le contenu du nombre de mails jusqu'au dossier N-2.

    Par exemple :
    Dossier : 09-Septembre
    Sous-dossier : Semaine 36
    Sous sous-dossier 1 : Lundi
    - NomCategory1 = 4
    - NomCategory2 = 365
    - NomCategory3 = 28
    Sous sous-dossier 2 : Mardi
    - NomCategory2 = 40
    - NomCategory3 = 35
    - NomCategory6 = 208
    Dossier : 10-Octobre...
    et ainsi de suite mais à la rigueur, ce n'est pas grave si cela n'est pas faisable.

    Je regarde quand même de mon coté pour pouvoir utiliser un dictionnaire de manière à concatener l'ensemble des valeurs dans une seule structure avant de la mettre en MsgBox.

    Je te remercie pour ton aide

  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 : 52
    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
    Si tu dois parcourir plusieurs dossiers /sous dossiers et milliers d'emails, il faut utiliser la méthode gettable avec soit une boucle une procédure récursive, et AdvancedSearch

    Sinon il y a un moyen sans MACRO ...

    Tu crées un "Dossier de recherche" où tu auras par exemple tous tes dossiers, ou tous tes Emails.

    Tu créés un affichage en spécifiant "regrouper par" tu décoches "regrouper automatiquement selon la disposition" et tu sélectionnes

    "dans le dossier"
    et en 2e clé : "Catégories"

    tu valides et tu auras en cliquant sur la ligne bouton droit "réduire tous les groupes" ensuite tu cliques sur chaque triangle pour ouvrir le regroupement
    Nom : Capture.PNG
Affichages : 2711
Taille : 12,6 Ko

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Re bonjour Oliv,

    Je te remercie une fois de plus,

    Je me suis intéressé sur la solution 2 que tu propose qui me va très bien (autant faire simple quand c'est possible).
    Par contre, je ne trouve pas dans "Première clé de regroupement des éléments", je ne trouve pas "Dans le dossier" sur Outlook 2016 et je ne vois pas du tout à quoi ça pourrait correspondre.

  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 : 52
    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 est préférable d'ajouter le champd "Dans le dossier" à l'affichage, en cliquant bouton droit sur les noms des colonnes puis "selecteur de champs"

    Choisir "Tous les champs Message" et "Dans le dossier"

    ensuite il sera dispo
    Nom : Capture.PNG
Affichages : 2802
Taille : 20,1 Ko

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour Oliv,

    Je te remercie pour ta réponse.

    Je viens de tester une fois de plus ta solution et ça fonctionne sur ma boite de réception.
    Par contre, je souhaiterai effectuer le même traitement pour des boites mails supplémentaires importés (boite mail exchange).
    Nom : out.PNG
Affichages : 2761
Taille : 28,3 Ko

    Lorsque je créé un dossier de recherche dans la boite mail concernée, je trouve uniquement la boite de réception et non les autres boites mails.

    Est-ce normal ou y a-t-il un paramétrage à faire ?

  8. #8
    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 : 52
    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,
    Il faut Créer un compte par bal dans ton profil.

    Fichier/Informations/Paramètres de compte/ puis NOUVEAU

    pour les identifiants tu dois mettre les mêmes que ton compte principal

Discussions similaires

  1. Shell script pour compter le nombre de fichiers par extension
    Par andress33 dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 30/03/2015, 02h26
  2. Compter le nombre de visite par jour
    Par Are-no dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/02/2008, 17h37
  3. Réponses: 3
    Dernier message: 08/09/2006, 13h35
  4. [Access] Compter le nombre d'arrivée par année
    Par tatayoyo dans le forum Langage SQL
    Réponses: 6
    Dernier message: 23/08/2006, 13h08
  5. Compter le nombre de page par regroupement
    Par bondyfalat dans le forum Access
    Réponses: 2
    Dernier message: 01/03/2006, 18h08

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