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

Macros et VBA Excel Discussion :

Adaptation code interaction avec mail outlook à partir d'EXCEL


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Adaptation code interaction avec mail outlook à partir d'EXCEL
    Bonjour,

    J'ai le code suivant qui marche parfaitement à partir d'Outlook pour interagir avec un email ouvert (ajout de destinataire) :

    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
    Sub Test()
    Dim Item As outlook.MailItem
    Dim oInspector As Inspector
    Set oInspector = Application.ActiveInspector
     
    If oInspector Is Nothing Then
        Set Item = Application.ActiveExplorer.Selection.Item(1)
        Item.Display   'Force the po-up
        Set oInspector = Application.ActiveInspector  'Reassign oInpsector and Item again
        Set Item = oInspector.CurrentItem
    Else
       Set Item = oInspector.CurrentItem
       Item.To = "test@mail.com"
    End If
    End Sub


    Je ne vois pas en revanche comment le faire fonctionner à partir d'excel, pour qu'il puisse interragir mon mail ouvert dans Outlook.
    Malgré la création de l'objet Outlook, le debug pointe toujours sur "Dim Item As outlook.MailItem".
    Ai-je une déclaration supplémentaire à faire?

    Merci d'avance

  2. #2
    Expert éminent
    Bonjour (ou plutôt Bonne Nuit ) addams et bienvenu sur le Forum,

    Tu peux t'inspirer, je pense, du code proposé dans ce modeste billet

    Bien Cordialement.

    Marcel

    Envoi d'un bloc de messageries Outlook utilisant des paramètres variables


    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.



  3. #3
    Nouveau Candidat au Club
    Bonjour MarcelG et merci

    Ta page est très intéressante et m'aidera avec la suite du projet.

    Par contre je ne vois pas comment intéragir entre excel et mon mail ouvert dans Outlook.

    J'ai essayé d'ajouter au code :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    Dim objOL As Object
    Set objOL = CreateObject("Outlook.Application")


    mais ça bloque toujours sur :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Dim Item As Outlook.MailItem


    C'est problablement quelque chose de bête, mais je vous avoue ne pas trouver (faut dire que je démarre aussi et l'adaptation de bout de code ne me réussie 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
    Sub Test()
    Dim objOL As Object
    Set objOL = CreateObject("Outlook.Application")
     
    Dim Item As Outlook.MailItem
    Dim oInspector As Inspector
    Set oInspector = Application.ActiveInspector
     
    If oInspector Is Nothing Then
        Set Item = Application.ActiveExplorer.Selection.Item(1)
        Item.Display   'Force the po-up
        Set oInspector = Application.ActiveInspector  'Reassign oInpsector and Item again
        Set Item = oInspector.CurrentItem
    Else
       Set Item = oInspector.CurrentItem
       Item.To = "test@mail.com"
    End If
    End Sub

  4. #4
    Expert éminent
    Bonjour,

    il faut travailler avec l'application Outlook matérialisée par l'objet objOL, au lieu de "Application" (qui dans Excel signifie "l'application Excel")
    et ne pas nommer les objets du modèle objet Outlook, mais sur des objets "objets"

    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
    Sub Test()
    Dim objOL As Object
    Dim Item As Object
    Dim oInspector As Object
    Set objOL = CreateObject("Outlook.Application")
    Set oInspector = objOL.ActiveInspector
        If oInspector Is Nothing Then
            Set Item = objOL.ActiveExplorer.Selection.Item(1)
            Item.Display   'Force the po-up
            Set oInspector = objOL.ActiveInspector  'Reassign oInpsector and Item again
            Set Item = oInspector.CurrentItem
        Else
           Set Item = oInspector.CurrentItem
           Item.To = "test@mail.com"
        End If
    End Sub

  5. #5
    Nouveau Candidat au Club
    ça marche!

    Merci Joe.

    je comprends mieux l'interaction entre les deux programmes

    ça pourrait également marcher à l'inverse ?

    L'exemple donné, lance la macro à partir d'Excel. Mais le plus pratique pour moi serait de le faire à l'inverse, càd , déclencher directement à partir de l'email outlook, l'userform dans excel et de rapatrier les emails dans le champs destinataire.