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 itemMail - Recipients.ResolveAll - recherche stricte au lieu de recherche souple [XL-2010]


Sujet :

Macros et VBA Excel

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut objet itemMail - Recipients.ResolveAll - recherche stricte au lieu de recherche souple
    Bonjour,
    Après plusieurs heures de recherche, je me décide a poser mon problème ici !

    Dans le principe rien de très complexe, mais de la doc très dure à trouver car le sujet est précis

    J'utilise un code VBA dans excel pour gérer l'envoie de mail grâce au carnet d'adresse Outlook. Plus exactement, je créé un MailItem, et j'ajoute un destinataire via son login (il existe 3 différents types d'identification : login, Display Name, ou adresse mail). Mon but est de récupérer l'adresse mail. Pour ce fait, j'ai implémenté le code suivant qui se lance en appuyant sur un bouton :
    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
     
            '
    	' REMPLACE LE DISPLAY NAME PAR L'ADRESSE MAIL EN UTILISANT LE LOGIN
    	' (BOUTON)
    	'
    	Sub Replace_displayName()
    	    'Declarations
    	    Dim FL As Worksheet, NoCol As Integer, FirstLign As Integer, DerLign As Long, WriteCol As Integer
    	    Dim NoLign As Long
    	    Dim Loggin As String
     
    	    'Link Outlook
    	    Dim oEmail, olMailItem
    	    Dim appOutLook As Object
    	    Set appOutLook = CreateObject("Outlook.Application")
    	    Set oEmail = appOutLook.CreateItem(olMailItem)
     
    	    ' --------------------------------- PARAMETRES ------------------------------------
    	    Set FL = Worksheets("ACCESS")                                      'Feuille à traiter
    	    NoCol = 2                                                            'Numéro de la colonne à lire
    	    FirstLign = 3                                                          'Première ligne de data
    	    DerLign = Split(FL.UsedRange.Address, "$")(4)                           'N° de la dernière ligne remplie
    	    WriteCol = 19                                                           'N° de la colonne ou écrire
    	    ' ----------------------------------------------------------------------------------------
     
    	    ' CODE : inscrit dans la colone ciblé le mail de la personne.
    	    For NoLign = FirstLign To DerLign
    	        Loggin = FL.Cells(NoLign, NoCol)
    	        oEmail.To = Loggin
    	        If (oEmail.Recipients.ResolveAll) Then
    	            FL.Cells(NoLign, WriteCol) = oEmail.Recipients(1).AddressEntry.GetExchangeUser.PrimarySmtpAddress
    	        End If
    	    Next
     
    	End Sub
    Ce code fonctionne très bien mais mon soucis est au niveau du "oEmail.Recipients.ResolveAll" dans le premier IF.
    Après analyse du problème et recherche dans la BD, j'ai remarqué que certain logins sont prefixe d'autre logins.
    Je m'explique par un exemple : un login 1 sera "abc00001" et un autre sera "abc000010". Le premier est une sous chaine du 2e.
    Quand ce cas se présente, le ResolveAll ne se résous pas et renvoie False. Pour vous donner une idée, sur 4500 lignes, ça en représente 1400 qui ne se résolvent pas.

    J'ai pensé passer par le display name mais impossible car il existe malheureusement des personnes ayant le même display name mais une adresse mail différente (je travaille dans une grosse boite ... y a des homonymes), et ça ne dépend pas de moi.

    Pour moi il faudrait forcer le ResolveAll a faire une recherche stricte, mais je n'ai pas trouvé comment faire ça.

    Voilà, un problème a première vue tout simple mais assez précis et pointu, et surtout mal documenté (ou alors je ne sais pas chercher, c'est pas impossible ) surtout que c'est en lien avec la gestion de mails... Bref !

    Merci par avance du temps que vous consacrerez à répondre si vous avez une idée !

    Kathary

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    Salut,
    Je ne crois qu'on ait des parametres pour forcer cela, par contre tu peux regarder les recipients un par un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If Not oEmail.Recipients.ResolveAll Then 
        For Each myRecipient In oEmail.Recipients
             If Not myRecipient.Resolved Then 
                 MsgBox myRecipient.Name 
             End If 
        Next 
    End If
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    C'est bien ce qu'il me semblait. Je vais essayer de ce coté, malheureusement ça ne conviendra pas en tant que solution ... Si c'est vraiment impossible je suis tristesse infinie :'(. Je continue de chercher, si je trouve un autre moyen; ou si dans une semaine je n'ai toujours rien je posterai ici (pour le prochain dans mon cas) et passerai en résolu.

    Merci en tout cas pour ta réponse.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bon, vu que personne n'as de solution je passe en Résolu, et j'en conclue que il n'y a pas de méthode simple pour faire ce que je cherche à faire...
    Bonne continuation et merci pour votre temps =).

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

Discussions similaires

  1. [XL-2010] Fonction Find - recherche stricte ?
    Par cdurep dans le forum Excel
    Réponses: 1
    Dernier message: 14/03/2014, 10h05
  2. [XL-2007] Problème de recherche stricte
    Par Abhorsen dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/11/2013, 14h49
  3. [AC-2010] Recherche stricte sur la recherche
    Par mcharmat dans le forum IHM
    Réponses: 1
    Dernier message: 15/09/2013, 10h54
  4. Recherche sur un champ et recherche suivant
    Par DurDur dans le forum Access
    Réponses: 4
    Dernier message: 10/03/2006, 23h17
  5. [MySQL] Formulaire de recherche PHP + un script d recherche en HTML
    Par Dsphinx dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/11/2005, 19h44

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