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 :

Récupérer adresse mail à partir du nom dans une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Par défaut Récupérer adresse mail à partir du nom dans une cellule
    Bonjour,

    J'ai créé une macro qui me permet d'envoyer un mail automatique aux adresses mail figurant dans mon tableau excel lorsque certaines conditions sont respectées.

    Actuellement, pour que le mail soit envoyé, il faut donc que je rentre manuellement les adresses mail correspondant à chaque personne présente dans le tableau. Sachant que je rentre aussi le nom + prénom des personnes, est-ce qu'il ne serait pas possible de récupérer automatiquement l'adresse mail dans le carnet d'adresse outlook de mon entreprise (contacts partagés, pas contacts perso) ?

    Voici le code que je souhaite modifier. Vous trouverez également le fichier en PJ pour mieux comprendre.

    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
         'Définition des variables
        Public Sub EnvoiMailRappel()
        Dim OutlookApp As Object
        Dim OutlookMail As Object
        Dim adresse As String
        Dim message As String
        Dim sujet As String
     
        sujet = "Retour Prêt" 'Définition du sujet de l'email
        For i = 3 To Range("a" & Rows.Count).End(xlUp).Row 'Définition de la plage de test (de la 3ème ligne jusqu'à première cellule vide de la colonne a
        If Range("o" & i) = "" Then 'Si aucun mail n'a été envoyé alors on lance la recherche sur la date
     
        If Range("h" & i) <> "" And Range("i" & i) <> "" And Now() > Range("i" & i) Then ' Si la cellule de date prêt n'est pas vide et que la date de retour est arrivée à expiration alors envoyer le mail
     
        adresse = Range("g" & i) 'Recherche l'adresse mail du destinataire
        ' Définition du message
        message = "Bonjour " & Range("e" & i) & "," & vbCrLf & vbCrLf & "Un " & Range("a" & i) & " " & _
        Range("b" & i) & " " & "ayant pour IMEI " & Range("c" & i) & " " & "t'a été prêté le " & _
        Range("h" & i) & ". " & "La période de prêt étant arrivée à échéance, merci de bien vouloir nous le rapporter, ou à défaut, me contacter." & _
        vbCrLf & vbCrLf & "Bien cordialement," & vbCrLf
     
        'Paramètres de l'application mail
        Set OutlookApp = CreateObject("outlook.application")
        Set OutlookMail = OutlookApp.createitem(0)
        With OutlookMail
        .Subject = sujet
        .To = adresse
        .body = message
        .send 'envoi du mail
     
        Range("o" & i).Value = Now 'lorsqu'un mail a été enovyé, la cellule en i est remplie avec la date d'envoi du mail afin d'éviter l'envoi de plusieurs mails
     
        End With
     
        End If
        End If
        Next i
     
     
        End Sub
    Merci d'avance pour votre aide.
    Bien cordialement,
    mdb008
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Utilisez-vous un serveur Exchange ?

    Ce lien pourrait sûrement t'être utile

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Par défaut
    Bonjour Parmi,

    Merci de ta réponse. En effet, nous utilisons un serveur Exchange.

    Par contre je ne suis vraiment débutant en VBA donc je ne vois pas comment adapter mon code avec cette nouvelle fonctionnalité. J'ai besoin d'un peu d'aide là dessus, si ce n'est pas trop demandé...

    Encore merci !

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Tu pourrais essayer ce code en le modifiant au besoin.
    Selon le nombre de contacts que tu recherches et le nombre de contacts qu'il y a dans votre base de données, ça peut être long, toutefois...

    Inscris le prénom recherché en A2, le nom en B2 et l'adresse courriel devrait s'afficher en C2
    Plusieurs autres possibilités existent (téléphone, adresse civique,...)

    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
    Sub Rechercher()
        Dim OLApp As New Outlook.Application
        Dim colAL As Outlook.AddressLists
        Dim oAL As Outlook.AddressList
        Dim colAE As Outlook.AddressEntries
        Dim oAE As Outlook.AddressEntry
        Dim oExUser As Outlook.ExchangeUser
        Dim Nom As String, Prenom As String
     
        Prenom = Range("A2")
        Nom = Range("B2")
     
        Set colAL = OLApp.Session.AddressLists
     
        For Each oAL In colAL
     
            If oAL.AddressListType = olExchangeGlobalAddressList Then
                Set colAE = oAL.AddressEntries
                For Each oAE In colAE
     
                    If oAE.AddressEntryUserType = olExchangeUserAddressEntry _
                        Or oAE.AddressEntryUserType = olExchangeRemoteUserAddressEntry Then
     
                    Set oExUser = oAE.GetExchangeUser
     
                    If oExUser.LastName = Nom And oExUser.FirstName = Prenom Then
                        Range("C2") = oExUser.PrimarySmtpAddress
                        Exit For
                    End If
     
                    End If
                Next
            End If
        Next
     
    End Sub

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Par défaut
    Merci beaucoup Parmi, c'est parfait !

    Par contre je pense que notre base de contacts est trop importante car lorsque je lance la macro, le chargement ne s'arrête pas, même après 30min...

    Du coup je crois qu'il n'est pas envisageable d'intégrer cette fonctionnalité dans notre entité... Tant pis.

    Encore merci pour tout, j'espère que ton travail servira à d'autres

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Je trouve que 30 minutes c'est beaucoup.
    Combien de personnes recherches-tu et dans une liste de quelle ordre de grandeur ?

    Ici, la liste contient quelques dizaines de milliers de noms.
    Les noms commençant par A sont trouvés plus rapidement que les Z, mais c'est question de secondes...

Discussions similaires

  1. [WD19] Récupérer adresse mail à partir d'un compte utilisateur
    Par mimi1255 dans le forum WinDev
    Réponses: 3
    Dernier message: 04/09/2014, 18h44
  2. Récupérer adresse ip à partir du nom d'hôte
    Par zpico dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 14/10/2012, 14h52
  3. répéter le même code en fonction du nom dans une cellule
    Par DubDub dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/02/2009, 10h44
  4. Réponses: 2
    Dernier message: 30/10/2008, 14h28
  5. VBA_Excel-Pb pour trouver un nom dans une cellule
    Par martiweb dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 01/06/2007, 01h04

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