Importer carnet adresse Outlook

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Regueiro

XLDnaute Impliqué
Bonsoir le Forum
J'ai regarder un peu partout sur le forum et sur web, mais je n'ai rien trouver.
je m'explique.
J'aimerai visionner mon carnet d'adresse Outlook depuis excel.
Admettons que sur la cellule A1 je click et que un USF ou autre s'ouvre et que je puisse rechercher
dans mon carnet un contact le valider et ainsi il se positionne sur la cellule A.
A1 : Entreprise
B1 : M. Nom + Prénom
C1 : Adresse
D1 : CP + Ville
E1 : Téléphone
Etc
Je vous remercie d'avance de votre aide.
 
Re : Importer carnet adresse Outlook

bonjour

vous pouvez avoir votre carnet adresse

tous les contacts sur out-look se transfèrent sur excel

nom- prénom- émail


j'ai inspiré ce classeur depuis le site

Formation Excel VBA JB
 

Pièces jointes

Re : Importer carnet adresse Outlook

bonjour,

un autre exemple ici. Modifier la cellule D4.

VB:
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 = "$D$4" Then Exit Sub
            Set olApp = New Outlook.Application
            Set dossierContacts = _
                olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
         
        Dim s, i#, txt$
        For Each Cible In dossierContacts.Items
          Resultat = Resultat & Cible.LastName & ","
        Next
        s = Split(Resultat, ",")
1         For i = 1 To UBound(s)
          txt = s(i)
          If LCase(txt) < LCase(s(i - 1)) Then 'tri croissant
             s(i) = s(i - 1)
             s(i - 1) = txt
             GoTo 1
          End If
        Next
        Resultat = Join(s, ",")
        Range("D4").Validation.Delete
        Range("D4").Validation.Add xlValidateList, _
          Formula1:=Resultat
         
            Set Cible = Nothing
            Set dossierContacts = Nothing
            'olApp.Quit
            Set olApp = Nothing
         
          ' Si le changement du nom en D4 ne c'est pas fait, on sort
          If Not Target.Address = "$D$4" Then Exit Sub
          On Error GoTo Fin
          Application.EnableEvents = False
          Recherche = Range("D4")
          Set olApp = New Outlook.Application
          Set dossierContacts = olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
          Set Cible = dossierContacts.Items.Find("[LastName] = '" & Recherche & "'")
          If Not Cible Is Nothing Then
            Range("G1") = Cible.CompanyName
            Range("G2") = Cible.FullName
            Range("G3") = Cible.BusinessAddressStreet
            Range("G4") = Cible.BusinessAddressPostalCode
            Range("H4") = Cible.BusinessAddressCity
            Range("G5") = Cible.BusinessTelephoneNumber
            Sheets("Lettre").Range("F12") = Cible.Email1Address
          Else
            MsgBox "Aucun contact trouvé avec le nom : " & Recherche, vbInformation, "OUPS ..."
          End If
Fin:
          Application.EnableEvents = True
          Set Cible = Nothing
          Set dossierContacts = Nothing
          olApp.Quit
          Set olApp = Nothing
         
        End Sub
 

Pièces jointes

Re : Importer carnet adresse Outlook

Bonsoir à tous les 2
Je vous remercie pour votre aide.
j'ai appliqué le code de softmama qui est plus approprié pour mon cas.
Je l'ai essaye en mode non protégé et cela marche parfaitement.

j'ai quelques questions ?
1. Mon document est protégé par un MDP pour la feuille et le classeur
et à ce moment là il y a bug

Capture.PNG

2. Est-il possible de faire la recherche avec plusieurs critères :
Nom de société ou Nom de famille

3. J'aimerais Ranger dans la même cellule Cible.BusinessAddressPostalCode - espace - Cible.BusinessAddressCity
Comment dois-je faire

Merci de votre aide ?
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    7.9 KB · Affichages: 166
  • Capture.PNG
    Capture.PNG
    7.9 KB · Affichages: 166
Re : Importer carnet adresse Outlook

Bonjour,

Avec le même principe :
En D4, le LastName, En D5 le CompagnyName..
Vois si cela te convient
VB:
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
          Dim Pwd as string
'******************** Mot de passe à adapter : ***********
Pwd = "MDP"
'******************** Déprotection de la feuille  ***********
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
          Dim Pwd As String
'******************** Mot de passe à adapter : ***********
Pwd = "MDP"
'******************** Déprotection de la feuille  ***********
ActiveSheet.Unprotect Pwd
'****************************************************
         
              If (Not Target.Address = "$D$4") And (Not Target.Address = "$D$5") Then Exit Sub
            Set olApp = New Outlook.Application
            Set dossierContacts = _
                olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
         
        Dim s, i#, txt$
        For Each Cible In dossierContacts.Items
          Resultat = Resultat & Cible.LastName & ","
        Next
        s = Split(Resultat, ",")
1         For i = 1 To UBound(s)
          txt = s(i)
          If LCase(txt) < LCase(s(i - 1)) Then 'tri croissant
            s(i) = s(i - 1)
             s(i - 1) = txt
             GoTo 1
          End If
        Next
        Resultat = Join(s, ",")
        Range("D4").Validation.Delete
        Range("D4").Validation.Add xlValidateList, Formula1:=Resultat
        
        '************************* Ajout de la 2ème condition en D5
        For Each Cible In dossierContacts.Items
          Resultat = Resultat & Cible.CompanyName & ","
        Next
        s = Split(Resultat, ",")
2         For i = 1 To UBound(s)
          txt = s(i)
          If LCase(txt) < LCase(s(i - 1)) Then 'tri croissant
            s(i) = s(i - 1)
             s(i - 1) = txt
             GoTo 2
          End If
        Next
        Resultat = Join(s, ",")
        Range("D5").Validation.Delete
        Range("D5").Validation.Add xlValidateList, Formula1:=Resultat
         
            Set Cible = Nothing
            Set dossierContacts = Nothing
            'olApp.Quit
           Set olApp = Nothing
         
          ' Si le changement du nom en D4 ne c'est pas fait, on sort
         If Not Target.Address = "$D$4" And Not Target.Address = "$D$5" Then Exit Sub
          On Error GoTo Fin
          Application.EnableEvents = False
          Recherche = Target
          Set olApp = New Outlook.Application
          Set dossierContacts = olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
          Set Cible = dossierContacts.Items.Find("[" & IIf(Target.Row = 4, "LastName", "CompanyName") & "] = '" & Recherche & "'")
          If Not Cible Is Nothing Then
            Range("G1") = IIf(Target.Row = 4, Cible.CompanyName, Cible.LastName)
            Range("G2") = Cible.FullName
            Range("G3") = Cible.BusinessAddressStreet
'****************************************************************************
            Range("G4") = Cible.BusinessAddressPostalCode & " " & Cible.BusinessAddressCity
            Range("G5") = Cible.BusinessTelephoneNumber
            Sheets("Lettre").Range("F12") = Cible.Email1Address
          Else
            MsgBox "Aucun contact trouvé avec le nom : " & Recherche, vbInformation, "OUPS ..."
          End If
Fin:
          Application.EnableEvents = True
          Set Cible = Nothing
          Set dossierContacts = Nothing
          olApp.Quit
          Set olApp = Nothing
         
End Sub
 

Pièces jointes

Re : Importer carnet adresse Outlook

Bonsoir le Forum
Softmama, j'ai appliqué ton code pour le MDP.
Cela marche, en effet cela enlève le MDP de la feuille et du classeur.
Mais j'aimerais que cela soit temporaire, uniquement lorsque je selectionne la cellule.
Et après le document de nouveau être protéger ( feuiller et classeur )
Merci de votre réponse.
 
Re : Importer carnet adresse Outlook

bonjour,
tu ajoutes "ActiveSheet.Protect Pwd" juste avant le "end sub"
à+

sinon, jette un oeil sur le fichier joint, c'est celui que j'utilise (nettoyé), en fait je fait un import des contacts outlook, 2-3 mise en forme et traitements
l'intérêt, c'est que je réutilise ces infos dans d'autres fichiers
 

Pièces jointes

Dernière édition:
Re : Importer carnet adresse Outlook

Bonsoir le Forum
J'ai essayé avec le code suivant :
Le problème, il faut 2 minutes pour remplir L17 chaque fois que change de contact en T17.
Après 2 minutes apparaît chaque fois le message suivant


Capture.PNG

Dois-je avoir Outlook ouvert, pour un accès plus rapide ?


Private Sub Worksheet_Change(ByVal Target As Range)
'PROCEDURE POUR OUVRIR OUTLOOK CONTACT
Dim olApp As Outlook.Application
Dim Cible As Outlook.ContactItem
Dim dossierContacts As Outlook.MAPIFolder
Dim Recherche As String
Dim Pwd As String
'******************** Mot de passe à adapter : ***********
Pwd = "MDP"
'******************** Déprotection de la feuille ***********
ActiveSheet.Unprotect Pwd
'****************************************************

If Not Target.Address = "$T$17" Then Exit Sub
Set olApp = New Outlook.Application
Set dossierContacts = _
olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)

Dim s, i#, txt$
For Each Cible In dossierContacts.Items
Resultat = Resultat & Cible.LastName & ","
Next
s = Split(Resultat, ",")
1 For i = 1 To UBound(s)
txt = s(i)
If LCase(txt) < LCase(s(i - 1)) Then 'tri croissant
s(i) = s(i - 1)
s(i - 1) = txt
GoTo 1
End If
Next
Resultat = Join(s, ",")
Range("T17").Validation.Delete
Range("T17").Validation.Add xlValidateList, _
Formula1:=Resultat

Set Cible = Nothing
Set dossierContacts = Nothing
'olApp.Quit
Set olApp = Nothing

' Si le changement du nom en D4 ne c'est pas fait, on sort
If Not Target.Address = "$T$17" Then Exit Sub
On Error GoTo Fin
Application.EnableEvents = False
Recherche = Range("T17")
Set olApp = New Outlook.Application
Set dossierContacts = olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
Set Cible = dossierContacts.Items.Find("[LastName] = '" & Recherche & "'")
If Not Cible Is Nothing Then
Range("L17") = Cible.CompanyName
Range("L18") = Cible.FullName
Range("L19") = Cible.BusinessAddressStreet
Range("L20") = Cible.BusinessAddressPostalCode & " " & Cible.BusinessAddressCity
Range("L21") = Cible.BusinessAddressState & " / " & Cible.BusinessAddressCountry
Range("P17") = " TEL1 : " & Cible.BusinessTelephoneNumber
Range("P18") = " TEL2 : " & Cible.Business2TelephoneNumber
Range("P19") = " FAX : " & Cible.BusinessFaxNumber
Range("P20") = " " & Cible.Email1Address
Range("P21") = " NATEL : " & Cible.MobileTelephoneNumber
Else
MsgBox "Aucun contact trouvé avec le nom : " & Recherche, vbInformation, "OUPS ..."
End If
Fin:
Application.EnableEvents = True
Set Cible = Nothing
Set dossierContacts = Nothing
olApp.Quit
Set olApp = Nothing
End Sub

Merci de votre aide
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    36.1 KB · Affichages: 195
  • Capture.PNG
    Capture.PNG
    36.1 KB · Affichages: 189
Re : Importer carnet adresse Outlook

Bonjour,
A tester dans outlook : outils=>centre de gestion de la confidentialité=>accès par programme=>régler sur "ne jamais m'avertir des activités douteuse".
Lancer ta macro et faire des tests pour voir si ce message apparaît toujours.

Sinon, voir également ce lien proposé par Zon et le code proposé par Michel dans cette discussion.
A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour