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 :

Tester si contact est present dans outlook depuis excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Par défaut Tester si contact est present dans outlook depuis excel
    Bonjour au forum,

    Je souhaite tester depuis mon userform en cliquant sur bouton valider

    - si le client est existant dans la liste des contacts outlook, il m'affiche un message
    - si non il affiche un autre message et créer le nouveau contact dans outlook.
    Voici le code :
    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
    Sub controleLastName_contactsOutlook()
        Dim olApp As New Outlook.Application
        Dim Cible As Outlook.ContactItem
        Dim dossierContacts As Outlook.MAPIFolder
        Dim leNom As String
        Dim leTel As String
     
        leNom = nom.Value
        leTel = TextBox2.Value
     
        Set olApp = New Outlook.Application
        Set dossierContacts = olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
     
        Set Cible = dossierContacts.Items.Find("?[FullName] = '" & leNom & "'" And [HomeTelephoneNumber] = "'" & leTel & "'")
        If Not Cible Is Nothing Then
            MsgBox "Le contact existe déjà dans Ms Outlook"
        Else
            MsgBox "Le contact n'existe pas et donc va être ajouter"
            ajouterContactOutlook
        End If
    End Sub
    Ne fonctionne pas, affichage du message d'erreur 13' incompatibilité de type" et souligne en jaune
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Set Cible = dossierContacts.Items.Find("?[FullName] = '" & leNom & "'" And [HomeTelephoneNumber] = "'" & leTel & "'")
    Pouvez-vous m'aider ?

    Merci

    Stephanie

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Pour ne pas avoir de problème dans la mise en forme de la propriété FullName, je conseil de séparer Nom et Prénom.
    Attention également à la mise en forme du numéro de téléphone.

    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
    Sub controleLastName_contactsOutlook()
        Dim olApp As New Outlook.Application
        Dim Cible As Outlook.ContactItem
        Dim dossierContacts As Outlook.MAPIFolder
        Dim leNom As String
        Dim lePrenom As String
        Dim leTel As String
     
        leNom = nom.Value
        'A FAIRE : lePrenom  = prenom.value
        leTel = TextBox2.Value
     
        Set olApp = New Outlook.Application
        Set dossierContacts = olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
     
        Set Cible = dossierContacts.Items.Find("[LastName] = '" & leNom & "' and [FirstName] = '" & lePrenom & "'")
        If Not Cible Is Nothing Then
            If Cible.HomeTelephoneNumber = leTel Then
                MsgBox "Le contact existe déjà dans Ms Outlook"
            End If
        Else
                MsgBox "Le contact n'existe pas et donc va être ajouter"
        End If
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Par défaut
    Bonjour BlueMonkey et au forum

    Je nom et le prenom se trouve dans la meme textbox (le pourquoi du "FullName") , et je préfère tel quel car je suis obligé de tout refaire le programme.

    Peux-t-on faire le control uniquement sur le nom et le téléphone ?

    Concernant le format du téléphone, j'utilise ceci : 00.00.00.00.00

    Merci

    Stéphanie

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonjour,

    Je nom et le prenom se trouve dans la meme textbox (le pourquoi du "FullName") , et je préfère tel quel car je suis obligé de tout refaire le programme.
    Comme indiqué l'utilisation de la clé FullName me semble risqué, parce que la mise en forme est assez particulière.
    (faire un test de recherche manuel avec Prénom et nom, puis utiliser le débugger sur Cible pour se faire une idée de la mise en forme).

    Ensuite la ligne 16 du code précédent pourra être remplacé par :
    Set Cible = dossierContacts.Items.Find("[FullName] = '" & leNom & "'").

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 241
    Par défaut
    bonjour BlueMonkey, et au forum

    Désolé de ne pas avoir repondu avant j'étais sur mon autre projet.

    Maintenant tout va jusqu'à la fin sauf que, la macro m'annonce toujours que "Le contact n'existe pas". Dans le code j'ai ciblé directment sur l'email pour vérifier avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Cible = dossierContacts.Items.Find("[Email1Address] = '" & leMail & "'")
    Comment faire, j'ai l'impression que ça ne fonctionne pas, j'ai le même problème avec les RDV.

    Pour info
    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
    Sub RDVOutlookExistant()
    Dim OutlApp As New Outlook.Application
    Dim OutlMapi As Outlook.Namespace
    Dim OutlFolder As Outlook.MAPIFolder
    Dim OutlAppointment As Outlook.AppointmentItem
    Dim OutlItems As Outlook.Items
    Dim DateDebut As String
     
    DateDebut = TextBox1.Value & " " & TextBox4.Value
     
    Set OutlMapi = OutlApp.GetNamespace("MAPI")
    Set OutlFolder = OutlMapi.GetDefaultFolder(olFolderCalendar)
    Set OutlItems = OutlFolder.Items
     
    On Error Resume Next
    Set OutlAppointment = OutlItems.Find("[Start] = '" & DateDebut & "'")
    On Error GoTo 0
     
    If OutlAppointment Is Nothing Then
        UserForm6
        NouveauRDV_Calendrier
    Else
        MsgBox "Un Rdv déja prévu à cette date:" & vbCrLf & _
            OutlAppointment.Subject
    End If
    End Sub
    Avez-vous une idée ?

    Merci

    Stephanie

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,
    la macro m'annonce toujours que "Le contact n'existe pas". Dans le code j'ai ciblé directment sur l'email pour vérifier
    Etrange. Sous ma version d'Excel XLS2003 ce code adapté pour une recherche par adresse email fonctionne.

    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
    Sub controle_contactsOutlook()
        Dim olApp As New Outlook.Application
        Dim Cible As Outlook.ContactItem
        Dim dossierContacts As Outlook.MAPIFolder
        Dim adresseEmail As String
     
        adresseEmail = email.Value
     
        Set olApp = New Outlook.Application
        Set dossierContacts = olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
        Set Cible = dossierContacts.Items.Find("[Email1Address] = '" & adresseEmail & "'")
        If Not Cible Is Nothing Then
            MsgBox "Le contact existe déjà dans Ms Outlook"
        Else
            MsgBox "Le contact n'existe pas et donc va être ajouter"
        End If
    End Sub

    Pour le test de rendez-vous essayer :
    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
    Sub controleRendezVous_contactsOutlook()
        Dim olApp As New Outlook.Application
        Dim Cible As Outlook.AppointmentItem
        Dim dossierContacts As Outlook.MAPIFolder
     
        Set olApp = New Outlook.Application
        Set dossierContacts = olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar)
        Dim dateRecherche As Date
        Dim heureRecherche As String
        d = DateValue("21/04/2012")
        heureRecherche = "8:00"
        Set Cible = dossierContacts.Items.Find("[Start] = '" & d & "'")
        If Not Cible Is Nothing Then
            Dim t As Date
            If TimeValue(Cible.Start) = TimeValue(heureRecherche) Then
                MsgBox "Il y a déjà un rendez vous dans Ms Outlook"
            End If
        Else
            MsgBox "Pas de rendez-vous à cette date."
        End If
    End Sub

Discussions similaires

  1. [Débutant] Condition IF qui verifie si un string est present dans une list
    Par harghan dans le forum C#
    Réponses: 6
    Dernier message: 13/05/2014, 15h28
  2. Réponses: 3
    Dernier message: 25/07/2013, 18h33
  3. Réponses: 5
    Dernier message: 20/08/2010, 10h01
  4. [AC-2003] Tester si une cellule est vide dans un classeur excel et faire une boucle
    Par moilou2 dans le forum VBA Access
    Réponses: 11
    Dernier message: 19/08/2009, 09h34
  5. coller une plage dans word depuis excel
    Par tarmin dans le forum VBA Word
    Réponses: 7
    Dernier message: 18/01/2006, 10h16

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