Shared Mailbox Macro

Résolu
thefloflo64 Messages postés 663 Date d'inscription   Statut Membre Dernière intervention   -  
thefloflo64 Messages postés 663 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche actuellement a exécuter une macro sur une boite mail partagée.
Actuellement ma macro ressemble à cela :

Private WithEvents myOlItems  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")
Set myOlItems = objNS.GetDefaultFolder(olFolderInbox).Items
End Sub

Private Sub myOlItems_ItemAdd(ByVal item As Object)

On Error GoTo ErrorHandler

Dim Msg As Outlook.MailItem

If TypeName(item) = "MailItem" Then
Set Msg = item
If Msg.Subject = "Subject Content" Then
MsgBox Msg.Subject
MsgBox Msg.Body
End If
End If

ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub


Elle permet de vérifier dès la réception d'un mail si celui-ci contient tel sujet et si c'est le cas affiche une popup.
Mais elle ne s'exécute uniquement sur la boite mail par défaut et je ne peux pas définir la boite mail partagée comme boite par défaut (au cas où il y aurait la question :) ).

Est-ce que quelqu'un aurait une idée ?

Cordialement,
Florian

2 réponses

  1. thev Messages postés 2007 Date d'inscription   Statut Membre Dernière intervention   722
     
    Bonjour,

    La procédure correspondant à la gestion de l'événement de réception du mail ne figure pas dans ton code
    "Private Sub myOlItems_ItemAdd(ByVal item As Object)"


    Private WithEvents myOlItems As Outlook.Items
    Private Sub Application_Startup()

    Dim olApp As Outlook.Application
    Dim Comptes_messagerie()
    Dim Dossier As Outlook.MAPIFolder

    'définition application
    Set olApp = Outlook.Application
    'définition Comptes de messagerie
    Comptes_messagerie = Array("NAME")
    'balayage Dossiers Outlook
    For Each Dossier In olApp.GetNamespace("MAPI").Folders
    If UBound(Filter(Comptes_messagerie, Dossier.Name)) > -1 Then
    'assignation évenements de la boîte de réception du Compte de messagerie
    Set myOlItems = Dossier.Folders("Boîte de réception").Items
    Next Dossier

    End Sub

    Private Sub myOlItems_ItemAdd(ByVal item As Object)

    On Error GoTo ErrorHandler

    Dim Msg As Outlook.MailItem

    If TypeName(item) = "MailItem" Then
    Set Msg = item
    If Msg.Subject = "Subject Content" Then
    MsgBox Msg.Subject
    MsgBox Msg.Body
    End If
    End If

    ProgramExit:
    Exit Sub
    ErrorHandler:
    MsgBox Err.Number & " - " & Err.Description
    Resume ProgramExit
    End Sub

    --
     
    1
    1. thefloflo64 Messages postés 663 Date d'inscription   Statut Membre Dernière intervention   96
       
      Bonjour,

      Ha c'est juste PARFAIT :)
      Merci de ton aide


      Cordialement,
      Florian
      0
  2. thev Messages postés 2007 Date d'inscription   Statut Membre Dernière intervention   722
     
    Bonjour,

    Essayer ce code avec l'hypothèse que la boîte de réception de votre compte partagé s'appelle "Boîte de Réception" (éventuellement à remplacer par "Inbox" )

    Private WithEvents myOlItems As Outlook.Items
    Private Sub Application_Startup()

    Dim olApp As Outlook.Application
    Dim Comptes_messagerie()
    Dim Dossier As Outlook.MAPIFolder

    'définition application
    Set olApp = Outlook.Application
    'définition Comptes de messagerie
    Comptes_messagerie = Array("votre compte partagé")
    'balayage Dossiers Outlook
    For Each Dossier In olApp.GetNamespace("MAPI").Folders
    If UBound(Filter(Comptes_messagerie, Dossier.Name)) > -1 Then
    'assignation évenements de la boîte de réception du Compte de messagerie
    Set myOlItems = Dossier.Folders("Boîte de réception").Items
    End If
    Next Dossier

    End Sub

    --
     
    0
    1. thefloflo64 Messages postés 663 Date d'inscription   Statut Membre Dernière intervention   96
       
      Bonjour,

      Tout d'abord merci de ta réponse.
      Voici donc mes retours :)

      La macro ne fonctionne pas sur la boite mail partagée.
      J'ai appliqué le code suivant :

      Private WithEvents myOlItems  As Outlook.Items
      Private Sub Application_Startup()

      Dim olApp As Outlook.Application
      Dim Comptes_messagerie()
      Dim Dossier As Outlook.MAPIFolder

      'définition application
      Set olApp = Outlook.Application
      'définition Comptes de messagerie
      Comptes_messagerie = Array("NAME")
      'balayage Dossiers Outlook
      For Each Dossier In olApp.GetNamespace("MAPI").Folders
      If UBound(Filter(Comptes_messagerie, Dossier.Name)) > -1 Then
      'assignation évenements de la boîte de réception du Compte de messagerie
      Set myOlItems = Dossier.Folders("Boîte de réception").Items

      Dim Msg As Outlook.MailItem

      If TypeName(item) = "MailItem" Then
      Set Msg = item
      If Msg.Subject = "Subject Content" Then
      MsgBox Msg.Subject
      MsgBox Msg.Body
      End If
      End If

      End If
      Next Dossier

      End Sub


      Basé donc sur celui que tu m'avais proposé en rajoutant la popup.
      Néanmoins je n'ai aucun retour dans le cas de la réception d'un mail.
      J'ai tenté de changer le nom de la boite mail partagé en rajoutant le "@test.com".
      Sans résultat.

      As-tu une nouvelle idée ?


      Cordialement,
      Florian
      0