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

VBA Outlook Discussion :

Alerte sur nouveau mail + Ouverture du mail + Comptage des non lu dans le dossier. [OL-2007]


Sujet :

VBA Outlook

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Alerte sur nouveau mail + Ouverture du mail + Comptage des non lu dans le dossier.
    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 :
    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
    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
    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
    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.
    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.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 15
    Points : 6
    Points
    6
    Par défaut La solution
    Bonjour,

    Ca y est j'ai trouvé. Il y avait une erreur de syntaxe dans mon code. Une petite sieste et ca repart. Bon comme j'ai posté un appel sur le forum, je poste aussi la solution :
    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
     
    Private WithEvents ItemsCritical 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)
        Dim ObApp As Outlook.Application
        Dim ObNS As Outlook.NameSpace
        Dim obfolder As Outlook.Folder
        Dim olitem As Object
        Dim msg As MailItem
        Dim i_Result As Integer
        On Error GoTo ErrorHandler
        Set ObApp = Outlook.Application
        Set ObNS = ObApp.GetNamespace("MAPI")
        Set obfolder = ObNS.Folders("Boîte aux lettres - Info Dev").Folders("Armoire").Folders("1 Exploi Bloquante")
        nbUnread = 0
     
     
        For Each olitem In obfolder.Items
          DoEvents
          If (olitem.Class = olMail) And (olitem.UnRead) Then
            nbUnread = nbUnread + 1
            If nbUnread = 1 Then
              Set msg = item
            End If
          End If
        Next
        If MsgBox("Un nouveau message d'exploit Bloquante!!!" + vbCrLf + _
        "Sujet : " + item + vbCrLf + _
        "Il reste " + Str(nbUnread) + " message(s) non lu(s)" + vbCrLf + vbCrLf + _
        "Desirez vous ouvrir ce message ?" _
        , vbMsgBoxSetForeground + vbCritical + vbYesNo, _
        "Alerte !") = vbYes Then
          msg.Display
        End If
     
    ProgramExit:
        Exit Sub
    ErrorHandler:
        MsgBox Err.Number & " - " & Err.Description
        Resume ProgramExit
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Envoi d'une alerte sur boite mail outlook en cas de dépassement de délais
    Par yannick59190 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/04/2018, 12h11
  2. Réponses: 0
    Dernier message: 23/02/2013, 15h38
  3. [OL-2010] évènement sur ouverture de mail
    Par bewidia dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 21/12/2011, 10h40
  4. [OL-2003] Envois alerte sur une autre boite mail
    Par inter-rupteur dans le forum VBA Outlook
    Réponses: 7
    Dernier message: 11/06/2009, 20h11
  5. [Access 2003] Message d'alerte sur envoi de mail
    Par L.Lemarchand dans le forum VBA Access
    Réponses: 8
    Dernier message: 02/09/2008, 14h48

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