Lier une cellule excel à 1 contact outlook

Sonia z

XLDnaute Nouveau
Bonjour,

J'utilise concomitamment excel et outlook mais je n'y fais forcément pas les mêmes choses...
Les lignes de mon tableur excel correspondent à des contacts outlook (2003).

J'aurai 2 questions, une importante, l'autre secondaire.

L'importante :

Je souhaiterais savoir comment je peux lier une cellule ou une ligne à un contact outlook.
Je voudrais qu'en cliquant sur la cellule en question cela m'ouvre la fiche de mon contact outlook.

Je cherche depuis hier sur Internet, sur le site microsoft et sur différents forum mais je ne trouve pas de solution à cela (je sais déjà lier des RDV, des tâches ou des doc mais pas la fiche contact)

S'il n'y a pas d'automatisme possible, même une solution 1 à 1 (ligne après ligne) me convient, je n'ai que 700 contacts/lignes à lier, je le ferai au fur et à mesure des besoins.

La secondaire :

Existe-t-il une possibilité de lier définitivement une feuille excel avec un dossier de contact outlook, l'avantage pour moi étant de ne pas saisir 2 fois des informations ou modifications qui sont sur mon fichier excel et sur mes contacts outlook.

Si la secondaire est trop complexe ne perdez pas de temps à me l'expliquer car je suis vraiment débutante en macro et il faut tout m'expliquer pas à pas (cliquez ici, écrire ça là etc...)

Merci par avance pour votre attention.
 

MichelXld

XLDnaute Barbatruc
Re : Lier une cellule excel à 1 contact outlook

bonjour

Un exemple qui recherche un contact dont l'adresse mail est saisi dans la cellule A1:


Code:
    Dim olApp As Outlook.Application
    Dim dossierContacts As Outlook.MAPIFolder
    Dim Contact As Outlook.ContactItem
    
    Set olApp = New Outlook.Application
    Set dossierContacts = olApp.GetNamespace("MAPI"). _
        GetDefaultFolder(olFolderContacts)
    
    'Recherche le contact dont le nom est saisi dans la cellule
    Set Contact = dossierContacts.Items.Find _
        ("[Email1Address] = '" & Range("A1") & "'")
    If Not Contact Is Nothing Then
        Contact.Display
        Else
        MsgBox "Non trouvé."
    End If


ensuite pour automatiser en fonction d'une selection de cellule, tu peux utiliser les evenements de la feuille de calcul:
Les évènements dans la feuille de calcul Excel - Club d'entraide des développeurs francophones




pour ta deuxième question, je ne sais pas s'il existe des outils de synchronisation. Tu pourrais eventuellement créer des macros qui importent ou exportent les données du carnet d'adresse.



exemple de macro qui importe la base des contacts dans la feuille de calcul:

Code:
Sub ExtraireContactsOutlook()
    'Nécessite d'activer la référence "Microsoft Outlook xx.x Object Library"
    
    '
    'Créé avec Office 2007
    '
    
    Dim olApp As Outlook.Application
    Dim dossierContacts As Outlook.MAPIFolder
    Dim Contact As Outlook.ContactItem
    Dim i As Integer, j As Integer
    
    Set olApp = New Outlook.Application
    Set dossierContacts = olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
    
    'Verifie si le dossier des contacts contient des éléments
    If dossierContacts.Items.Count = 0 Then Exit Sub
    
    'Création d'un entête dans la 1ere ligne
    j = 1
    For i = 0 To dossierContacts.Items(1).ItemProperties.Count - 1
        Cells(j, i + 1) = dossierContacts.Items(1).ItemProperties.Item(i).Name
    Next i
    
    On Error Resume Next
    
    'Boucle sur les éléments pour récupérer les infos
    For Each Contact In dossierContacts.Items
        j = j + 1
        For i = 0 To Contact.ItemProperties.Count - 1
            Cells(j, i + 1) = Contact.ItemProperties.Item(i).Value
        Next i
    Next Contact
    
    Columns.AutoFit
    MsgBox "Opération terminée."
End Sub




Bonne journée
MichelXld
 

Sonia z

XLDnaute Nouveau
Re : Lier une cellule excel à 1 contact outlook

Merci beaucoup

je vais me pencher là dessus, pour le moment c'est un peu du chinois pour moi, je suis une vraie débutante en macro et VB ;)
et excel sans cela jusqu'à présent c'était bien mais c'était passer à côté d'une bonne partie des possibilités du programme...faut que je m'y mette !
 

Sonia z

XLDnaute Nouveau
Re : Lier une cellule excel à 1 contact outlook

J'ai essayé sur la question "importante"

Mais quand j'exécute ça m'indique une boite de dialogue "Erreur de compilation : Type défini par l'utilisateur non défini" (rien de plus dans l'aide) et lorsque je mets ok ça souligne "olApp As Outlook.Application"

J'ai du louper une étape préliminaire, mais laquelle ? Comment définir ce "Type" ?

Merci
 

Sonia z

XLDnaute Nouveau
Re : Lier une cellule excel à 1 contact outlook

Décidément trop débutante j'y arrive pas

La formule toute seule fonctionne mais seulement sur la cellule pour laquelle j'indique le nom exemple : '" & Range("BC6") & "'")

J'ai regardé et essayé plusieurs choses du côté des évènements mais soit je n'ai pas su m'en servir soit ça n'est pas par là que je vais trouver comment faire pour que ce bout de code fonctionne quelquesoit la ligne de ma colonne BC...
:(
 

MichelXld

XLDnaute Barbatruc
Re : Lier une cellule excel à 1 contact outlook

bonjour


Si par exemple les données sont dans la colonne BC et que tu utilises l'évènement double clic dans les cellules:

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    '
    '...
    '
    Set Contact = dossierContacts.Items.Find _
        ("[Email1Address] = '" & Range("BC" & Target.Row) & "'")
    
    '
    '...
    '
End Sub



Bonne journée
MichelXld
 

Sonia z

XLDnaute Nouveau
Re : Lier une cellule excel à 1 contact outlook

La poisse ces débutants ;)...

j'ai maintenant une erreur d'exécution 424 avec
Set contact = dossierContacts.Items.Find _
("[Email1Address] = '" & Range("BC" & Target.Row) & "'")
surligné en jaune

J'ai mis le code pour ouvrir le lien outlook dans module 1 et changé le nom de cellule de BC6 en BC tout court (la colonne)
et le code pour le double clic dans la feuille 2 du dossier "microsoft excel objets"...est-ce que mon erreur vient de là ?

Merci pour votre patience ;)
 
Dernière édition:

Johan344

XLDnaute Nouveau
Re : Lier une cellule excel à 1 contact outlook

Bonjour,
J'espère ne pas déroger à l'esprit du site mais je recherche un programmeur capable d'automatiser une synchronisation entre "certaines données" d' un fichier .csv et outlook

En effet, j'utilise un logiciel pro dont la seule sortie des contacts se fait en .csv

J'ajoute des contacts tous les jours dans ce logiciel et j'aimerais pouvoir synchroniser certaines données avec outlook de manière rapide.

Pour le moment, je suis obliger d'éditer mon .CSV, de choisir les champs de fusion pour pouvoir importer mes contacts. ce qui est fastidieux.

Le principe serait que j'édite un nouveau .csv tous les jours, qui remplacerait celui de la veille (même nom) et que Outlook viennent donc chercher les infos directement dedans.

Je suis prêt à rémunérer la personne. (espérant ne pas créer de trouble sur le forum, ce n'est pas mon but)

Johan


bonjour


Si par exemple les données sont dans la colonne BC et que tu utilises l'évènement double clic dans les cellules:

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    '
    '...
    '
    Set Contact = dossierContacts.Items.Find _
        ("[Email1Address] = '" & Range("BC" & Target.Row) & "'")
    
    '
    '...
    '
End Sub



Bonne journée
MichelXld
 

hogane

XLDnaute Nouveau
Re : Lier une cellule excel à 1 contact outlook

Code:
    Dim olApp As Outlook.Application
    Dim dossierContacts As Outlook.MAPIFolder
    Dim Contact As Outlook.ContactItem
    
    Set olApp = New Outlook.Application
    Set dossierContacts = olApp.GetNamespace("MAPI"). _
        GetDefaultFolder(olFolderContacts)
    
    'Recherche le contact dont le nom est saisi dans la cellule
    Set Contact = dossierContacts.Items.Find _
        ("[Email1Address] = '" & Range("A1") & "'")
    If Not Contact Is Nothing Then
        Contact.Display
        Else
        MsgBox "Non trouvé."
    End If

Bonjour,

Elle fonctionne très bien cette macro, Merci.
Est-il possible au lieu de lier la cellule au carnet de contact local (olFolderContacts), de lier à un carnet de contact dans les dossiers publics via un serveur Exchange, \\Dossiers publics\Tous les dossiers publics\...\Contacts?
(Je suis conscient que ça n'a plus grand chose a voir avec Excel, mais ca fait un moment que je cherche et je trouve pas)
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 422
Membres
103 206
dernier inscrit
diambote