Salut le NG,
Il y a queques mois, j'avais poser la question suivante : comment
recuperer les contacts de outlook pour les utiliser dans word ?
N'ayant pas obtenu de reponses concretes (propositions de
publipostage), j'ai du jouer du clavier. A l'epoque je vous avais
propose le code si j'y arrivais ... c'est chose faite, donc voici le
resultat de mes reflections.
P.S. : pour que ca fonctionne bien, il faut verifier la reference
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Bonne journee a tous.
JLuc
Option Explicit
' Déclaration des variables
Dim present As Boolean
Dim chemin As String
Dim namefile As String
Dim TableOutlook() As String
Dim variable(1, 1 To 3) As String
Dim define_emetteur As String
Dim define_dest As String
Dim define_societe As String
Dim define_objet As String
Dim define_fax As String
Dim define_nbr As Integer
Dim define_date As String
Dim define_numero As Integer
Private Sub UserForm_Initialize()
Dim ol As Outlook.Application
Dim ns As Outlook.NameSpace
Dim fld As Outlook.MAPIFolder
Dim itm As Outlook.ContactItem
Dim i, x, y, pos As Integer
Dim entry As Template
Dim NumeroFax As Integer
ComboBox1.ColumnCount = 3
' Reference a un objet Outlook
On Error Resume Next
Set ol = GetObject(, "Outlook.Application")
' Si pas ouvert (Outlook) creation
If Err.Number <> 0 Then
Set ol = CreateObject("Outlook.Application")
End If
On Error GoTo 0
' Creation d'un objet Namespace
Set ns = ol.GetNamespace("MAPI")
On Error Resume Next
' Creation d'un objet MapiFolder
Set fld = ns.GetDefaultFolder(olFolderContacts)
' Redimentionnement du tableau
ReDim TableOutlook(1 To fld.Items.Count, 1 To 3)
' Recuperation de tous les enregistrements
For i = 1 To fld.Items.Count
Set itm = fld.Items(i)
TableOutlook(i, 1) = itm.CompanyName
TableOutlook(i, 2) = itm.FullName
TableOutlook(i, 3) = itm.BusinessFaxNumber
Next i
Set ol = Nothing
' Trie du tableau ****************************************************
For x = 1 To UBound(TableOutlook)
variable(1, 1) = TableOutlook(x, 1)
variable(1, 2) = TableOutlook(x, 2)
variable(1, 3) = TableOutlook(x, 3)
pos = x
If x < UBound(TableOutlook) Then
For y = x + 1 To UBound(TableOutlook)
Select Case variable(1, 1)
Case Is = TableOutlook(y, 1)
If variable(1, 2) > TableOutlook(y, 2) Then
variable(1, 1) = TableOutlook(y, 1)
variable(1, 2) = TableOutlook(y, 2)
variable(1, 3) = TableOutlook(y, 3)
pos = y
End If
Case Is > TableOutlook(y, 1)
variable(1, 1) = TableOutlook(y, 1)
variable(1, 2) = TableOutlook(y, 2)
variable(1, 3) = TableOutlook(y, 3)
pos = y
End Select
Next
TableOutlook(pos, 1) = TableOutlook(x, 1)
TableOutlook(pos, 2) = TableOutlook(x, 2)
TableOutlook(pos, 3) = TableOutlook(x, 3)
End If
TableOutlook(x, 1) = variable(1, 1)
TableOutlook(x, 2) = variable(1, 2)
TableOutlook(x, 3) = variable(1, 3)
Next
' Fin de trie ********************************************************
' Recuperation des infos
ComboBox1.List() = TableOutlook()
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
AB
Bonjour,
Ce n'est pas tous les jours, par les temps qui courent, qu'on peut tirer son chapeau à quelqu'un. Je n'ai pas testé ton code : je laisse ce soin à d'autres plus concernés que moi. Mais je tiens à te remercier (et je pense que je peux le faire au nom de tous)de le partager avec les autres membres de ce forum. Chapeau, Jean Luc ! André
"JLuc" a écrit dans le message de news:
Salut le NG, Il y a queques mois, j'avais poser la question suivante : comment recuperer les contacts de outlook pour les utiliser dans word ?
N'ayant pas obtenu de reponses concretes (propositions de publipostage), j'ai du jouer du clavier. A l'epoque je vous avais propose le code si j'y arrivais ... c'est chose faite, donc voici le resultat de mes reflections. P.S. : pour que ca fonctionne bien, il faut verifier la reference "Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter. Bonne journee a tous. JLuc
Option Explicit
' Déclaration des variables Dim present As Boolean Dim chemin As String Dim namefile As String Dim TableOutlook() As String Dim variable(1, 1 To 3) As String Dim define_emetteur As String Dim define_dest As String Dim define_societe As String Dim define_objet As String Dim define_fax As String Dim define_nbr As Integer Dim define_date As String Dim define_numero As Integer
Private Sub UserForm_Initialize() Dim ol As Outlook.Application Dim ns As Outlook.NameSpace Dim fld As Outlook.MAPIFolder Dim itm As Outlook.ContactItem Dim i, x, y, pos As Integer Dim entry As Template Dim NumeroFax As Integer
ComboBox1.ColumnCount = 3 ' Reference a un objet Outlook On Error Resume Next Set ol = GetObject(, "Outlook.Application")
' Si pas ouvert (Outlook) creation If Err.Number <> 0 Then Set ol = CreateObject("Outlook.Application") End If On Error GoTo 0
' Creation d'un objet Namespace Set ns = ol.GetNamespace("MAPI") On Error Resume Next
' Creation d'un objet MapiFolder Set fld = ns.GetDefaultFolder(olFolderContacts)
' Redimentionnement du tableau ReDim TableOutlook(1 To fld.Items.Count, 1 To 3)
' Recuperation de tous les enregistrements For i = 1 To fld.Items.Count Set itm = fld.Items(i) TableOutlook(i, 1) = itm.CompanyName TableOutlook(i, 2) = itm.FullName TableOutlook(i, 3) = itm.BusinessFaxNumber Next i Set ol = Nothing
' Trie du tableau **************************************************** For x = 1 To UBound(TableOutlook) variable(1, 1) = TableOutlook(x, 1) variable(1, 2) = TableOutlook(x, 2) variable(1, 3) = TableOutlook(x, 3) pos = x If x < UBound(TableOutlook) Then For y = x + 1 To UBound(TableOutlook) Select Case variable(1, 1) Case Is = TableOutlook(y, 1) If variable(1, 2) > TableOutlook(y, 2) Then variable(1, 1) = TableOutlook(y, 1) variable(1, 2) = TableOutlook(y, 2) variable(1, 3) = TableOutlook(y, 3) pos = y End If Case Is > TableOutlook(y, 1) variable(1, 1) = TableOutlook(y, 1) variable(1, 2) = TableOutlook(y, 2) variable(1, 3) = TableOutlook(y, 3) pos = y End Select Next TableOutlook(pos, 1) = TableOutlook(x, 1) TableOutlook(pos, 2) = TableOutlook(x, 2) TableOutlook(pos, 3) = TableOutlook(x, 3) End If TableOutlook(x, 1) = variable(1, 1) TableOutlook(x, 2) = variable(1, 2) TableOutlook(x, 3) = variable(1, 3) Next ' Fin de trie ********************************************************
' Recuperation des infos ComboBox1.List() = TableOutlook()
Bonjour,
Ce n'est pas tous les jours, par les temps qui courent, qu'on peut tirer son
chapeau à quelqu'un. Je n'ai pas testé ton code : je laisse ce soin à
d'autres plus concernés que moi. Mais je tiens à te remercier (et je pense
que je peux le faire au nom de tous)de le partager avec les autres membres
de ce forum.
Chapeau, Jean Luc !
André
"JLuc" <ns.jeanluc.laurent@free.fr.ns> a écrit dans le message de news:
mn.7c107d5a5fce102c.40692@free.fr.ns...
Salut le NG,
Il y a queques mois, j'avais poser la question suivante : comment
recuperer les contacts de outlook pour les utiliser dans word ?
N'ayant pas obtenu de reponses concretes (propositions de publipostage),
j'ai du jouer du clavier. A l'epoque je vous avais propose le code si j'y
arrivais ... c'est chose faite, donc voici le resultat de mes reflections.
P.S. : pour que ca fonctionne bien, il faut verifier la reference
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Bonne journee a tous.
JLuc
Option Explicit
' Déclaration des variables
Dim present As Boolean
Dim chemin As String
Dim namefile As String
Dim TableOutlook() As String
Dim variable(1, 1 To 3) As String
Dim define_emetteur As String
Dim define_dest As String
Dim define_societe As String
Dim define_objet As String
Dim define_fax As String
Dim define_nbr As Integer
Dim define_date As String
Dim define_numero As Integer
Private Sub UserForm_Initialize()
Dim ol As Outlook.Application
Dim ns As Outlook.NameSpace
Dim fld As Outlook.MAPIFolder
Dim itm As Outlook.ContactItem
Dim i, x, y, pos As Integer
Dim entry As Template
Dim NumeroFax As Integer
ComboBox1.ColumnCount = 3
' Reference a un objet Outlook
On Error Resume Next
Set ol = GetObject(, "Outlook.Application")
' Si pas ouvert (Outlook) creation
If Err.Number <> 0 Then
Set ol = CreateObject("Outlook.Application")
End If
On Error GoTo 0
' Creation d'un objet Namespace
Set ns = ol.GetNamespace("MAPI")
On Error Resume Next
' Creation d'un objet MapiFolder
Set fld = ns.GetDefaultFolder(olFolderContacts)
' Redimentionnement du tableau
ReDim TableOutlook(1 To fld.Items.Count, 1 To 3)
' Recuperation de tous les enregistrements
For i = 1 To fld.Items.Count
Set itm = fld.Items(i)
TableOutlook(i, 1) = itm.CompanyName
TableOutlook(i, 2) = itm.FullName
TableOutlook(i, 3) = itm.BusinessFaxNumber
Next i
Set ol = Nothing
' Trie du tableau ****************************************************
For x = 1 To UBound(TableOutlook)
variable(1, 1) = TableOutlook(x, 1)
variable(1, 2) = TableOutlook(x, 2)
variable(1, 3) = TableOutlook(x, 3)
pos = x
If x < UBound(TableOutlook) Then
For y = x + 1 To UBound(TableOutlook)
Select Case variable(1, 1)
Case Is = TableOutlook(y, 1)
If variable(1, 2) > TableOutlook(y, 2) Then
variable(1, 1) = TableOutlook(y, 1)
variable(1, 2) = TableOutlook(y, 2)
variable(1, 3) = TableOutlook(y, 3)
pos = y
End If
Case Is > TableOutlook(y, 1)
variable(1, 1) = TableOutlook(y, 1)
variable(1, 2) = TableOutlook(y, 2)
variable(1, 3) = TableOutlook(y, 3)
pos = y
End Select
Next
TableOutlook(pos, 1) = TableOutlook(x, 1)
TableOutlook(pos, 2) = TableOutlook(x, 2)
TableOutlook(pos, 3) = TableOutlook(x, 3)
End If
TableOutlook(x, 1) = variable(1, 1)
TableOutlook(x, 2) = variable(1, 2)
TableOutlook(x, 3) = variable(1, 3)
Next
' Fin de trie ********************************************************
' Recuperation des infos
ComboBox1.List() = TableOutlook()
Ce n'est pas tous les jours, par les temps qui courent, qu'on peut tirer son chapeau à quelqu'un. Je n'ai pas testé ton code : je laisse ce soin à d'autres plus concernés que moi. Mais je tiens à te remercier (et je pense que je peux le faire au nom de tous)de le partager avec les autres membres de ce forum. Chapeau, Jean Luc ! André
"JLuc" a écrit dans le message de news:
Salut le NG, Il y a queques mois, j'avais poser la question suivante : comment recuperer les contacts de outlook pour les utiliser dans word ?
N'ayant pas obtenu de reponses concretes (propositions de publipostage), j'ai du jouer du clavier. A l'epoque je vous avais propose le code si j'y arrivais ... c'est chose faite, donc voici le resultat de mes reflections. P.S. : pour que ca fonctionne bien, il faut verifier la reference "Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter. Bonne journee a tous. JLuc
Option Explicit
' Déclaration des variables Dim present As Boolean Dim chemin As String Dim namefile As String Dim TableOutlook() As String Dim variable(1, 1 To 3) As String Dim define_emetteur As String Dim define_dest As String Dim define_societe As String Dim define_objet As String Dim define_fax As String Dim define_nbr As Integer Dim define_date As String Dim define_numero As Integer
Private Sub UserForm_Initialize() Dim ol As Outlook.Application Dim ns As Outlook.NameSpace Dim fld As Outlook.MAPIFolder Dim itm As Outlook.ContactItem Dim i, x, y, pos As Integer Dim entry As Template Dim NumeroFax As Integer
ComboBox1.ColumnCount = 3 ' Reference a un objet Outlook On Error Resume Next Set ol = GetObject(, "Outlook.Application")
' Si pas ouvert (Outlook) creation If Err.Number <> 0 Then Set ol = CreateObject("Outlook.Application") End If On Error GoTo 0
' Creation d'un objet Namespace Set ns = ol.GetNamespace("MAPI") On Error Resume Next
' Creation d'un objet MapiFolder Set fld = ns.GetDefaultFolder(olFolderContacts)
' Redimentionnement du tableau ReDim TableOutlook(1 To fld.Items.Count, 1 To 3)
' Recuperation de tous les enregistrements For i = 1 To fld.Items.Count Set itm = fld.Items(i) TableOutlook(i, 1) = itm.CompanyName TableOutlook(i, 2) = itm.FullName TableOutlook(i, 3) = itm.BusinessFaxNumber Next i Set ol = Nothing
' Trie du tableau **************************************************** For x = 1 To UBound(TableOutlook) variable(1, 1) = TableOutlook(x, 1) variable(1, 2) = TableOutlook(x, 2) variable(1, 3) = TableOutlook(x, 3) pos = x If x < UBound(TableOutlook) Then For y = x + 1 To UBound(TableOutlook) Select Case variable(1, 1) Case Is = TableOutlook(y, 1) If variable(1, 2) > TableOutlook(y, 2) Then variable(1, 1) = TableOutlook(y, 1) variable(1, 2) = TableOutlook(y, 2) variable(1, 3) = TableOutlook(y, 3) pos = y End If Case Is > TableOutlook(y, 1) variable(1, 1) = TableOutlook(y, 1) variable(1, 2) = TableOutlook(y, 2) variable(1, 3) = TableOutlook(y, 3) pos = y End Select Next TableOutlook(pos, 1) = TableOutlook(x, 1) TableOutlook(pos, 2) = TableOutlook(x, 2) TableOutlook(pos, 3) = TableOutlook(x, 3) End If TableOutlook(x, 1) = variable(1, 1) TableOutlook(x, 2) = variable(1, 2) TableOutlook(x, 3) = variable(1, 3) Next ' Fin de trie ********************************************************
' Recuperation des infos ComboBox1.List() = TableOutlook()
JLuc
Je pense qu'il est normal d'avoir un retour pour des questions qui ont ete posees et qui ont recues des reponses (bonnes ou pas). Car si des contributeurs se sont penches decu, c'est que, quelque part, ca les interesse aussi ;o) J'ai repondu a quelques posts, que ce soit sur word ou excel et c'est assez frustrant quand on a pas de retour d'une solution proposee ! C'est pourquoi je m'applique a toujours repondre a ceux qui cherchent pour moi :oÞ A+ JLuc
Bonjour,
Ce n'est pas tous les jours, par les temps qui courent, qu'on peut tirer son chapeau à quelqu'un. Je n'ai pas testé ton code : je laisse ce soin à d'autres plus concernés que moi. Mais je tiens à te remercier (et je pense que je peux le faire au nom de tous)de le partager avec les autres membres de ce forum. Chapeau, Jean Luc ! André
"JLuc" a écrit dans le message de news:
Salut le NG, Il y a queques mois, j'avais poser la question suivante : comment recuperer les contacts de outlook pour les utiliser dans word ?
N'ayant pas obtenu de reponses concretes (propositions de publipostage), j'ai du jouer du clavier. A l'epoque je vous avais propose le code si j'y arrivais ... c'est chose faite, donc voici le resultat de mes reflections. P.S. : pour que ca fonctionne bien, il faut verifier la reference "Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter. Bonne journee a tous. JLuc
Option Explicit
' Déclaration des variables Dim present As Boolean Dim chemin As String Dim namefile As String Dim TableOutlook() As String Dim variable(1, 1 To 3) As String Dim define_emetteur As String Dim define_dest As String Dim define_societe As String Dim define_objet As String Dim define_fax As String Dim define_nbr As Integer Dim define_date As String Dim define_numero As Integer
Private Sub UserForm_Initialize() Dim ol As Outlook.Application Dim ns As Outlook.NameSpace Dim fld As Outlook.MAPIFolder Dim itm As Outlook.ContactItem Dim i, x, y, pos As Integer Dim entry As Template Dim NumeroFax As Integer
ComboBox1.ColumnCount = 3 ' Reference a un objet Outlook On Error Resume Next Set ol = GetObject(, "Outlook.Application")
' Si pas ouvert (Outlook) creation If Err.Number <> 0 Then Set ol = CreateObject("Outlook.Application") End If On Error GoTo 0
' Creation d'un objet Namespace Set ns = ol.GetNamespace("MAPI") On Error Resume Next
' Creation d'un objet MapiFolder Set fld = ns.GetDefaultFolder(olFolderContacts)
' Redimentionnement du tableau ReDim TableOutlook(1 To fld.Items.Count, 1 To 3)
' Recuperation de tous les enregistrements For i = 1 To fld.Items.Count Set itm = fld.Items(i) TableOutlook(i, 1) = itm.CompanyName TableOutlook(i, 2) = itm.FullName TableOutlook(i, 3) = itm.BusinessFaxNumber Next i Set ol = Nothing
' Trie du tableau **************************************************** For x = 1 To UBound(TableOutlook) variable(1, 1) = TableOutlook(x, 1) variable(1, 2) = TableOutlook(x, 2) variable(1, 3) = TableOutlook(x, 3) pos = x If x < UBound(TableOutlook) Then For y = x + 1 To UBound(TableOutlook) Select Case variable(1, 1) Case Is = TableOutlook(y, 1) If variable(1, 2) > TableOutlook(y, 2) Then variable(1, 1) = TableOutlook(y, 1) variable(1, 2) = TableOutlook(y, 2) variable(1, 3) = TableOutlook(y, 3) pos = y End If Case Is > TableOutlook(y, 1) variable(1, 1) = TableOutlook(y, 1) variable(1, 2) = TableOutlook(y, 2) variable(1, 3) = TableOutlook(y, 3) pos = y End Select Next TableOutlook(pos, 1) = TableOutlook(x, 1) TableOutlook(pos, 2) = TableOutlook(x, 2) TableOutlook(pos, 3) = TableOutlook(x, 3) End If TableOutlook(x, 1) = variable(1, 1) TableOutlook(x, 2) = variable(1, 2) TableOutlook(x, 3) = variable(1, 3) Next ' Fin de trie ********************************************************
' Recuperation des infos ComboBox1.List() = TableOutlook()
Je pense qu'il est normal d'avoir un retour pour des questions qui ont
ete posees et qui ont recues des reponses (bonnes ou pas). Car si des
contributeurs se sont penches decu, c'est que, quelque part, ca les
interesse aussi ;o)
J'ai repondu a quelques posts, que ce soit sur word ou excel et c'est
assez frustrant quand on a pas de retour d'une solution proposee !
C'est pourquoi je m'applique a toujours repondre a ceux qui cherchent
pour moi :oÞ
A+
JLuc
Bonjour,
Ce n'est pas tous les jours, par les temps qui courent, qu'on peut tirer son
chapeau à quelqu'un. Je n'ai pas testé ton code : je laisse ce soin à
d'autres plus concernés que moi. Mais je tiens à te remercier (et je pense
que je peux le faire au nom de tous)de le partager avec les autres membres de
ce forum.
Chapeau, Jean Luc !
André
"JLuc" <ns.jeanluc.laurent@free.fr.ns> a écrit dans le message de news:
mn.7c107d5a5fce102c.40692@free.fr.ns...
Salut le NG,
Il y a queques mois, j'avais poser la question suivante : comment recuperer
les contacts de outlook pour les utiliser dans word ?
N'ayant pas obtenu de reponses concretes (propositions de publipostage),
j'ai du jouer du clavier. A l'epoque je vous avais propose le code si j'y
arrivais ... c'est chose faite, donc voici le resultat de mes reflections.
P.S. : pour que ca fonctionne bien, il faut verifier la reference
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Bonne journee a tous.
JLuc
Option Explicit
' Déclaration des variables
Dim present As Boolean
Dim chemin As String
Dim namefile As String
Dim TableOutlook() As String
Dim variable(1, 1 To 3) As String
Dim define_emetteur As String
Dim define_dest As String
Dim define_societe As String
Dim define_objet As String
Dim define_fax As String
Dim define_nbr As Integer
Dim define_date As String
Dim define_numero As Integer
Private Sub UserForm_Initialize()
Dim ol As Outlook.Application
Dim ns As Outlook.NameSpace
Dim fld As Outlook.MAPIFolder
Dim itm As Outlook.ContactItem
Dim i, x, y, pos As Integer
Dim entry As Template
Dim NumeroFax As Integer
ComboBox1.ColumnCount = 3
' Reference a un objet Outlook
On Error Resume Next
Set ol = GetObject(, "Outlook.Application")
' Si pas ouvert (Outlook) creation
If Err.Number <> 0 Then
Set ol = CreateObject("Outlook.Application")
End If
On Error GoTo 0
' Creation d'un objet Namespace
Set ns = ol.GetNamespace("MAPI")
On Error Resume Next
' Creation d'un objet MapiFolder
Set fld = ns.GetDefaultFolder(olFolderContacts)
' Redimentionnement du tableau
ReDim TableOutlook(1 To fld.Items.Count, 1 To 3)
' Recuperation de tous les enregistrements
For i = 1 To fld.Items.Count
Set itm = fld.Items(i)
TableOutlook(i, 1) = itm.CompanyName
TableOutlook(i, 2) = itm.FullName
TableOutlook(i, 3) = itm.BusinessFaxNumber
Next i
Set ol = Nothing
' Trie du tableau ****************************************************
For x = 1 To UBound(TableOutlook)
variable(1, 1) = TableOutlook(x, 1)
variable(1, 2) = TableOutlook(x, 2)
variable(1, 3) = TableOutlook(x, 3)
pos = x
If x < UBound(TableOutlook) Then
For y = x + 1 To UBound(TableOutlook)
Select Case variable(1, 1)
Case Is = TableOutlook(y, 1)
If variable(1, 2) > TableOutlook(y, 2) Then
variable(1, 1) = TableOutlook(y, 1)
variable(1, 2) = TableOutlook(y, 2)
variable(1, 3) = TableOutlook(y, 3)
pos = y
End If
Case Is > TableOutlook(y, 1)
variable(1, 1) = TableOutlook(y, 1)
variable(1, 2) = TableOutlook(y, 2)
variable(1, 3) = TableOutlook(y, 3)
pos = y
End Select
Next
TableOutlook(pos, 1) = TableOutlook(x, 1)
TableOutlook(pos, 2) = TableOutlook(x, 2)
TableOutlook(pos, 3) = TableOutlook(x, 3)
End If
TableOutlook(x, 1) = variable(1, 1)
TableOutlook(x, 2) = variable(1, 2)
TableOutlook(x, 3) = variable(1, 3)
Next
' Fin de trie ********************************************************
' Recuperation des infos
ComboBox1.List() = TableOutlook()
Je pense qu'il est normal d'avoir un retour pour des questions qui ont ete posees et qui ont recues des reponses (bonnes ou pas). Car si des contributeurs se sont penches decu, c'est que, quelque part, ca les interesse aussi ;o) J'ai repondu a quelques posts, que ce soit sur word ou excel et c'est assez frustrant quand on a pas de retour d'une solution proposee ! C'est pourquoi je m'applique a toujours repondre a ceux qui cherchent pour moi :oÞ A+ JLuc
Bonjour,
Ce n'est pas tous les jours, par les temps qui courent, qu'on peut tirer son chapeau à quelqu'un. Je n'ai pas testé ton code : je laisse ce soin à d'autres plus concernés que moi. Mais je tiens à te remercier (et je pense que je peux le faire au nom de tous)de le partager avec les autres membres de ce forum. Chapeau, Jean Luc ! André
"JLuc" a écrit dans le message de news:
Salut le NG, Il y a queques mois, j'avais poser la question suivante : comment recuperer les contacts de outlook pour les utiliser dans word ?
N'ayant pas obtenu de reponses concretes (propositions de publipostage), j'ai du jouer du clavier. A l'epoque je vous avais propose le code si j'y arrivais ... c'est chose faite, donc voici le resultat de mes reflections. P.S. : pour que ca fonctionne bien, il faut verifier la reference "Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter. Bonne journee a tous. JLuc
Option Explicit
' Déclaration des variables Dim present As Boolean Dim chemin As String Dim namefile As String Dim TableOutlook() As String Dim variable(1, 1 To 3) As String Dim define_emetteur As String Dim define_dest As String Dim define_societe As String Dim define_objet As String Dim define_fax As String Dim define_nbr As Integer Dim define_date As String Dim define_numero As Integer
Private Sub UserForm_Initialize() Dim ol As Outlook.Application Dim ns As Outlook.NameSpace Dim fld As Outlook.MAPIFolder Dim itm As Outlook.ContactItem Dim i, x, y, pos As Integer Dim entry As Template Dim NumeroFax As Integer
ComboBox1.ColumnCount = 3 ' Reference a un objet Outlook On Error Resume Next Set ol = GetObject(, "Outlook.Application")
' Si pas ouvert (Outlook) creation If Err.Number <> 0 Then Set ol = CreateObject("Outlook.Application") End If On Error GoTo 0
' Creation d'un objet Namespace Set ns = ol.GetNamespace("MAPI") On Error Resume Next
' Creation d'un objet MapiFolder Set fld = ns.GetDefaultFolder(olFolderContacts)
' Redimentionnement du tableau ReDim TableOutlook(1 To fld.Items.Count, 1 To 3)
' Recuperation de tous les enregistrements For i = 1 To fld.Items.Count Set itm = fld.Items(i) TableOutlook(i, 1) = itm.CompanyName TableOutlook(i, 2) = itm.FullName TableOutlook(i, 3) = itm.BusinessFaxNumber Next i Set ol = Nothing
' Trie du tableau **************************************************** For x = 1 To UBound(TableOutlook) variable(1, 1) = TableOutlook(x, 1) variable(1, 2) = TableOutlook(x, 2) variable(1, 3) = TableOutlook(x, 3) pos = x If x < UBound(TableOutlook) Then For y = x + 1 To UBound(TableOutlook) Select Case variable(1, 1) Case Is = TableOutlook(y, 1) If variable(1, 2) > TableOutlook(y, 2) Then variable(1, 1) = TableOutlook(y, 1) variable(1, 2) = TableOutlook(y, 2) variable(1, 3) = TableOutlook(y, 3) pos = y End If Case Is > TableOutlook(y, 1) variable(1, 1) = TableOutlook(y, 1) variable(1, 2) = TableOutlook(y, 2) variable(1, 3) = TableOutlook(y, 3) pos = y End Select Next TableOutlook(pos, 1) = TableOutlook(x, 1) TableOutlook(pos, 2) = TableOutlook(x, 2) TableOutlook(pos, 3) = TableOutlook(x, 3) End If TableOutlook(x, 1) = variable(1, 1) TableOutlook(x, 2) = variable(1, 2) TableOutlook(x, 3) = variable(1, 3) Next ' Fin de trie ********************************************************
' Recuperation des infos ComboBox1.List() = TableOutlook()
Geo
J'ai répondu a quelques posts, que ce soit sur word ou excel et c'est assez frustrant quand on a pas de retour d'une solution proposée !
Bien d'accord
C'est pourquoi je m'applique a toujours répondre a ceux qui cherchent pour moi :oÞ
je m'associe à André pour t'en remercier.
Et je mets ça dans mon coffre à trésors.
J'ai répondu a quelques posts, que ce soit sur word ou excel et c'est
assez frustrant quand on a pas de retour d'une solution proposée !
Bien d'accord
C'est pourquoi je m'applique a toujours répondre a ceux qui cherchent
pour moi :oÞ
J'ai répondu a quelques posts, que ce soit sur word ou excel et c'est assez frustrant quand on a pas de retour d'une solution proposée !
Bien d'accord
C'est pourquoi je m'applique a toujours répondre a ceux qui cherchent pour moi :oÞ
je m'associe à André pour t'en remercier.
Et je mets ça dans mon coffre à trésors.
Jean-Guy Marcil
JLuc was telling us: JLuc nous racontait que :
Salut le NG, Il y a queques mois, j'avais poser la question suivante : comment recuperer les contacts de outlook pour les utiliser dans word ?
N'ayant pas obtenu de reponses concretes (propositions de publipostage), j'ai du jouer du clavier. A l'epoque je vous avais propose le code si j'y arrivais ... c'est chose faite, donc voici le resultat de mes reflections. P.S. : pour que ca fonctionne bien, il faut verifier la reference "Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Merci pour le cadeau!
Mais, si je peux me permettre, deux petits détails...
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter. Pour ceux qui ne le savent pas, cela dépend de la version de Office.
Microsoft Outlook 9.0 Object Library = Office 2000 Microsoft Outlook 10.0 Object Library = Office 2002 Microsoft Outlook 11.0 Object Library = Office 2003 etc.
Aussi, la ligne Dim i, x, y, pos As Integer ne fait que définir pos en tant que "Integer", i, x et y ne sont pas définis. Il faudrait écrire: Dim i As Integer, x As Integer, y As Integer, pos As Integer
-- Salut! _______________________________________ Jean-Guy Marcil - Word MVP
Word MVP site: http://www.word.mvps.org
JLuc was telling us:
JLuc nous racontait que :
Salut le NG,
Il y a queques mois, j'avais poser la question suivante : comment
recuperer les contacts de outlook pour les utiliser dans word ?
N'ayant pas obtenu de reponses concretes (propositions de
publipostage), j'ai du jouer du clavier. A l'epoque je vous avais
propose le code si j'y arrivais ... c'est chose faite, donc voici le
resultat de mes reflections.
P.S. : pour que ca fonctionne bien, il faut verifier la reference
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Merci pour le cadeau!
Mais, si je peux me permettre, deux petits détails...
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Pour ceux qui ne le savent pas, cela dépend de la version de Office.
Microsoft Outlook 9.0 Object Library = Office 2000
Microsoft Outlook 10.0 Object Library = Office 2002
Microsoft Outlook 11.0 Object Library = Office 2003
etc.
Aussi, la ligne
Dim i, x, y, pos As Integer
ne fait que définir pos en tant que "Integer", i, x et y ne sont pas
définis.
Il faudrait écrire:
Dim i As Integer, x As Integer, y As Integer, pos As Integer
--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP
jmarcilREMOVE@CAPSsympatico.caTHISTOO
Word MVP site: http://www.word.mvps.org
Salut le NG, Il y a queques mois, j'avais poser la question suivante : comment recuperer les contacts de outlook pour les utiliser dans word ?
N'ayant pas obtenu de reponses concretes (propositions de publipostage), j'ai du jouer du clavier. A l'epoque je vous avais propose le code si j'y arrivais ... c'est chose faite, donc voici le resultat de mes reflections. P.S. : pour que ca fonctionne bien, il faut verifier la reference "Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Merci pour le cadeau!
Mais, si je peux me permettre, deux petits détails...
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter. Pour ceux qui ne le savent pas, cela dépend de la version de Office.
Microsoft Outlook 9.0 Object Library = Office 2000 Microsoft Outlook 10.0 Object Library = Office 2002 Microsoft Outlook 11.0 Object Library = Office 2003 etc.
Aussi, la ligne Dim i, x, y, pos As Integer ne fait que définir pos en tant que "Integer", i, x et y ne sont pas définis. Il faudrait écrire: Dim i As Integer, x As Integer, y As Integer, pos As Integer
-- Salut! _______________________________________ Jean-Guy Marcil - Word MVP
Word MVP site: http://www.word.mvps.org
JLuc
Mais, si je peux me permettre, deux petits détails... Bien sur que tu peux, c'est meme recommande ! :D
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter. Pour ceux qui ne le savent pas, cela dépend de la version de Office.
Microsoft Outlook 9.0 Object Library = Office 2000 Microsoft Outlook 10.0 Object Library = Office 2002 Microsoft Outlook 11.0 Object Library = Office 2003 etc. C'est vrai aue je n'ai pas preciser la version, merci du rectificatif.
Aussi, la ligne Dim i, x, y, pos As Integer ne fait que définir pos en tant que "Integer", i, x et y ne sont pas définis. Il faudrait écrire: Dim i As Integer, x As Integer, y As Integer, pos As Integer et ca, je savais pas, je pensais que toutes les variables de la ligne
etaient definies a integer 8-o comme quoi c'est important la communication, merci JLuc
Mais, si je peux me permettre, deux petits détails...
Bien sur que tu peux, c'est meme recommande ! :D
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Pour ceux qui ne le savent pas, cela dépend de la version de Office.
Microsoft Outlook 9.0 Object Library = Office 2000
Microsoft Outlook 10.0 Object Library = Office 2002
Microsoft Outlook 11.0 Object Library = Office 2003
etc.
C'est vrai aue je n'ai pas preciser la version, merci du rectificatif.
Aussi, la ligne
Dim i, x, y, pos As Integer
ne fait que définir pos en tant que "Integer", i, x et y ne sont pas définis.
Il faudrait écrire:
Dim i As Integer, x As Integer, y As Integer, pos As Integer
et ca, je savais pas, je pensais que toutes les variables de la ligne
etaient definies a integer 8-o comme quoi c'est important la
communication, merci
JLuc
Mais, si je peux me permettre, deux petits détails... Bien sur que tu peux, c'est meme recommande ! :D
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter. Pour ceux qui ne le savent pas, cela dépend de la version de Office.
Microsoft Outlook 9.0 Object Library = Office 2000 Microsoft Outlook 10.0 Object Library = Office 2002 Microsoft Outlook 11.0 Object Library = Office 2003 etc. C'est vrai aue je n'ai pas preciser la version, merci du rectificatif.
Aussi, la ligne Dim i, x, y, pos As Integer ne fait que définir pos en tant que "Integer", i, x et y ne sont pas définis. Il faudrait écrire: Dim i As Integer, x As Integer, y As Integer, pos As Integer et ca, je savais pas, je pensais que toutes les variables de la ligne
etaient definies a integer 8-o comme quoi c'est important la communication, merci JLuc
Jacques93
Bonjour JLuc,
Mais, si je peux me permettre, deux petits détails...
Bien sur que tu peux, c'est meme recommande ! :D
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Pour ceux qui ne le savent pas, cela dépend de la version de Office. Microsoft Outlook 9.0 Object Library = Office 2000 Microsoft Outlook 10.0 Object Library = Office 2002 Microsoft Outlook 11.0 Object Library = Office 2003 etc.
C'est vrai aue je n'ai pas preciser la version, merci du rectificatif.
Pour info, une fois terminée l'écriture du code, tu peux supprimer la référence, à condition de déclarer :
Dim ol As Object 'Outlook.Application Dim ns As Object 'Outlook.NameSpace Dim fld As Object 'Outlook.MAPIFolder Dim itm As Object 'Outlook.ContactItem
ce qui évite les problèmes de compatibilité entre versions. A part les considérations liées à l'Early et au Late Binding, l'interêt d'avoir la référence, et de typer les variables, c'est l'aide à la saisie et l'explorateur d'objets.
Eraly & Late Binding : http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/office97/html/SF7A4.asp
-- Cordialement,
Jacques.
Bonjour JLuc,
Mais, si je peux me permettre, deux petits détails...
Bien sur que tu peux, c'est meme recommande ! :D
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Pour ceux qui ne le savent pas, cela dépend de la version de Office.
Microsoft Outlook 9.0 Object Library = Office 2000
Microsoft Outlook 10.0 Object Library = Office 2002
Microsoft Outlook 11.0 Object Library = Office 2003
etc.
C'est vrai aue je n'ai pas preciser la version, merci du rectificatif.
Pour info, une fois terminée l'écriture du code, tu peux supprimer la
référence, à condition de déclarer :
Dim ol As Object 'Outlook.Application
Dim ns As Object 'Outlook.NameSpace
Dim fld As Object 'Outlook.MAPIFolder
Dim itm As Object 'Outlook.ContactItem
ce qui évite les problèmes de compatibilité entre versions. A part les
considérations liées à l'Early et au Late Binding, l'interêt d'avoir la
référence, et de typer les variables, c'est l'aide à la saisie et
l'explorateur d'objets.
Eraly & Late Binding :
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/office97/html/SF7A4.asp
Mais, si je peux me permettre, deux petits détails...
Bien sur que tu peux, c'est meme recommande ! :D
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Pour ceux qui ne le savent pas, cela dépend de la version de Office. Microsoft Outlook 9.0 Object Library = Office 2000 Microsoft Outlook 10.0 Object Library = Office 2002 Microsoft Outlook 11.0 Object Library = Office 2003 etc.
C'est vrai aue je n'ai pas preciser la version, merci du rectificatif.
Pour info, une fois terminée l'écriture du code, tu peux supprimer la référence, à condition de déclarer :
Dim ol As Object 'Outlook.Application Dim ns As Object 'Outlook.NameSpace Dim fld As Object 'Outlook.MAPIFolder Dim itm As Object 'Outlook.ContactItem
ce qui évite les problèmes de compatibilité entre versions. A part les considérations liées à l'Early et au Late Binding, l'interêt d'avoir la référence, et de typer les variables, c'est l'aide à la saisie et l'explorateur d'objets.
Eraly & Late Binding : http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/office97/html/SF7A4.asp
-- Cordialement,
Jacques.
JLuc
Desole, je viens de faire l'essai de ton code, mais ca plante a la ligne Set fld = ns.GetDefaultFolder(olFolderContacts) Il faut bien conserver la reference, pour les declarations, c'est vrai qu'on peux les declarees en object. Merci JLuc
Bonjour JLuc,
Mais, si je peux me permettre, deux petits détails...
Bien sur que tu peux, c'est meme recommande ! :D
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Pour ceux qui ne le savent pas, cela dépend de la version de Office. Microsoft Outlook 9.0 Object Library = Office 2000 Microsoft Outlook 10.0 Object Library = Office 2002 Microsoft Outlook 11.0 Object Library = Office 2003 etc.
C'est vrai aue je n'ai pas preciser la version, merci du rectificatif.
Pour info, une fois terminée l'écriture du code, tu peux supprimer la référence, à condition de déclarer :
Dim ol As Object 'Outlook.Application Dim ns As Object 'Outlook.NameSpace Dim fld As Object 'Outlook.MAPIFolder Dim itm As Object 'Outlook.ContactItem
ce qui évite les problèmes de compatibilité entre versions. A part les considérations liées à l'Early et au Late Binding, l'interêt d'avoir la référence, et de typer les variables, c'est l'aide à la saisie et l'explorateur d'objets.
Eraly & Late Binding : http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/office97/html/SF7A4.asp
Desole, je viens de faire l'essai de ton code, mais ca plante a la
ligne Set fld = ns.GetDefaultFolder(olFolderContacts)
Il faut bien conserver la reference, pour les declarations, c'est vrai
qu'on peux les declarees en object.
Merci
JLuc
Bonjour JLuc,
Mais, si je peux me permettre, deux petits détails...
Bien sur que tu peux, c'est meme recommande ! :D
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Pour ceux qui ne le savent pas, cela dépend de la version de Office.
Microsoft Outlook 9.0 Object Library = Office 2000
Microsoft Outlook 10.0 Object Library = Office 2002
Microsoft Outlook 11.0 Object Library = Office 2003
etc.
C'est vrai aue je n'ai pas preciser la version, merci du rectificatif.
Pour info, une fois terminée l'écriture du code, tu peux supprimer la
référence, à condition de déclarer :
Dim ol As Object 'Outlook.Application
Dim ns As Object 'Outlook.NameSpace
Dim fld As Object 'Outlook.MAPIFolder
Dim itm As Object 'Outlook.ContactItem
ce qui évite les problèmes de compatibilité entre versions. A part les
considérations liées à l'Early et au Late Binding, l'interêt d'avoir la
référence, et de typer les variables, c'est l'aide à la saisie et
l'explorateur d'objets.
Eraly & Late Binding :
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/office97/html/SF7A4.asp
Desole, je viens de faire l'essai de ton code, mais ca plante a la ligne Set fld = ns.GetDefaultFolder(olFolderContacts) Il faut bien conserver la reference, pour les declarations, c'est vrai qu'on peux les declarees en object. Merci JLuc
Bonjour JLuc,
Mais, si je peux me permettre, deux petits détails...
Bien sur que tu peux, c'est meme recommande ! :D
"Microsoft Outlook 9.0 Object Library" si elle n'y est pas, l'ajouter.
Pour ceux qui ne le savent pas, cela dépend de la version de Office. Microsoft Outlook 9.0 Object Library = Office 2000 Microsoft Outlook 10.0 Object Library = Office 2002 Microsoft Outlook 11.0 Object Library = Office 2003 etc.
C'est vrai aue je n'ai pas preciser la version, merci du rectificatif.
Pour info, une fois terminée l'écriture du code, tu peux supprimer la référence, à condition de déclarer :
Dim ol As Object 'Outlook.Application Dim ns As Object 'Outlook.NameSpace Dim fld As Object 'Outlook.MAPIFolder Dim itm As Object 'Outlook.ContactItem
ce qui évite les problèmes de compatibilité entre versions. A part les considérations liées à l'Early et au Late Binding, l'interêt d'avoir la référence, et de typer les variables, c'est l'aide à la saisie et l'explorateur d'objets.
Eraly & Late Binding : http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/office97/html/SF7A4.asp
Jacques93
Bonjour JLuc,
Desole, je viens de faire l'essai de ton code, mais ca plante a la ligne Set fld = ns.GetDefaultFolder(olFolderContacts) Il faut bien conserver la reference, pour les declarations, c'est vrai qu'on peux les declarees en object.
Exact, j'ai oublié de préciser que l'on ne peux plus utiliser les noms de constantes, il faut les remplacer par leur valeurs. Ici
Set fld = ns.GetDefaultFolder(10) 'olFolderContacts
-- Cordialement,
Jacques.
Bonjour JLuc,
Desole, je viens de faire l'essai de ton code, mais ca plante a la ligne
Set fld = ns.GetDefaultFolder(olFolderContacts)
Il faut bien conserver la reference, pour les declarations, c'est vrai
qu'on peux les declarees en object.
Exact, j'ai oublié de préciser que l'on ne peux plus utiliser les noms
de constantes, il faut les remplacer par leur valeurs. Ici
Set fld = ns.GetDefaultFolder(10) 'olFolderContacts
Desole, je viens de faire l'essai de ton code, mais ca plante a la ligne Set fld = ns.GetDefaultFolder(olFolderContacts) Il faut bien conserver la reference, pour les declarations, c'est vrai qu'on peux les declarees en object.
Exact, j'ai oublié de préciser que l'on ne peux plus utiliser les noms de constantes, il faut les remplacer par leur valeurs. Ici
Set fld = ns.GetDefaultFolder(10) 'olFolderContacts
-- Cordialement,
Jacques.
JLuc
Ok j'avais pas pense a ca :') Merci
Bonjour JLuc,
Desole, je viens de faire l'essai de ton code, mais ca plante a la ligne Set fld = ns.GetDefaultFolder(olFolderContacts) Il faut bien conserver la reference, pour les declarations, c'est vrai qu'on peux les declarees en object.
Exact, j'ai oublié de préciser que l'on ne peux plus utiliser les noms de constantes, il faut les remplacer par leur valeurs. Ici
Set fld = ns.GetDefaultFolder(10) 'olFolderContacts
Ok j'avais pas pense a ca :')
Merci
Bonjour JLuc,
Desole, je viens de faire l'essai de ton code, mais ca plante a la ligne
Set fld = ns.GetDefaultFolder(olFolderContacts)
Il faut bien conserver la reference, pour les declarations, c'est vrai
qu'on peux les declarees en object.
Exact, j'ai oublié de préciser que l'on ne peux plus utiliser les noms de
constantes, il faut les remplacer par leur valeurs. Ici
Set fld = ns.GetDefaultFolder(10) 'olFolderContacts
Desole, je viens de faire l'essai de ton code, mais ca plante a la ligne Set fld = ns.GetDefaultFolder(olFolderContacts) Il faut bien conserver la reference, pour les declarations, c'est vrai qu'on peux les declarees en object.
Exact, j'ai oublié de préciser que l'on ne peux plus utiliser les noms de constantes, il faut les remplacer par leur valeurs. Ici
Set fld = ns.GetDefaultFolder(10) 'olFolderContacts