OVH Cloud OVH Cloud

vba outlook vers excel

4 réponses
Avatar
-=lolol=-
Bonjour à tous,

Je tente un bricolage vba sur excel appelant les contacts outlook, je
commence avec une sub trouvée sur l'excellent mpfe

Lorsque je crée l'instance outlook,
Set MonOutlook = CreateObject("Outlook.Application")
si celui ci est ouvert j'ai le message comme quoi quelque chose essaye
d'utiliser outlook ...
J'ai lu ici une méthode pour éviter ce message mais n'arrive pas à le mettre
en oeuvre
si je remplace cette ligne par
Set MonOutlook = GetObject(, "Outlook.Application")
j'ai le droit à une erreur 429 ...

Comme j'ai remarqué quelques personnes particulièrement affuté(e) en vba, je
vous appelle au secours.
J'aimerais ne plus avoir ce message sans utiliser le "clic-yes" ou autre
bricolage ... faut il gérer l'éventuelle ouverture d'outlook dans la macro ?

Merci pour vos précisions et lumières
@+lolo



Sub ContactOutlookVersExcel()
'nécessite référence "MS outlook xx object library"

Dim MonOutlook As Outlook.Application
Dim DossierContact As Outlook.MAPIFolder
Dim NumContact As Integer

On Error GoTo GestionErreur

Set MonOutlook = CreateObject("Outlook.Application")
'Set MonOutlook = GetObject(, "Outlook.Application")
Set DossierContact =
MonOutlook.GetNamespace("Mapi").GetDefaultFolder(olFolderContacts)

On Error GoTo suite

With DossierContact
For NumContact = 1 To .Items.Count
Cells(NumContact + 1, 1).Value = NumContact
Cells(NumContact + 1, 2).Value = .Items(NumContact).FirstName
Cells(NumContact + 1, 3).Value = .Items(NumContact).LastName
Cells(NumContact + 1, 4).Value = .Items(NumContact).CompanyName
Cells(NumContact + 1, 5).Value =
.Items(NumContact).BusinessTelephoneNumber
suite:
Next NumContact
End With

On Error GoTo 0
Exit Sub

GestionErreur:
MsgBox "Erreur " & Err.Number & " " & Err.Description

End Sub

4 réponses

Avatar
Isabelle Prawitz
Bonjour !
En fait, c'est l'ordre de tes lignes qui n'est pas bon.
Il faut :

Dim MonOutlook As Outlook.Application
Set MonOutlook = GetObject(, "Outlook.Application")
If MonOutlook Is Nothing Then
Set MonOutlook = CreateObject("Outlook.Application")
End If

Dim DossierContact As Outlook.MAPIFolder
Dim NumContact As Integer

On Error GoTo GestionErreur

Set DossierContact MonOutlook.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts) 'attention MAPI !

Mais même comme ça, si tu attaques certaines propriétés tu auras un message !
Essaie !
A+
Isa


"-=lolol=-" a écrit dans le message de news:%
Bonjour à tous,

Je tente un bricolage vba sur excel appelant les contacts outlook, je
commence avec une sub trouvée sur l'excellent mpfe

Lorsque je crée l'instance outlook,
Set MonOutlook = CreateObject("Outlook.Application")
si celui ci est ouvert j'ai le message comme quoi quelque chose essaye
d'utiliser outlook ...
J'ai lu ici une méthode pour éviter ce message mais n'arrive pas à le mettre
en oeuvre
si je remplace cette ligne par
Set MonOutlook = GetObject(, "Outlook.Application")
j'ai le droit à une erreur 429 ...

Comme j'ai remarqué quelques personnes particulièrement affuté(e) en vba, je
vous appelle au secours.
J'aimerais ne plus avoir ce message sans utiliser le "clic-yes" ou autre
bricolage ... faut il gérer l'éventuelle ouverture d'outlook dans la macro ?

Merci pour vos précisions et lumières
@+lolo



Sub ContactOutlookVersExcel()
'nécessite référence "MS outlook xx object library"

Dim MonOutlook As Outlook.Application
Dim DossierContact As Outlook.MAPIFolder
Dim NumContact As Integer

On Error GoTo GestionErreur

Set MonOutlook = CreateObject("Outlook.Application")
'Set MonOutlook = GetObject(, "Outlook.Application")
Set DossierContact > MonOutlook.GetNamespace("Mapi").GetDefaultFolder(olFolderContacts)

On Error GoTo suite

With DossierContact
For NumContact = 1 To .Items.Count
Cells(NumContact + 1, 1).Value = NumContact
Cells(NumContact + 1, 2).Value = .Items(NumContact).FirstName
Cells(NumContact + 1, 3).Value = .Items(NumContact).LastName
Cells(NumContact + 1, 4).Value = .Items(NumContact).CompanyName
Cells(NumContact + 1, 5).Value > .Items(NumContact).BusinessTelephoneNumber
suite:
Next NumContact
End With

On Error GoTo 0
Exit Sub

GestionErreur:
MsgBox "Erreur " & Err.Number & " " & Err.Description

End Sub




Avatar
-=lolol=-
Bonjour Isa,
merci pour ta réponse des plus rapides :-)
J'ai essayer comme tu me l'as dit ... et avais toujours la même erreur. Je
suis aller voir les options de sécurité macro défini dans outlook et l'ai
mis sur moyen ... depuis ça va mieux, il ne demande plus rien que outlook
soit ouvert ou non (en ne gardant que "CreateObject") => avant, je ne
comprenais pas tout et ne comprends plus rien maintenant ! mais c'est pas
grave, je vais me faire une raison :-) à propos, je n'ai pas réussi à cocher
la case "faire confiance au projet vba" à la façon dont je le fais sur excel
pour pas être ennuyé avec vba
encore merci pour ton aide
@+lolo
Avatar
Isabelle Prawitz
Le GetObject permet de travailler avec un objet (ici l'appli Outlook) déjà existant.
Le If après permet de créer l'appli Outlook si celle-ci n'existe pas, avec CreateObject !
Pour les macros Outlook, il faut d'abord que tu crées un certificat numérique. Si tu veux plus d'explications, tape
"Certificat électronique" dans l'aide Outlook, et reviens si des choses te manquent.
A+
Isa

"-=lolol=-" a écrit dans le message de news:
Bonjour Isa,
merci pour ta réponse des plus rapides :-)
J'ai essayer comme tu me l'as dit ... et avais toujours la même erreur. Je
suis aller voir les options de sécurité macro défini dans outlook et l'ai
mis sur moyen ... depuis ça va mieux, il ne demande plus rien que outlook
soit ouvert ou non (en ne gardant que "CreateObject") => avant, je ne
comprenais pas tout et ne comprends plus rien maintenant ! mais c'est pas
grave, je vais me faire une raison :-) à propos, je n'ai pas réussi à cocher
la case "faire confiance au projet vba" à la façon dont je le fais sur excel
pour pas être ennuyé avec vba
encore merci pour ton aide
@+lolo




Avatar
-=lolol=-
Bonjour Isa,

bien, super, merci ... je continue de gratter ... ma dernière question sera
de savoir si il me restera des cheveux après avoir tout compris :-)))

@+lolo