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 :

Recherche de contact dans un carnet d'adresse partagé


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 35
    Par défaut Recherche de contact dans un carnet d'adresse partagé
    Bonjour à tous,

    Je me retrouve avec une liste d'adresse mail mais dont je n'ai pas les noms et prénoms des propriétaires.
    Dans mon entreprise, j'ai un carnet d'adresse global dans lequel se trouve les information que je recherche.
    Aprés de nombreuses recherches, j'ai trouvé une méthode pour faire cette recherche, mais pour ça il me faut un objet Folder correspondant à l'emplacement de mon carnet d'adresse, mais je n'arrive pas à l'obtenir.
    Voici le code que j'ai actuellement:

    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
    Sub search_adress()
        Dim olApp As Outlook.Application
        Dim dossierContacts As Outlook.Folder
        Dim ListesAdresses As Outlook.AddressLists
        Dim ListeAddresse As Outlook.AddressList
        Dim Contact As Outlook.ContactItem
     
     
        Set olApp = New Outlook.Application
        Set ListesAdresses = olApp.Session.AddressLists
        Set ListeAddresse = olApp.GetNamespace("MAPI"). _
            GetGlobalAddressList
     
     
        Set ListeAddresse = ListesAdresses.Item(1)
     
        MsgBox ListeAddresse.AddressEntries.Count
        MsgBox ListeAddresse.Name
     
        Set dossierContacts = ListeAddresse.GetContactsFolder
     
        'Recherche le contact dont le nom est saisi dans la cellule A1
        Set Contact = dossierContacts.Items.Find _
            ("[Email1Address] = '" & Range("A1") & "'")
        If Not Contact Is Nothing Then
            Contact.Display
            Else
            MsgBox "Non trouvé."
        End If
    End Sub
    Avec ce code je me retrouve avec un dossierContacts équivalent à 'Nothing'

    Auriez vous un moyen d'obtenir ce dossier ou sinon une autre méthode pour trouver ce que je recherche?

    PS: je pourrais surement faire un tour de tous les contacts, mais ayant plus de 90000 contact dans le carnet et une centaine de recherche à faire ça risque de me prendre du temps.


    Merci d'avance

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,

    Voici un code qui boucle sur le contenu de la Global Address List, par contre j'ai pas pris le temps de chercher comment y faire le .Find mais je suis certain que tu nous donneras la solution

    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
    Option Explicit
    Const CdoAddressListGAL = 0
     
    Sub GetGAL()
     
    Dim objSession As Object, oFolder As Object, oMessage As Object
    Set objSession = CreateObject("MAPI.Session")
     
     
    With objSession
        .Logon , , False, False
        Set oFolder = .GetAddressList(CdoAddressListGAL)
    End With
     
    For Each oMessage In oFolder.AddressEntries
        If oMessage = "Vandermeulen, Frederic" Then
            MsgBox oMessage.Fields(6)
        End If
    Next
     
    Set oFolder = Nothing
    Set objSession = Nothing
     
    End Sub
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 35
    Par défaut
    Bonjour,

    Merci de ta réponse. Elle ne répond pas vraiment à mon problème car justement je voudrais éviter de boucler sur la Global Address List étant donné le nombre d'entrée (200000 environ).

    Mais j'ai fini par trouver une solution qui fonctionne trés bien et ne demande ni recherche ni boucle. La voici:

    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 ResolveName()
        Dim myOlApp As New Outlook.Application
        Dim myNamespace As Outlook.Namespace
        Dim myRecipient As Outlook.Recipient
        Dim CalendarFolder As Outlook.folder
        Dim AddEn As Outlook.AddressEntry
        Dim GetEx As Outlook.ExchangeUser
     
        Set myNamespace = myOlApp.GetNamespace("MAPI")
        Set myRecipient = myNamespace.CreateRecipient("monadresse")
        myRecipient.Resolve
     
        Set AddEn = myRecipient.AddressEntry
        Set GetEx = AddEn.GetExchangeUser
     
        MsgBox GetEx.firstname & ", " & GetEx.lastname & ", " & GetEx.alias
     
    End Sub

  4. #4
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    Ca semble être une bonne solution j'essaierai.
    Pour le sport (quand j'aurai un peu de temps) j'essaierai quand même de faire un .Find sur base du code que j'avais...
    A+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/07/2010, 09h02
  2. [FBide] Recherche dans un carnet d'adresses
    Par gmcc34 dans le forum Basic
    Réponses: 14
    Dernier message: 29/04/2009, 13h56
  3. Suppression de doublons dans mon carnet d'adresse
    Par gege87270 dans le forum Outlook
    Réponses: 1
    Dernier message: 26/11/2007, 12h26
  4. Problème avec les contacts et le carnet d'adresse
    Par ricain59 dans le forum Outlook
    Réponses: 11
    Dernier message: 13/11/2007, 20h44
  5. Réponses: 6
    Dernier message: 18/06/2007, 16h07

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