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 :

Lancer une macro à l'ouverture d'un mail [OL-2010]


Sujet :

VBA Outlook

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 37
    Points : 48
    Points
    48
    Par défaut Lancer une macro à l'ouverture d'un mail
    Bonjour à tous,

    Comment lancer une macro lors de l'ouverture d'un mail ?

    Quel est l'évènement qui se déclenche lorsque l'on ouvre un mail ?

    Dans ThisOutlookSession on a :

    Application_ItemSend, Application_ItemLoad, Application_NewMail, .....

    ou alors

    WVG_MailItem_Open, WVG_MailItem_Read, ...

    mais pas moyen de trouver le bon évènement qui lancerait ma macro

    Et voilà encore un mystère d'Oulook !

    @ +++ Kris

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,
    C'est un peu plus complexe.

    à mette dans ThisOutlookSession
    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
     
    Public WithEvents AM As MailItem
     
    Private Sub Application_ItemLoad(ByVal Item As Object)
    'se déclenche à la selection du mail
    ' Vérifis que le formulaire est bien celui d'un MAIL
        If Item.Class <> olMail Then Exit Sub
        Set AM = Item
    End Sub
     
     
    Private Sub AM_Open(Cancel As Boolean)
    ' se déclenche à l'ouverture du Mail
     MsgBox "Ouverture de " & AM.subject
    End Sub

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 37
    Points : 48
    Points
    48
    Par défaut
    Salut Oliv_

    Nickel, ça marche !

    Super, 1000 fois merci, j'ai pas mal cherché mais en vain.

    Bonne journée

    @ +++ Kris

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Points : 8
    Points
    8
    Par défaut ItemLoad fait planter Outlook
    Bonjour à tous et toutes,

    Je suis nouveau sur le forum mais, j'y ai déjà lu des discussions sur de nombreux sujets => Un grand merci à la communauté pour l'aide que j'y ai trouvé.

    D'habitude j'arrive à me débrouiller en adaptant les solutions à mon cas particulier mais, là je bloque depuis quelques jours sans réussir à solutionner mon problème.

    J'utilise le code d'Olivier (merci beaucoup à lui !) pour attribuer automatiquement une catégorie aux mails ouverts en fonction de l'utilisateur connecté.
    En soi le code fonctionne bien mais, dans certains cas il "plante", cad que le code n'est plus pris en compte, la catégorie n'est pas attribuée au mail ouvert (mais, je n'ai pas de message d'erreur). A ce moment la si je vais dans l'éditeur VBA, la macro est en cours de fonctionnement (symbole "play" vert grisé) et si je la stop alors cela fait planter Outlook (il se ferme puis, redémarre).

    J'ai remarqué que ce bug se produit lorsque j'effectue une recherche dans Outlook : le code fonctionne bien (la catégorie est attribuée à chaque mail ouvert) > j'effectue une recherche dans Outlook > le code ne s’exécute plus > je stoppe la macro > Outlook plante et redémarre

    Dans l'observateur d’événements Windows j'obtiens l'erreur suivante :
    Erreur lors de l’exécution de complément. Outlook s’est arrêté pendant le rappel «*ItemLoad*» de l’interface «*ApplicationEvents_11*» tout en appelant le complément «*Microsoft VBA for Outlook Addin*».

    Voici le code :
    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
    Public WithEvents VBASAV As MailItem
     
     
    Private Sub Application_ItemLoad(ByVal Item As Object)
    'se déclenche à la selection du mail
     
        If Item.Class <> olMail Then Exit Sub
        ' Vérifier que le formulaire est bien celui d'un MAIL
     
        Set VBASAV = Item
     
    End Sub
     
     
     
    Private Sub VBASAV_Open(Cancel As Boolean)
    ' se déclenche à l'ouverture du Mail
     
     
        'vérifier l'utilisateur et ajouter une catégorie à celles déjà existantes en fonction de l'utilisateur
         If Environ("UserName") = "utilisateur" And InStr(VBASAV.Categories, "macategorie") = 0 Then
            VBASAV.Categories = (VBASAV.Categories & "," & "macategorie")
     
         ElseIf Environ("UserName") = "utilisateur" And InStr(VBASAV.Categories, "macategorie") = 1 Then
        VBASAV.Categories = (VBASAV.Categories)
     
        End If
     
        VBASAV.Save
     
     
     
    End Sub
    J'espère avoir été clair et je vous remerci par avance pour votre aide

    ps : si ce code intéresse quelqu'un je suis disposé à échanger pour vous aider à l'adapter chez vous !

  5. #5
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    C'est assez étrange que cela fasse planter OUTLOOK, il faut peut être réparer l'installation de office.

    Lorsque le macro est en cours dans VBE c'est noté "VBPAPROEJCT.otm [en cours d'execution]" dans le titre de la fenêtre.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Points : 8
    Points
    8
    Par défaut ItemLoad fait planter Outlook
    Bonjour -Oliv,

    Merci pour ta réponse !
    En effet, j'ai bien le message en cours d’exécution qui reste à partir du moment ou je lance une recherche dans Outlook.
    Nom : Capture.PNG
Affichages : 987
Taille : 91,0 Ko

    Je ne pense pas que le souci soit une mauvaise installation d'Office car nous avons le même soucis sur 4 postes différents... As tu essayé le code ? fait il planter ton Outlook également ? Si, non c'est vraiment étrange en effet..


    Bonne journée !

    Adelin

  7. #7
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Je n'ai pas ce problème en faisant une recherche avec ton code, le code ne se déclenche que lorsque s'affiche le premier résultat.

    Quelle version de Outlook utilises tu ?

    Est ce que les recherches sont indéxées ?

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Points : 8
    Points
    8
    Par défaut ItemLoad fait planter Outlook
    Re Bonjour,

    Pour info, je teste actuellement en ayant ajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Unload()
     
     Dim myItem As Object
     
     Set myItem = MailItem.Unload
     
    End Sub
    afin de "libérer" l'item lorsque je fais une recherche.


    Ce qui donne en entier :

    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
    Public WithEvents myomail As Outlook.MailItem
     
    Private Sub Application_ItemLoad(ByVal olMailItem As Object)
    'se déclenche à la selection du mail
     
        If olMailItem.Class <> olMail Then Exit Sub
        ' Vérifier que le formulaire est bien celui d'un MAIL
     
        Set myomail = olMailItem
     
     
    End Sub
     
     
     
    Sub Unload()
     
     Dim myItem As Object
     
     
     
     Set myItem = MailItem.Unload
     
     
    End Sub
     
    Private Sub myomail_Open(Cancel As Boolean)
    ' se déclenche à l'ouverture du Mail
     
     
        'vérifier l'utilisateur et ajouter une catégorie à celles déjà existantes en fonction de l'utilisateur
         If Environ("UserName") = "UARA0018" And InStr(myomail.Categories, "Adelin") = 0 Then
            myomail.Categories = (myomail.Categories & "," & "Adelin")
     
         ElseIf Environ("UserName") = "UARA0018" And InStr(myomail.Categories, "Adelin") = 1 Then
        myomail.Categories = (myomail.Categories)
     
        End If
     
        myomail.Save
     
     
     
    End Sub

    Pour l'instant cela a l'air de résoudre le problème. Je donnerai une confirmation si cela continu à bien fonctionner sur plusieurs postes/ jours.

    Merci

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Points : 8
    Points
    8
    Par défaut ItemLoad fait planter Outlook
    La solution précédemment mentionnée ne résout pas le problème à terme. Bizarrement le bug ne se produit plus à chaque recherche.. mais, finit toujours par se produire et faire planter Outlook.

    Je reviendrai dès que plus d'infos !

    Bonne journée à toutes et tous

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Points : 8
    Points
    8
    Par défaut ItemLoad fait planter Outlook
    Merci pour ta réponse -Oliv, j'utilise Outlook 2016. Mais, étant donné que tu n'avais pas l'erreur de ton côté j'ai fait des tests avec des compatibilités différentes (XP, Vista...) et j'ai obtenu de nouvelles informations sur le problème, à savoir une erreur app crash (c0000005) ou BEX.

    C'est une erreur liée au droits d'accès au serveur et à leur violation.

    Mon hypothèse est donc que lors de la recherche j'accède au serveur et comme une dll cherche à s’exécuter cela est vu comme un risque sécurité et entraîne la fermeture forcée de Outlook par sécurité.
    Je vais contacter les administrateurs réseau et voir si c'est bien lié à ça. Je vous tiendrai informés de l'avancée du problème et de la solution à appliquer si je la trouve.

    Merci encore.

    Adelin

  11. #11
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Est ce que le code publié est le seul code présent dans le VBAPROJECT ?

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Points : 8
    Points
    8
    Par défaut ItemLoad fait planter Outlook
    Oui c'est bien le seul code exécuté. Et, c'est assez difficile de comprendre d'ou le bug provient. Parfois, je peux faire des recherches sans que cela fasse crasher Outlook d'autres fois ça le plante direct. J'ai l'impression que de changer de vue (passer du mail au calendrier ou aux tâches) dans Outlook puis, faire une recherche fait planter le code à chaque fois alors que si je fais des recherches sans jamais sortir de l'onglet mail ça ne bug pas forcement... mais, pourquoi??

    En attendant, je potasse le problème d'autorisations lié à DCOM qui entraîne une erreur BEX / APPCRASH.
    Si c'est bien cela qui est en cause, le code lui même ne serait pas en cause (Oliv ton code était très bien dès le début donc ).

    Le problème est remonté à notre service informatique, je vous ferai part des avancées.

    Merci,

    Adelin

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Points : 8
    Points
    8
    Par défaut ItemLoad fait planter Outlook
    Bon pour info, le bug vient bien d'un problème d'autorisations lié à DCOM.

    Le problème ne vient donc pas du code.

    Bonne journée

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

Discussions similaires

  1. [AC-2010] Lancer une macro à l'ouverture
    Par tintinux dans le forum VBA Access
    Réponses: 9
    Dernier message: 03/09/2015, 14h24
  2. [XL-2003] Lancer une macro à l'ouverture d'Excel quel que soit le fichier
    Par EtyenH dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/05/2009, 08h50
  3. Lancer une macro à l'ouverture d'un fichier word
    Par beegees dans le forum VBA Word
    Réponses: 5
    Dernier message: 15/09/2008, 10h16
  4. lancer une macro à l'ouverture d'un classeur
    Par niro75 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/02/2008, 22h09
  5. Lancer une macro à l'ouverture d'un fichier
    Par Tibaldus dans le forum VBA Word
    Réponses: 2
    Dernier message: 12/09/2007, 11h27

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