Macro VBA compter mail arrivés dans mois dans dossier spécificique

Résolu/Fermé
Amlie - Modifié le 4 févr. 2021 à 12:29
 Amlie - 5 févr. 2021 à 08:22
Bonjour à tous,

Je me permets de vous écrire afin de trouver un solution à mon blocage.

Afin d'éviter de compter manuellement le nombre de mail reçu dans le mois dans un sous dossier spécifique de ma boite de reception, je souhaite l'automatiser dans une macro.

J'ai réussi à créer une macro qui compte le nombre de mail dans le dossier spécifique. C'est le critère reçu entre 01/12/2020 et 31/12/2020 qui tombe en erreur.

<code>
Dim ns As NameSpace
Dim Inbox As MAPIFolder
Dim NewInbox As MAPIFolder
Dim Item As Object
Dim FileName As String
Dim DossierConteneur As Outlook.MAPIFolder
Dim MaBoite As Store
Dim Dossier As Folder
Dim Dossier2 As Folder
Dim MyItemsSet ns = GetNamespace("MAPI")
Set MaBoite = ns.Stores("Cessions Auto")

Set Dossier = MaBoite.GetDefaultFolder(olFolderInbox).Folders("Correspondance épave")
MsgBox Dossier.Name & " " & Dossier.Items.Count

Set Dossier = MaBoite.GetDefaultFolder(olFolderInbox).Folders("Correspondance épave")
Set MyItems = Dossier.MailItems("[ReceivedTime] >= '" & Format("01/12/2020", "ddmmyyyy") & "'" & "' and < '" & Format("31/12/2020") & "'")
MsgBox Dossier.Name & " " & Dossier.MyItems.Count
<code basic>

Je vous remercie de votre aide.

Amélie
A voir également:

3 réponses

yg_be Messages postés 23323 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 14 novembre 2024 Ambassadeur 1 549
4 févr. 2021 à 13:44
bonjour,
peux-tu utiliser les balises de code quand tu partages du code?
"qui tombe en erreur": que se passe-t-il exactement?
0
yg_be Messages postés 23323 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 14 novembre 2024 1 549
4 févr. 2021 à 14:08
tu as, au minimum, une erreur.
tu ne peux pas écrire
a >= b and < c

il faut écrire
a >= b and  a < c


ensuite, je suis sceptique quand je vois quelque chose comme
[ReceivedTime] >= '01122020'

j'essaierais plutôt:
ReceivedTime >= dateserial(2020,12,1) and ReceivedTime <= dateserial(2020,12,31)

ou bien, si tu préfères:
format(ReceivedTime , "yyyymmdd") >= 20201201 
    and format(ReceivedTime , "yyyymmdd") <= 20201231
0
Amlie > yg_be Messages postés 23323 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 14 novembre 2024
4 févr. 2021 à 14:32
Je ne sais pas si je l'écris correctement ... ça me met Variable non définie..
 Set MyItems = Dossier.MailItems(ReceivedTime >= DateSerial(2020, 12, 1) And ReceivedTime <= DateSerial(2020, 12, 31)) 
0
Bonjour,

J'ai un message d'erreur "Erreur d'execution '438' : Propriété ou Methode non gérée par cet objet" qui apparait et souligne ma ligne Set MyItems en jaune.
0
yg_be Messages postés 23323 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 14 novembre 2024 1 549
4 févr. 2021 à 14:49
moi j'essaierias:
dim tousmails as items
set tousmails = Dossier.items
Set MyItems = tousmails.Restrict("la condition")
msgbox MyItems.count
0
J'obtiens une erreur d'exécution, "condition non valide".
Je pense que je ne l'ai pas écrite correctement.
Set MyItems = TousMails.Restrict([ReceivedTime] >= DateSerial(2020, 12, 1) And [ReceivedTime] <= DateSerial(2020, 12, 31))
0
yg_be Messages postés 23323 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 14 novembre 2024 1 549
4 févr. 2021 à 16:55
tu progresses!
et ceci?
Set MyItems = TousMails.Restrict( " [ReceivedTime] >= ' 1/12/2020 ' " )
0
Amlie > yg_be Messages postés 23323 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 14 novembre 2024
5 févr. 2021 à 08:22
Bonjour, cela fonctionne !
Merci beaucoup :)
0