1. #1
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    janvier 2003
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : janvier 2003
    Messages : 77
    Points : 66
    Points
    66

    Par défaut Macro à la réception de message

    Bonjour,
    Je suis sous Outlook 2016 et Exchange.

    Après plusieurs recherches de code (à modifier) à la réception d'un nouveau message je suis tombé sur ces 2 codes ci-dessous que j'aimerais modifié à ma convenance.

    Voici ce que je veux réaliser sur les mails reçus : 2 actions sur les mails reçu :
    - Mettre une catégorie (couleur) : mail à lire
    - Renseigner un champ société en fonction du domaine du mail de l’expéditeur. (mais avec des exceptions aussi)

    exemple : j.calfert@carac.fr ==> société = carac

    si j.calfert@orange.fr ==> soit :

    - dans le programme je fait des exception en disant : j.calfert@orange.fr donne société = carac (Ca je sais faire)
    - la société est lu dans le champ société si le contact est enregistré dans ma base contact local d'Outlook (Ca je ne sais pas faire)
    - j'utilise une table SQL ou un fichier type "texte, Excel, Access, etc..." (Ca je ne sais pas faire)

    Pour commencer j'ai tester deux procédure de Morgan BILLY à l'adresse : http://dolphy35.developpez.com/article/outlook/vba/ (et la je bloque)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Application_NewMail1()
        MsgBox "Vous venez de recevoir un nouveau Mail !", vbExclamation
    End Sub
    et

    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
    Private Sub Application_NewMailEx2(ByVal EntryIDCollection As String)
    '---------------------------------------------------------------------------------------
    ' Procédure : Application_NewMailEx
    ' Auteur    : Dolphy35
    ' Site      : http://dolphy35.developpez.com
    ' Détail    : Permet de déplacer le nouveau message si celui-ci est envoyé par un expéditeur précis
    '---------------------------------------------------------------------------------------
    '
        'Déclarations
        Dim MonApp As Outlook.Application
        Dim MonMail As Object
        Dim MonNameSpace As Outlook.NameSpace
        Dim MonDossier As Outlook.Folder
     
        'Instance des objets
        Set MonApp = Outlook.Application
        Set MonNameSpace = MonApp.GetNamespace("MAPI")
        Set MonDossier = MonNameSpace.GetDefaultFolder(olFolderInbox)
        Set MonMail = Application.Session.GetItemFromID(EntryIDCollection)
     
            'Test si l'expéditeur correspond dans ce cas on déplace le mail
            'vers le dossier Temp de votre boîte de réception
            If MonMail.SenderEmailAddress = "toto@orange.fr" Then
                'MonMail.Move MonDossier.Folders("Temp")
                MsgBox "Vous venez de recevoir un nouveau Mail !", vbExclamation
            End If
    End Sub
    C'est 2 procédure ne font rien. Je l'ai copié dans ThisOulookSession et ensuite j'ai créé un module ou je les ai déplacé. Et toujours rien.
    Je ne comprend pas toujours bien la logique VBAOutlook.

    Qui peux m'aider. merci.

    Cordialement D. TELLIER

  2. #2
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    2 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 2 942
    Points : 5 132
    Points
    5 132
    Billets dans le blog
    13

    Par défaut

    SAlut,

    Ces procédures utilisent des "événements" leur nom est imposé

    tu ne peux avoir Application_NewMailex2 tu dois avoir Application_NewMailEx

    qui plus est avec les bon arguments

    Sub Application_NewMailEx(ByVal EntryIDCollection As String)

    Ennd sub

  3. #3
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    2 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 2 942
    Points : 5 132
    Points
    5 132
    Billets dans le blog
    13

    Par défaut

    Pour ton champ société ton code devrait ressembler à cela

    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
        Dim oExp As Outlook.AddressEntry
        Dim oExpContact As Outlook.ContactItem
        Dim oExUser As Outlook.ExchangeUser
        Dim Ste As String, temp
     
        Ste = ""
        Set oExp = oItem.Sender
        Set oExpContact = oExp.GetContact
        If Not oExpContact Is Nothing Then
            Ste = oExpContact.CompanyName
        Else
            Set oExUser = oExp.GetExchangeUser
            If Not oExUser Is Nothing Then
            Ste = oExUser.CompanyName
            End If
        End If
        If Ste = "" Then
        temp = Split(oItem.Sender.Address, "@")(1)
            Ste = StrReverse(Split(StrReverse(temp), ".", -1)(1))
     
        End If
        MsgBox Ste

  4. #4
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    janvier 2003
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : janvier 2003
    Messages : 77
    Points : 66
    Points
    66

    Par défaut

    Bonjour,
    Désolé j'avais bien mis

    Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)

    et rien ne se passe je n'ai pas de fenêtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    MsgBox "Vous venez de recevoir un nouveau Mail !", vbExclamation
    qui s'affiche quand je reçois un message.

    A+

  5. #5
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    2 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 2 942
    Points : 5 132
    Points
    5 132
    Billets dans le blog
    13

    Par défaut

    BONJOUR,

    Il faut vérifier les paramètres de sécurité des macros.

Discussions similaires

  1. Réponses: 22
    Dernier message: 23/03/2007, 15h48
  2. réception des messages dans un chat en tcp
    Par je®ome dans le forum Réseau
    Réponses: 9
    Dernier message: 25/04/2006, 17h48
  3. Réponses: 5
    Dernier message: 12/03/2006, 19h40
  4. Réponses: 3
    Dernier message: 13/09/2005, 18h41
  5. réception des messages WM_PAINT
    Par enzoMetz dans le forum Windows
    Réponses: 2
    Dernier message: 19/06/2004, 20h15

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