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

Résolu
Amlie -  
 Amlie -
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
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
Amlie
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
moi j'essaierias:
dim tousmails as items
set tousmails = Dossier.items
Set MyItems = tousmails.Restrict("la condition")
msgbox MyItems.count
0
Amlie
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
tu progresses!
et ceci?
Set MyItems = TousMails.Restrict( " [ReceivedTime] >= ' 1/12/2020 ' " )
0
Amlie > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bonjour, cela fonctionne !
Merci beaucoup :)
0