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 mails par nom de domaine


Sujet :

Outlook

  1. #1
    Membre averti
    Homme Profil pro
    Rédacteur
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Par défaut Compter le nombre de mails par nom de domaine
    Bonjour,

    A ma boîte, nous travaillons via la messagerie Outlook avec une adresse « perso », c’est-à-dire avec le prénom et nom de la personne.
    La direction ne peut donc pas connaitre automatiquement le nombre de mails en instance de traitement, que ce soit individuellement ou globalement.

    J’ai mon idée perso sur le sujet pour avoir quelque chose d’assez fouillé et répondre à ce problème, mais à part une macro via le VBA d’Outlook, je ne vois pas d’autres issues et… je suis assez nul en VBA ; j’ai donc besoin de vos lumières.

    Mon idée est celle-ci : comptabiliser le nombre de mails contenus dans le dossier de réception par défaut, par nom de domaine. On pourra ainsi connaitre le nombre de mails issus de l’extérieur en déduisant du résultat total le nombre de mails en interne (nom de domaine de ma boite). Ensuite, sachant que nous travaillons aussi avec des partenaires réguliers, on pourrait regrouper les mails de l’un d’eux pour effectuer un traitement ciblé, sur une personne précise donc.

    J’imagine la chose de 2 façons : avoir une info succincte dans la barre d’outils (nombre de mails externes / nombres de mails internes) via un onglet et une info plus détaillée en cliquant sur un bouton qui pourrait se trouver dans le même onglet.

    Le résultat pourrait se présenter sous forme de tableau en 2 colonnes « Domaine » / « Nombre de mails ». Et le truc génial serait d’avoir un bouton en face chaque ligne afin de filtrer le dossier « Réception » par le nom de domaine retenu.

    Alors question : y a-t-il un Père Noël dans la salle 😬 ?

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 455
    Par défaut
    Bonjour,
    Je ne suis pas le père noel. Juste un lutin égaré
    Mais vous avez un serveur smtp ou vous passez directement par outlook ?



    J’imagine la chose de 2 façons : avoir une info succincte dans la barre d’outils (nombre de mails externes / nombres de mails internes) via un onglet et une info plus détaillée en cliquant sur un bouton qui pourrait se trouver dans le même onglet.
    Question vraiment bête, mais c'est quoi l'intérêt (j'ai pas le contexte) ?

    Cdt,
    Un problème sans solution est un problème mal posé. (Albert Einstein)

  3. #3
    Membre averti
    Homme Profil pro
    Rédacteur
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Par défaut
    Nous passons directement par Outlook.

    Avoir le nombre de mails en instance permet à la direction d'avoir le nombre de mails "en retard" d'une façon globale et individuellement pour les managers.
    Dire (c'est un exemple) : "j'ai 200 mails de retard dans ma boite mails", sachant que dans ces 200 il y en a 150 qui sont des mails internes, n'aura pas le même impact que de dire "j'ai 50 mails de retard".

    Faire une ventilation entre les mails internes et externes est donc nécessaire car ils n'ont pas la même valeur : un mail externe pour lequel on n'a pas répondu, c'est potentiellement un client mécontent à terme, voire une réclamation.

    Derrière tout ça, c'est aussi un argument pour effectuer la formation des membres d'une équipe dans la gestion des mails et/ou justifier une embauche pour surcharge de travail.

    Merci lutin égaré

  4. #4
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 441
    Par défaut
    Hello,

    si j'ai bien compris
    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
    Sub Compter_le_nombre_de_mails_par_nom_de_domaine()
     
        ' REMPLACER "@interne.xyz" par votre domaine réel
        Const Domaine_Interne As String = "@interne.xyz"
     
        Dim Dossier As Outlook.MAPIFolder
        Dim Message As Outlook.MailItem
     
        Dim Nb_Total As Long
        Dim Nb_Interne As Long
        Dim Nb_Externe As Long
     
        Dim Adresse As String
     
        Dim Resultat As String
     
        Nb_Interne = 0
        Nb_Externe = 0
     
        ' Dossier à analyser "Boite de réception" = olFolderInbox, voir https://learn.microsoft.com/fr-fr/office/vba/api/outlook.oldefaultfolders
        Set Dossier = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
     
        For Each Message In Dossier.Items
            If TypeName(Message) = "MailItem" Then
                Nb_Total = Nb_Total + 1
     
                ' Récupérer l'adresse email de l'expéditeur
                Adresse = LCase(Message.SenderEmailAddress)
     
                If InStr(Adresse, Domaine_Interne) > 0 Then
                    Nb_Interne = Nb_Interne + 1
                Else
                    Nb_Externe = Nb_Externe + 1
                End If
     
            End If
        Next Message
     
        Resultat = "Mails provenant du domaine " & Domaine_Interne & " : " & Format(Nb_Interne, "#,##0") & vbCrLf
        Resultat = Resultat & "Mails provenant d'autres domaine : " & Format(Nb_Externe, "#,##0") & vbCrLf & vbCrLf
        Resultat = Resultat & "Total des mails analysés : " & Format(Nb_Total, "#,##0")
     
        MsgBox Resultat, vbInformation, "Compter le nombre de mails par nom de domaine"
     
    End Sub
    Ca sous entend que les mails sont dans la BàL sont forcément en retard

    PS : le père noël est déjà passé, c'est trop tard maintenant
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  5. #5
    Membre averti
    Homme Profil pro
    Rédacteur
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Par défaut
    Bonjour et bonne année !

    Désolé pour ma réponse tardive, mais c'était les fêtes, les vacances et tralala.

    Alors, un grand merci "Nain porte koi" pour ta réactivité (qui mets la mienne à mal du coup ), chapeau !

    Pour la question : "Ca sous entend que les mails sont dans la BàL sont forcément en retard" : oui, c'est une règle de gestion, on ne garde pas les mails traités dans la boite de réception (on a une Ged).

    J'ai testé et... ça merdouille

    J'ai renseigné mon nom de domaine et j'ai lancé la macro pas à pas. Au bout de quelques itérations, j'ai vu que tout se passait bien et alors j'ai lancé le reste de la macro en auto et... plantage :

    Nom : Image1.jpg
Affichages : 56
Taille : 19,6 Ko

    Je pense que la macro plante une fois le traitement de la boucle terminée, voici le point de blocage :

    Nom : Capture d’écran 2026-01-07 095241.jpg
Affichages : 56
Taille : 221,7 Ko

    Tu penses savoir d'où ça vient (je ne sais interpréter le message de la popup) ?

  6. #6
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 441
    Par défaut
    Hello,

    personnellement je n'étais pas pressé, le père noel était déjà passé

    J'ai beau lire et relire tester et restester la macro, je ne comprend pas ce message d'erreur.
    Le débogueur s'arrête sur un Next Message et dit qu'il y a une incompatibilité de type, comme si la variable Message changeait de type dans la boucle... je pas comprendu.

    Il faudrait vérifier les contenus des différentes variable après le plantage : placez la souris sur les différentes variables et voyez ce qu'elles affichent dans l'info bulle, ça nous donnera peut-être une info

    Éventuellement, ajouter un debug.print sur la variable message pour voir sur quel message la macro se plante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For Each Message In Dossier.Items
    Debug.Print Message
            If TypeName(Message) = "MailItem" Then
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  7. #7
    Membre averti
    Homme Profil pro
    Rédacteur
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Par défaut
    Voici un petit récup du contenu des différentes variables...

    Nom : Image33.jpg
Affichages : 52
Taille : 214,5 Ko

  8. #8
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 441
    Par défaut
    Ben je dirais que le 13ème message à qqchose de particulier
    Mais il manque le contenu de la variable "Message".

    Le debug.print devrait afficher l'objet du message qui plante dans la fenêtre "Exécution" (Ctrl+G pour l'afficher) ou celui juste avant (le 12ème)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        For Each Message In Dossier.Items
    Debug.Print Message
    Autre chose à tester, vider complètement le dossier "Boite de réception" et y placer juste 2 mail : un interne et un externe, puis augmenter petit à petit afin de trouver celui qui pose problème, car je pense qu'il y a un mail un peu pourri qui fait planter la macro
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  9. #9
    Membre averti
    Homme Profil pro
    Rédacteur
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Par défaut
    J'ai testé en affichant la fenêtre d'exécution, mais... c'est assez bizarre.

    Il y a un mail qui semble poser problème : l'objet du mail commence par "Problème" et, dans la fenêtre d'exécution, l'objet commence par "blème" (?). J'ai regardé le mail mais je n'ai rien trouvé de curieux, notamment au niveau du type de caractère.

    J'ai donc retiré le mail.

    J'ai relancé la macro, la liste s'est allongée mais un nouveau blocage est apparu à un autre endroit, possiblement dû à un mail avec d'autres mails en pièces jointes (j'ai un cas avec 6 mails imbriqués dans un mail).

    Du coup, j'ai remis le mail précédemment retiré et j'ai relancé la macro pour voir. La liste a stoppé ailleurs et j'ai constaté que l'objet du mail réintroduit était toujours tronqué dans la fenêtre d'exécution et qu'en plus juste en dessous une ligne vierge avait été créée.
    On ne pouvait pas trouver mieux comme mot pour générer un... problème.
    Nom : Image2.jpg
Affichages : 50
Taille : 26,0 Ko
    Je crois que je vais faire comme vous m'avez proposé : vider ma messagerie et faire des tests mail par mail.

  10. #10
    Membre averti
    Homme Profil pro
    Rédacteur
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Par défaut
    Bon, j'ai des news :
    1. Le comptage semble commencer aléatoirement (pas en fonction de la date),
    2. Le comptage ne prend pas en compte les anciens mails stockés sur le serveur exchange,
    3. Dans la fenêtre d'exécution, le mail qui pose problème n'est pas le dernier de la liste, mais celui qui vient juste après (et ne figure donc pas dans la liste de la fenêtre d'exécution),
    4. Au moins une raison du blocage de la macro : les invitations à une réunion,
    5. La macro considère les mails internes comme des mails externes (pourtant j'ai bien modifié la macro). Est-ce dû au fait que les adresses mail ne sont que les "raccourcis" d'une liste de contact globale ?


    Je poursuis...

  11. #11
    Membre averti
    Homme Profil pro
    Rédacteur
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Par défaut
    Chouette, la macro à identifié un mail interne, tralala !
    Nom : Capture d’écran 2026-01-08 143659.jpg
Affichages : 48
Taille : 26,5 Ko
    La possible raison : c'est un mail généré par un automate (résultat d'une requête hebdo). Mais tous les autres ne sont pas reconnus donc.

    Suite...

    J'ai viré toutes les réunions et... la macro ne plante plus :
    Nom : Image1.jpg
Affichages : 46
Taille : 24,1 Ko
    Reste à savoir pourquoi la plupart des mails internes ne sont pas identifiés comme tel

  12. #12
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 441
    Par défaut
    ok, on avance. Voici une nouvelle version qui prend en compte le domaine Exchange et qui ne devrait plus planter sur les réunions
    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
    Option Explicit
     
    Sub Compter_le_nombre_de_mails_par_nom_de_domaine()
     
        ' REMPLACER "@interne.xyz" par votre domaine réel
        Const Domaine_Interne As String = "@interne.xyz"
     
        Dim Dossier As Outlook.MAPIFolder
        Dim Message As Outlook.MailItem
        Dim Nb_Total As Long
        Dim Nb_Interne As Long
        Dim Nb_Externe As Long
        Dim Adresse As String
        Dim Resultat As String
        Dim Type_Mail As String
     
        Nb_Interne = 0
        Nb_Externe = 0
     
        ' Dossier à analyser "Boite de réception" = olFolderInbox, voir https://learn.microsoft.com/fr-fr/office/vba/api/outlook.oldefaultfolders
        Set Dossier = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
     
        For Each Message In Dossier.Items
     
            If TypeOf Message Is Outlook.MailItem Then
     
                Nb_Total = Nb_Total + 1
     
                ' Récupérer le type de mail (EX ou SMTP)
                Type_Mail = UCase(Message.SenderEmailType)
     
                ' Récupérer l'adresse email de l'expéditeur
                Adresse = LCase(Message.SenderEmailAddress)
     
                 ' Si le type est EX c'est un mail Exchange, ou l'adresse contient le nom de domaine, c'est donc interne
                If Type_Mail = "EX" Or InStr(Adresse, Domaine_Interne) > 0 Then
                    Nb_Interne = Nb_Interne + 1
                ElseIf Type_Mail = "SMTP" Then ' si pas EX, est-ce qu'il est SMTP (donc externe)
                    Nb_Externe = Nb_Externe + 1
                End If ' Ignorer les autres types (FAX, TAPI, etc.)
     
            End If
        Next Message
     
        Resultat = "Mails du domaine " & Domaine_Interne & " ou d'Exchange : " & Format(Nb_Interne, "#,##0") & vbCrLf
        Resultat = Resultat & "Mails provenant d'autres domaine : " & Format(Nb_Externe, "#,##0") & vbCrLf & vbCrLf
        Resultat = Resultat & "Total des mails analysés : " & Format(Nb_Total, "#,##0")
     
        MsgBox Resultat, vbInformation, "Compter le nombre de mails par nom de domaine"
     
    End Sub
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  13. #13
    Membre averti
    Homme Profil pro
    Rédacteur
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Par défaut
    Ca "presque marche" :
    • les messages externes sont tous comptabilisés
    • les messages internes sont tous comptabilisés...
    • ... sauf les invitations à une réunion qui font planter la macro au même endroit qu'avant (Next Message) et avec le message d'erreur dans la popup.

  14. #14
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 441
    Par défaut
    Ben oui, chui kon, ça plante sur le Next Message ce qui veut dire que le type de la variable Message change, donc faut pas s'en servir, pas comme ça du moins
    Bon, on teste autrement
    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
    Option Explicit
     
    Sub Compter_le_nombre_de_mails_par_nom_de_domaine()
     
        ' REMPLACER "@interne.xyz" par votre domaine réel
        Const Domaine_Interne As String = "@interne.xyz"
     
        Dim Dossier As Outlook.MAPIFolder
        Dim Message As Outlook.MailItem
        Dim Nb_Total As Long
        Dim Nb_Interne As Long
        Dim Nb_Externe As Long
        Dim Adresse As String
        Dim Resultat As String
        Dim Type_Mail As String
     
        Dim i As Long
     
        Nb_Interne = 0
        Nb_Externe = 0
     
        ' Dossier à analyser "Boite de réception" = olFolderInbox, voir https://learn.microsoft.com/fr-fr/office/vba/api/outlook.oldefaultfolders
        Set Dossier = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
     
        For i = 1 To Dossier.Items.Count
     
            Set Message = Dossier.Items.Item(i)
     
            If TypeOf Message Is Outlook.MailItem Then
     
                Nb_Total = Nb_Total + 1
     
                ' Récupérer le type de mail (EX ou SMTP)
                Type_Mail = UCase(Message.SenderEmailType)
     
                ' Récupérer l'adresse email de l'expéditeur
                Adresse = LCase(Message.SenderEmailAddress)
     
                 ' Si le type est EX c'est un mail Exchange, ou l'adresse contient le nom de domaine, c'est donc interne
                If Type_Mail = "EX" Or InStr(Adresse, Domaine_Interne) > 0 Then
                    Nb_Interne = Nb_Interne + 1
                ElseIf Type_Mail = "SMTP" Then ' si pas EX, est-ce qu'il est SMTP (donc externe)
                    Nb_Externe = Nb_Externe + 1
                End If ' Ignorer les autres types (FAX, TAPI, etc.)
     
            End If
        Next i
     
        Resultat = "Mails du domaine " & Domaine_Interne & " ou d'Exchange : " & Format(Nb_Interne, "#,##0") & vbCrLf
        Resultat = Resultat & "Mails provenant d'autres domaine : " & Format(Nb_Externe, "#,##0") & vbCrLf & vbCrLf
        Resultat = Resultat & "Total des mails analysés : " & Format(Nb_Total, "#,##0")
     
        MsgBox Resultat, vbInformation, "Compter le nombre de mails par nom de domaine"
     
    End Sub
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  15. #15
    Membre averti
    Homme Profil pro
    Rédacteur
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Par défaut
    Merci pour cette nouvelle tentative.

    Ca peut marcher :

    Nom : Image1.jpg
Affichages : 43
Taille : 26,2 Ko

    Sauf s'il y des invitations à une réunion. En pareil cas, plantage de la macro à cet endroit :

    Nom : Capture d’écran 2026-01-09 130339.jpg
Affichages : 41
Taille : 46,3 Ko

    avec le même message d'erreur qu'au-dessus.

  16. #16
    Membre averti
    Homme Profil pro
    Rédacteur
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Par défaut
    Pour info, je pars un semaine en congés (comment ça encore ?), il n'y a donc pas urgence.

    Bon WE

  17. #17
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 441
    Par défaut
    Rha la la ces travailleurs, toujours en vacances !
    Bon, c'est vrai qu'on tourne autour et après avoir envoyé la dernière macro je me suis rendu compte que ça planterais forcament de la même manière.
    Bref, y'a plus que la solution du zapping de l'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            On Error Resume Next
            Set Message = Dossier.Items.Item(i)
            On Error GoTo 0
    Je ne peux toujours pas tester n'ayant pas d'environnement Exchange, il faut maintenant voir si le fait de zapper l'erreur ne va pas donner un effet de bord, je m'attend à un pb avec le "If TypeOf Message Is Outlook.MailItem Then"
    donc autant anticiper
    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
    Option Explicit
     
    Sub Compter_le_nombre_de_mails_par_nom_de_domaine()
     
        ' REMPLACER "@interne.xyz" par votre domaine réel
        Const Domaine_Interne As String = "@interne.xyz"
     
        Dim Dossier As Outlook.MAPIFolder
        Dim Message As Outlook.MailItem
        Dim Nb_Total As Long
        Dim Nb_Interne As Long
        Dim Nb_Externe As Long
        Dim Adresse As String
        Dim Resultat As String
        Dim Type_Mail As String
     
        Dim i As Long
     
        Nb_Interne = 0
        Nb_Externe = 0
     
        ' Dossier à analyser "Boite de réception" = olFolderInbox, voir https://learn.microsoft.com/fr-fr/office/vba/api/outlook.oldefaultfolders
        Set Dossier = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
     
        On Error GoTo Mail_Suivant
        For i = 1 To Dossier.Items.Count
     
            Set Message = Dossier.Items.Item(i)
     
            If TypeOf Message Is Outlook.MailItem Then
     
                Nb_Total = Nb_Total + 1
     
                ' Récupérer le type de mail (EX ou SMTP)
                Type_Mail = UCase(Message.SenderEmailType)
     
                ' Récupérer l'adresse email de l'expéditeur
                Adresse = LCase(Message.SenderEmailAddress)
     
                 ' Si le type est EX c'est un mail Exchange, ou l'adresse contient le nom de domaine, c'est donc interne
                If Type_Mail = "EX" Or InStr(Adresse, Domaine_Interne) > 0 Then
                    Nb_Interne = Nb_Interne + 1
                ElseIf Type_Mail = "SMTP" Then ' si pas EX, est-ce qu'il est SMTP (donc externe)
                    Nb_Externe = Nb_Externe + 1
                End If ' Ignorer les autres types (FAX, TAPI, etc.)
     
            End If
    Mail_Suivant:
        Err.Clear
        Next i
     
        Resultat = "Mails du domaine " & Domaine_Interne & " ou d'Exchange : " & Format(Nb_Interne, "#,##0") & vbCrLf
        Resultat = Resultat & "Mails provenant d'autres domaine : " & Format(Nb_Externe, "#,##0") & vbCrLf & vbCrLf
        Resultat = Resultat & "Total des mails analysés : " & Format(Nb_Total, "#,##0")
     
        MsgBox Resultat, vbInformation, "Compter le nombre de mails par nom de domaine"
     
    End Sub
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  18. #18
    Membre averti
    Homme Profil pro
    Rédacteur
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Par défaut
    Bonjour,

    Me revoilou...

    Alors, si l'idée est de mettre les 3 lignes de code en début de macro pour tenter de zapper les messages d'erreur, ça ne marche pas.

    Voici le message d'erreur :

    Nom : 11.jpg
Affichages : 18
Taille : 71,3 Ko

  19. #19
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 441
    Par défaut
    Hello,

    là y'a qqchose qui ne va pas.
    Jusqu'à maintenant cette instruction ne générait pas d'erreur et le message d'erreur indique qu'il y a un duplicata de cette instruction, donc le code que vous avez n'est pas le bon.
    Supprimez tout le code que vous avez dans "Module1" et coller celui du message #17 https://www.developpez.net/forums/d2.../#post12109792 en remplaçant
    Set Message = Dossier.Items.Item(i)
    par
    On Error Resume Next
    Set Message = Dossier.Items.Item(i)
    On Error GoTo 0

    Les instructions On Error Resume Next et On Error GoTo 0 ne sont la que pour zapper l'erreur qui va certainement se produire sur l'instruction Set Message = Dossier.Items.Item(i) lors de l'éxécution, l'erreur que vous indiquez se produit à la compilation du code, donc sans rapport
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  20. #20
    Membre averti
    Homme Profil pro
    Rédacteur
    Inscrit en
    Octobre 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 23
    Par défaut
    Re,

    Ca marche :
    Nom : 22.jpg
Affichages : 12
Taille : 26,3 Ko

    à ceci près :
    Nom : 33.jpg
Affichages : 11
Taille : 38,6 Ko
    Le nombre d'éléments ne correspond pas : 107 au lieu de 129.

    Sur les 129 éléments, 8 sont des réunions et il n'est donc pas anormal de les exclure, 2 sont des notifications (mail non remis, avertissement sur nos règles d'envoi de mail non respectées), 7 sont des "IntegrityChecker" générés par le serveur, mais après, je ne vois pas... 🤷

Discussions similaires

  1. [OL-2016] Compter le nombre de mail par catégorie uniquement
    Par yahmalek dans le forum Outlook
    Réponses: 7
    Dernier message: 19/01/2018, 10h55
  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