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 |
Partager