Bonjour à Tous,
Je dois réaliser un VBA dans outlook 2007.
Le principe est que lorsqu'un mail arrive dans un dossier défini (un dossier de retour bloquant par exemple) une alerte s'affiche sur mon écran. L'alerte m'informe du titre du mail arrivé (me permetant de savoir si le mail me concerne ou pas). De plus j'aimerai que l'alerte me demande si je veux ouvrir le mail ou pas, et me donne le nombre de mail non lu dans le dit dossier.
Pour le moment je suis arrivé à afficher l'alerte. Faire le test oui/non ne me pose pas de problème.
Mes problèmes commencent quand je veux compter les non lu du dossier et afficher le mail. Quelque soit la méthode utilisée, j'ai une erreur "424 - Objet requis". Dans mon dernier essai j'ai même recréé les objets dans ma procédure qui me permet d'afficher l'alerte, mais rien n'y fait.
Donc si une ame charitable pouvait me mettre sur la voie, ca serait super sympa.
Voici mon code actuel qui fonctionne :
Et mon dernier essai qui ne fonctionne pas :
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 Private WithEvents ItemsCritical As Outlook.Items Private WithEvents ItemsWarning As Outlook.Items Private WithEvents ItemsNormal As Outlook.Items Private Sub Application_Startup() Dim olApp As Outlook.Application Dim objNS As Outlook.NameSpace Set olApp = Outlook.Application Set objNS = olApp.GetNamespace("MAPI") ' \\Boîte aux lettre - Info Dev\Armoire\1 Exploi Bloquante\ Set ItemsCritical = objNS.Folders("Boîte aux lettres - Info Dev").Folders("Armoire").Folders("1 Exploi Bloquante").Items End Sub Private Sub ItemsCritical_ItemAdd(ByVal item As Object) On Error GoTo ErrorHandler MsgBox "Un nouveau message d'exploit Bloquante!!!" + vbCrLf + item _ , vbMsgBoxSetForeground + vbCritical + vbOKOnly, _ "Alerte !" ProgramExit: Exit Sub ErrorHandler: MsgBox Err.Number & " - " & Err.Description Resume ProgramExit End Sub
Je pense que je ne suis pas loin, mais je ne dois pas avoir le cerveau à l'endroit et je bloque, d'ou mon appel au secours.
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 Private WithEvents ItemsCritical As Outlook.Items Private WithEvents ItemsWarning As Outlook.Items Private WithEvents ItemsNormal As Outlook.Items Private Sub Application_Startup() Dim olApp As Outlook.Application Dim objNS As Outlook.NameSpace ' Dim CurrentExplorer As Explorer ' Dim CurrentMail As Outlook.MailItem Set olApp = Outlook.Application Set objNS = olApp.GetNamespace("MAPI") ' Set CurrentExplorer = olApp.ActiveExplorer ' \\Boîte aux lettre - Info Dev\Armoire\1 Exploi Bloquante\ Set ItemsCritical = objNS.Folders("Boîte aux lettres - Info Dev").Folders("Armoire").Folders("1 Exploi Bloquante").Items End Sub Private Sub ItemsCritical_ItemAdd(ByVal item As Object) Dim ObApp As Outlook.Application Dim ObNS As Outlook.NameSpace Dim obfolder As Outlook.Folder Dim olitem As Object Dim msg As MailItem On Error GoTo ErrorHandler Set ObApp = Outlook.Application Set ObNS = ObApp.GetNamespace("MAPI") Set obfolder = objNS.GetFolder("\\Boîte aux lettres - Info Dev\Armoire\1 Exploi Bloquante") nbUnread = 0 For Each olitem In obfolder.Items DoEvents If (olitem.Class = olMail) And (olitem.UnRead) Then nbUnread = nbUnread + 1 'Set msg = item 'msg.Display True End If Next MsgBox "Un nouveau message d'exploit Bloquante!!!" + vbCrLf + item _ , vbMsgBoxSetForeground + vbCritical + vbOKOnly, _ "Alerte !" MsgBox ("Non lu : " + Str(nbUnread)) ProgramExit: Exit Sub ErrorHandler: MsgBox Err.Number & " - " & Err.Description Resume ProgramExit End Sub
Pour le moment j'ai enlevé le choix vbYesNo de ma première msgbox, voulant être sur d'avoir toutes les infos correctes avant de finaliser.
A tous ceux qui participeront un immense merci par avance.
Partager