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

Macros et VBA Excel Discussion :

Objet MailItem -> récupérer l'adresse du destinataire [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Par défaut Objet MailItem -> récupérer l'adresse du destinataire
    Bonjour,
    Voici mon problème : j'ai une fonction qui me permet de automatiquement vérifier si a un identifiant correspond une adresse mail. Cette fonction va ensuite afficher le Display name dans un champs. Cependant, je voudrais afficher l'adresse complète à la place.

    Voici la fonction en question :
    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
     
    Sub checkEmail()
     
        Dim appOutLook As Object
        Dim olContactItem, olMailItem
        Dim myItem, oEmail
     
        Set appOutLook = CreateObject("Outlook.Application")
        Set oEmail = appOutLook.CreateItem(olMailItem)
     
        oEmail.To = Dlg.Txt_Email.Value
        If (oEmail.Recipients.ResolveAll) Then
            Dlg.Txt_Email = oEmail.To
            Dlg.CheckEmailButton.Caption = "check OK"
            Dlg.CheckEmailButton.ForeColor = &HC000&
        Else
            oEmail.To = Dlg.Liste_login.Value
            If (oEmail.Recipients.ResolveAll) Then
                Dlg.Txt_Email = oEmail.To
                Dlg.CheckEmailButton.Caption = "check OK"
                Dlg.CheckEmailButton.ForeColor = &HC000&
            Else
                oEmail.To = Dlg.Txt_Nom & ", " & Dlg.Txt_Prenom
                If (oEmail.Recipients.ResolveAll) Then
                    Dlg.Txt_Email = oEmail.To
                    Dlg.CheckEmailButton.Caption = "check OK"
                    Dlg.CheckEmailButton.ForeColor = &HC000&
                Else
                    Dlg.CheckEmailButton.Caption = "check KO"
                    Dlg.CheckEmailButton.ForeColor = &HFF&
                End If
            End If
        End If
     
    End Sub
    La ligne qui m'intéresse est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dlg.Txt_Email = oEmail.To
    C'est celle la qui va chercher le display name de l'objet Outlook pour remplir le champ Dlg.
    J'ai lu pas mal de doc, et j'ai essayé quelque chose dans le style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dlg.Txt_Email = oEmail.Recipients(1).Address
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dlg.Txt_Email = oEmail.Recipients(oEmail.To).Address
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dlg.Txt_Email = oEmail.Recipients(oEmail.To).AddressEntry
    Mais dans le 1e et 2e cas ça me renvoi un truc dans le genre :
    /o=HMR/ou=Exchange Administrative Group (XXXXXXXXXXXX)/cn=Recipients/cn=userxxxxxx (j'ai volontairement mis des X a la place des valeurs)
    et dans le 3e cas, le display name et non l'adresse mail

    Si vous avez la solution, vous m’épargnerai des heures supplémentaires de recherche infructueuses, j'ai déjà passé des heures sur la doc à tester plein de solutions qui pour moi devrais fonctionner mais ....

    J'ai cru trouver la solution avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Function RetrouveAdress(stAddress As String) As String
        Dim oNSP As Outlook.Namespace
        Dim oRec As Outlook.Recipient
        Dim oExUser As Outlook.ExchangeUser
        Set oNSP = Application.GetNamespace("MAPI")
        Set oRec = oNSP.CreateRecipient(stAddress)
        Set oExUser = oRec.AddressEntry.GetExchangeUser()
        RetrouveAdress = oExUser.PrimarySmtpAddress
        Set oNSP = Nothing
        Set oRec = Nothing
        Set oExUser = Nothing
    End Function
    que j'ai trouvé sur un autre post en rapport avec le mien, mais les fonctions utilisés sont pour excel 2013 ou + ... je suis sous 2010

    Merci d'avance

    Kathary

    edit : pour apporter plus de précisions sur le contexte : cette fonction est lancé a chaque fois qu'on entre un caractère dans le champ spécifié avant le 1e "if". Le but est de transformer un identifiant en destinataire d'un mail. Un mail peut être envoyé avec le display name cependant a cause de problèmes d'alias et de plusieurs display name identiques pour une adresse différente, je cherche à afficher l'adresse mail à la place.

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Par défaut
    Personne ? :'( :up:

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Par défaut forever alone
    up :/ je commence a désespérer.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    il faut être patient en posant une problématique Outlook dans un forum Excel ! …

    ___________________________________________________________________________________________________________
    Je suis Paris, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …


  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Par défaut
    ça reste du VBA, ok je reste patient =) et continue de chercher !

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Le modèle objet n'étant pas le même !

    Et la réponse se trouvant peut-être déjà dans le forum Outlook ou dans sa FAQ …

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Par défaut
    Pourtant j'ai pas mal cherché avant de poster. Quelques posts y ressemblent mais pas de solution pour la suite 2010 :/

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    pour une adresse d'utilisateur Exchange, en passant par l'alias :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub totot()
    Dim tata As Recipient
    Set tata = Application.Session.CreateRecipient("AliasExchange")
        tata.Resolve
    Debug.Print tata.AddressEntry.GetExchangeUser.PrimarySmtpAddress
    End Sub
    A sécuriser sur deux niveaux :

    1) détecter si c'est bien une adresse Exchange (déjà fait dans ton code)
    2) tester l'état du Resolve via la propriété .Resolved

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Par défaut
    :o merci, je n'ai pas trouvé ça même en cherchant dans la doc, mais ça fonctionne parfaitement.
    Je me coucherai moins bête ce soir =) ! Un grand merci à toi en tout cas joe.levrai.
    Je passe en résolu. J'ai adapté mon code en utilisant cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dlg.Txt_Email = oEmail.Recipients(1).AddressEntry.GetExchangeUser.PrimarySmtpAddress
    Bonne continuation aux membres du forum !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/10/2014, 00h20
  2. Récupérer l'adresse mail des destinataires d'un message
    Par PaulR dans le forum VBA Outlook
    Réponses: 3
    Dernier message: 02/09/2011, 11h00
  3. Récupérer adresse mail destinataire
    Par melouille56 dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 20/07/2009, 15h08
  4. Réponses: 9
    Dernier message: 11/04/2007, 13h44
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

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