relié un classeur excel à la base contacts de Outlook

Margouillats

XLDnaute Nouveau
Bonjour à tous,

une âme charitable serait-elle assez sympa pour m'aider à relier ma base Contacts à des classeurs Excel.

J'aimerais en fait l'utilisé comme base de contacts pour produire des documents de type devis.

Merci d'avance
 

Dan

XLDnaute Barbatruc
Re : relié un classeur excel à la base contacts de Outlook

Bonjour,

Avec cette procédure :
- Sous outlook vas dans menu / fichier / exporter
- Dans la fenêtre sélectionne "exporter des données vers un fichier" et clique sur "suivant"
choisis "microsoft excel"
- sélectionne le dossier "contact" ou une autre si tes contacts sont dans un autre
- Clique sur "parcourir" pour sélectionner le répertoire et éventuellement le fichier (si tu dois en créer un nouveau, il te suffit de mettre un nouveau nom dans la rubrique "nom du fichier" en dessous)
- En cliquant sur "suivant" puis sur "champ personnalisé", tu vas pouvoir sélectionner dans une nouvelle fenêtre les champs que tu veux exporter
- Clique sur "terminer"

A te lire
 

Margouillats

XLDnaute Nouveau
Re : relié un classeur excel à la base contacts de Outlook

Bonjour Dan,

Tout d'abord merci pour ta réponse. Je pense ne pas mettre très bien exprimé. Ce que je veux ce n'est pas d'exporter mon carnet d'adresse mais le lier à un classeur excel pour m'en servir comme base de donnée.

Je veux que si je rentre un nouveau contact dans Outlook, je puisse l'utilisé dans mon tableau sans devoir re-exporter mes contacts Outlook.

J'espère avoir été plus clair et te remercie encore une fois pour tes lumières

A+
 

MichelXld

XLDnaute Barbatruc
Re : relié un classeur excel à la base contacts de Outlook

bonjour à vous deux

Cet exemple Necessite d'Activer la reference Microsoft Outlook xx.x Object Library

Les 2 procédures evenementielles doivent etre placées au niveau de la feuille qui va recuperer les données.


La première partie permet de créer une liste de validation dans la cellule A1 à partir du champ "Société" contenu dans la liste des contacts Outlook.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim olApp As Outlook.Application
    Dim Cible As Outlook.ContactItem
    Dim dossierContacts As Outlook.MAPIFolder
    Dim Resultat As String
 
    If Not Target.Address = "$A$1" Then Exit Sub
 
    Set olApp = New Outlook.Application
    Set dossierContacts = _
        olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
 
    For Each Cible In dossierContacts.Items
        Resultat = Resultat & Cible.CompanyName & ";"
    Next
 
    Range("A1").Validation.Delete
    Range("A1").Validation.Add xlValidateList, _
                Formula1:=Left(Resultat, Len(Resultat) - 1)
    Set Cible = Nothing
    Set dossierContacts = Nothing
    'olApp.Quit
    Set olApp = Nothing
End Sub


La deuxieme partie:
Lorsque tu sélectionnes un élément (nom de société) dans la cellule A1, une recherche est effectuée dans la liste des contacts Outlook pour récupérer les champs "Nom complet", "Rue", "Code postal", "Ville"

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim olApp As Outlook.Application
    Dim Cible As Outlook.ContactItem
    Dim dossierContacts As Outlook.MAPIFolder
    Dim Recherche As String
 
    If Not Target.Address = "$A$1" Then Exit Sub
 
    On Error GoTo Fin
    Application.EnableEvents = False
 
    Recherche = Range("A1")
 
    Set olApp = New Outlook.Application
    Set dossierContacts = olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
 
    Set Cible = dossierContacts.Items.Find("[CompanyName] = '" & Recherche & "'")
    If Not Cible Is Nothing Then
        Range("B1") = Cible.FullName
        Range("C1") = Cible.BusinessAddressStreet
        Range("D1") = Cible.BusinessAddressPostalCode
        Range("E1") = Cible.BusinessAddressCity
    End If
 
 
Fin:
Application.EnableEvents = True
    Set Cible = Nothing
    Set dossierContacts = Nothing
    'olApp.Quit
    Set olApp = Nothing
End Sub


bonne soirée
MichelXld
 
Dernière édition:

Margouillats

XLDnaute Nouveau
Re : relié un classeur excel à la base contacts de Outlook

MichelXld à dit:
bonjour à vous deux

Cet exemple Necessite d'Activer la reference Microsoft Outlook xx.x Object Library

Les 2 procédures evenementielles doivent etre placées au niveau de la feuille qui va recuperer les données.


La première partie permet de créer une liste de validation dans la cellule A1 à partir de la liste du champ "Société" contenu dans la liste des contacts Outlook.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim olApp As Outlook.Application
    Dim Cible As Outlook.ContactItem
    Dim dossierContacts As Outlook.MAPIFolder
    Dim Resultat As String
 
    If Not Target.Address = "$A$1" Then Exit Sub
 
    Set olApp = New Outlook.Application
    Set dossierContacts = _
        olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
 
    For Each Cible In dossierContacts.Items
        Resultat = Resultat & Cible.CompanyName & ";"
    Next
 
    Range("A1").Validation.Delete
    Range("A1").Validation.Add xlValidateList, _
                Formula1:=Left(Resultat, Len(Resultat) - 1)
    Set Cible = Nothing
    Set dossierContacts = Nothing
    'olApp.Quit
    Set olApp = Nothing
End Sub


La deuxieme partie:
Lorsque tu sélectionnes un élément (nom de société) dans la cellule A1, une recherche est effectuée dans la liste des contacts Outlook pour récupérer les champs "Nom complet", "Rue", "Code postal", "Ville"

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim olApp As Outlook.Application
    Dim Cible As Outlook.ContactItem
    Dim dossierContacts As Outlook.MAPIFolder
    Dim Recherche As String
 
    If Not Target.Address = "$A$1" Then Exit Sub
 
    On Error GoTo Fin
    Application.EnableEvents = False
 
    Recherche = Range("A1")
 
    Set olApp = New Outlook.Application
    Set dossierContacts = olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
 
    Set Cible = dossierContacts.Items.Find("[CompanyName] = '" & Recherche & "'")
    If Not Cible Is Nothing Then
        Range("B1") = Cible.FullName
        Range("C1") = Cible.BusinessAddressStreet
        Range("D1") = Cible.BusinessAddressPostalCode
        Range("E1") = Cible.BusinessAddressCity
    End If
 
 
Fin:
Application.EnableEvents = True
    Set Cible = Nothing
    Set dossierContacts = Nothing
    'olApp.Quit
    Set olApp = Nothing
End Sub


bonne soirée
MichelXld


Merci pour cette info, je vais de ce pas essayer ce code.

Question subsidiaire : penses-tu que je puisse enregistrer ce code dans différents classeurs qui vont me servir de modèles pour de nouveaux documents type devis.

Je te remercie encore pour le temps que tu veux bien accorder à mon pb.

Margouillats
 

Jouxte

XLDnaute Occasionnel
Re : relier un classeur excel à la base contacts de Outlook

Bonjour à toutes et tous,

Je relance ce fil n'ayant pas réussi à faire fonctionner la macro ci-dessus.

Je joins un petit fichier test.
A l'origine j'avais créé une feuille excel spécifique avec les contacts, mais si je pouvais utiliser directement les contacts d'Outlook ce serait mieux.
Merci par avance à celles et ceux qui voudront bien réfléchir sur ce sujet.
 

Pièces jointes

  • Copie Test.zip
    27.1 KB · Affichages: 92
  • Copie Test.zip
    27.1 KB · Affichages: 96
  • Copie Test.zip
    27.1 KB · Affichages: 94

Jouxte

XLDnaute Occasionnel
Re : relié un classeur excel à la base contacts de Outlook

Bonjour à toutes et tous

Je relance ce fil n'ayant pas eu de réponse positive à mes posts précédents.
Peut-être d'ailleurs n'y a-t-il pas de solution.
Si l'un, où l'une d'entre vous, pouvait se pencher sur ce problème, ça me ferait très plaisir.
Bon courage.
 

Discussions similaires

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22