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 :

Ajouter Contact vers Outlook [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Par défaut Ajouter Contact vers Outlook
    Bonjour, j'ai une petite base de données sous Excel dans laquelle chaque ligne représente un client différent (avec coordonnées, suivi...). J'aimerait qu'au bout de cette ligne, il y ai un bouton me permettant d'ajouter automatiquement ce client dans mon répertoire Outlook.

    En cherchant sur le site, je suis tombé là dessus, mais je ne comprend pas du tout le mettre en place, ni comment créer un bouton qui n'implique que la ligne sur laquelle il est placé.

    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
    VbaSélectionnez
     
    Sub ajouterContactOutlook()
        'Nécessite d'activer la référence
            'Microsoft Outlook xx.x Object Library
        Dim objOutlook As Outlook.Application
        Dim objContact As ContactItem
     
        'Crée l'instance Outlook    
        Set objOutlook = New Outlook.Application
        'Crée un élément pour les contacts
        Set objContact = objOutlook.CreateItem(olContactItem)
     
        'Définit les informations du nouveau contact
        With objContact
            .Email1Address = "silkyroad@redaction-developpez.com "
            .FirstName = "michel"
            .LastName = "dvp"
            .HomeTelephoneNumber = "99 99 99 99 99"
            .HomeAddressCity = "Xlcity"
            'Sauvegarde le contact
            .Save
        End With
    End Sub
    J'aurais besoin d'un peu d'aide.

    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Apprenti GEII
    Inscrit en
    Janvier 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Apprenti GEII
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2014
    Messages : 83
    Par défaut Bonjour
    Bonjour, je n'ai jamais fait ça mais je peux essayer de t'aider.

    Pour activer la référence : Microsoft Outlook xx.x Object Library
    tu vas dans l'éditeur VBA > Outils > références > Coches Microsoft Outlook xx.x Object Library (sachant que le xx.x correspond à une version)
    Sinon l'interface entre excel et outlook sera impossible

    Si tu lances la macro avec ton boutton directement, je te conseille de travailler avec la selection courante, la ligne à partir de laquelle la macro selectionnera ses données sera celle de ta selection!

    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 ajouterContactOutlook()
     
        Dim objOutlook As Outlook.Application
        Dim objContact As ContactItem
     
        'Crée l'instance Outlook    
        Set objOutlook = New Outlook.Application
        'Crée un élément pour les contacts
        Set objContact = objOutlook.CreateItem(olContactItem)
     
        With objContact
            .Email1Address =  Sheets("NomDeTaFeuille").Cells(Selection.Row,1)  'Si l'addresse email se trouve en colonne 1   
            .FirstName = Sheets("NomDeTaFeuille").Cells(Selection.Row,2) 'Si le prénom se trouve en colonne 2   
            .LastName = Sheets("NomDeTaFeuille").Cells(Selection.Row,3) 'Si le nom se trouve en colonne 3     
            .HomeTelephoneNumber = Sheets("NomDeTaFeuille").Cells(Selection.Row,4) 'Si le num de téléphone se trouve en colonne 4 
            .HomeAddressCity = Sheets("NomDeTaFeuille").Cells(Selection.Row,5)  'Si l'adresse se trouve en colonne 5        
            .Save 'Sauvegarde du contact
        End With
     
    End sub
    Cependant veille à brider ton code pour que ces opérations ne se fassent que si la cellule selectionnée est dans une plage exploitable, par exemple Selection.Row > 1 si ta première ligne est réservée aux en-têtes
    Je suis pas pro mais je pense que ça peut marcher !

    Sinon j'aurais pas mis de bouton j'aurais créé le contact sur double click sur le nom de contact...
    Et je n'ai aucune idée de la gestion des doublons de ce genre de procédure (contact déjà créé, adresse déjà connue...)

  3. #3
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Par défaut
    Tu as raison, l'idéal serait par exemple de double cliquer sur le nom.

    J'ai donc essayer de bidouiller un truc en reprenant ton aide mais ça ne fonctionne pas :-(

    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
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
    If Not Application.Intersect(Target, Range("C2")) Is Nothing Then
     
       Sub ajouterContactOutlook()
     
       Dim objOutlook As Outlook.Application
        Dim objContact As ContactItem
     
        'Crée l'instance Outlook
        Set objOutlook = New Outlook.Application
        'Crée un élément pour les contacts
        Set objContact = objOutlook.CreateItem(olContactItem)
     
        With objContact
            .Email1Address = Sheets("2014").Cells(Selection.Row, 9)  'Si l'addresse email se trouve en colonne 1
            .FirstName = Sheets("2014").Cells(Selection.Row, 4) 'Si le prénom se trouve en colonne 2
            .LastName = Sheets("2014").Cells(Selection.Row, 3) 'Si le nom se trouve en colonne 3
            .HomeTelephoneNumber = Sheets("2014").Cells(Selection.Row, 4) 'Si le num de téléphone se trouve en colonne 4
            .HomeAddressCity = Sheets("2014").Cells(Selection.Row, 5) 'Si l'adresse se trouve en colonne 5
     
        End With
     End If
    End Sub
    End Sub

    Il n'est pas possible qu'un clique ouvre la fenêtre contact pré remplie avec les éléments de la ligne dans Outlook un peu comme le lien hyper texte mailto: ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Apprenti GEII
    Inscrit en
    Janvier 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Apprenti GEII
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2014
    Messages : 83
    Par défaut
    Oulah, tu as un problème d'appel de ta procédure:

    ==> Soit tu sauvegardes ton modules et tu l'appelles dans ton if :
    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
     
    'Dans un module:
    Sub ajouterContactOutlook(Target as range)
     
       Dim objOutlook As Outlook.Application
       Dim objContact As ContactItem
     
        'Crée l'instance Outlook
        Set objOutlook = New Outlook.Application
        'Crée un élément pour les contacts
        Set objContact = objOutlook.CreateItem(olContactItem)
     
        With objContact
            .Email1Address = Sheets("2014").Cells(Target.Row, 9)  'Si l'addresse email se trouve en colonne 1
            .FirstName = Sheets("2014").Cells(Target.Row, 4) 'Si le prénom se trouve en colonne 2
            .LastName = Sheets("2014").Cells(Target.Row, 3) 'Si le nom se trouve en colonne 3
            .HomeTelephoneNumber = Sheets("2014").Cells(Target.Row, 4) 'Si le num de téléphone se trouve en colonne 4
            .HomeAddressCity = Sheets("2014").Cells(Target.Row, 5) 'Si l'adresse se trouve en colonne 5
            .Save
        End With
     End If
    End Sub
     
    'Puis dans le code de ta feuille:
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
         If Target.Column=3 Then 'Si dbl click sur le nom
                Call ajouterContactOutlook(Target) 
         Endif
    End Sub
    ==> Soit tu mets le code pour ajouter le contact directement dans ton If

    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
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column=3 Then 'Si dbl click sur le nom
       Dim objOutlook As Outlook.Application
       Dim objContact As ContactItem
     
        'Crée l'instance Outlook
        Set objOutlook = New Outlook.Application
        'Crée un élément pour les contacts
        Set objContact = objOutlook.CreateItem(olContactItem)
     
        With objContact
            .Email1Address = Sheets("2014").Cells(Target.Row, 9)  'Si l'addresse email se trouve en colonne 1
            .FirstName = Sheets("2014").Cells(Target.Row, 4) 'Si le prénom se trouve en colonne 2
            .LastName = Sheets("2014").Cells(Target.Row, 3) 'Si le nom se trouve en colonne 3
            .HomeTelephoneNumber = Sheets("2014").Cells(Target.Row, 4) 'Si le num de téléphone se trouve en colonne 4
            .HomeAddressCity = Sheets("2014").Cells(Target.Row, 5) 'Si l'adresse se trouve en colonne 5
            .Save
        End With
     
    Endif
    End Sub
    Un conseil dans ton éditeur VBA, tu peux éditer un point d'arrêt du code (Breakpoint) en cliquant sur la colone de gauche, la ligne se surbrille en Marron.
    Tu en mets un au début de ton code, et en le lançant (donc en double cliquant si on suis cet événement spécifique) il s'arrêtera dès qu'il rencontrera ce point d'arrêt.
    De là, tu appuies sur F8 pour l'éxécuter en pas à pas ce qui permet d'analyser comment se comporte ton code!
    (F5 sert à continuer le code jusqu'à la fin)
    Il n'est pas possible qu'un clique ouvre la fenêtre contact pré remplie avec les éléments de la ligne dans Outlook un peu comme le lien hyper texte mailto: ?
    Je pense que oui, je pense aussi que si on peut faire ça, on peut directement l'enregistrer... Mais pour l'afficher il y a surement une procédure objContact.Show ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Apprenti GEII
    Inscrit en
    Janvier 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Apprenti GEII
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2014
    Messages : 83
    Par défaut test
    Essaie ce fichier: double clique sur la 1ère colonne

    TestContactOutlook.xlsm

    avec ça tu devrais arriver à faire quelque chose

  6. #6
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Par défaut
    Merci pierrot

    Merci pour les conseils qui vont grandement m'aider à progresser.

    Merci également un milliard de fois pour ton fichier qui correspond parfaitement à ce que je voulais faire. Je vais bidouiller un peu tout ça, mais c'est génial.

    J'adoooooooooooore.

    Merci merci merci.

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

Discussions similaires

  1. [AC-2007] Envoyer liste contacts vers outlook
    Par stephi222 dans le forum VBA Access
    Réponses: 0
    Dernier message: 22/07/2014, 08h29
  2. [AC-2010] Fonction Ajouter Contact depuis Outlook
    Par franckb74 dans le forum Access
    Réponses: 2
    Dernier message: 04/05/2013, 00h45
  3. Export contact unique outlook vers Exel
    Par unpetitange dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 11/11/2010, 00h50
  4. [WD14] Ajouter un contact dans Outlook
    Par Dbee1 dans le forum WinDev
    Réponses: 2
    Dernier message: 18/01/2010, 14h15
  5. Réponses: 1
    Dernier message: 15/05/2009, 15h09

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