Probleme avec les references

Le
Marc
Bonjour à tous.

J'ai un petit problème dans mon soft je fais appel a une référence:
Microsoft Outlook 10.0 Object library afin de mettre à jour les contacts et
agenda.

Pas de problème, sur mon poste j'ai Microsoft Outlook et mon soft fonctionne
très bien(Je précise que c'est une option du soft et non l'objet).

En revanche, sur des poste clients qui ne sont pas pourvus de Microsoft
Outlook ce la donne des perturbation du logiciel (bloque certaine partie du
logiciel).

Ma question est de savoir si il est possible de neutraliser la référence
dans la config ou de opter pour son utilisation.

Dans un souci de maintenance je ne peux pas envisager de compiler deux softs
différents.

Ou alors y'a t'il quelques fichiers qui ne sont pas sous licence qu'il faut
installer avec mon soft pour éviter le problème.

Par avance merci.

Marc
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
parci
Le #18434471
On 20 jan, 10:31, "Marc"
Bonjour à tous.

J'ai un petit problème dans mon soft je fais appel a une référence:
Microsoft Outlook 10.0 Object library afin de mettre à jour les contact s et
agenda.

Pas de problème, sur mon poste j'ai Microsoft Outlook et mon soft fonct ionne
très bien(Je précise que c'est une option du soft et non l'objet).

En revanche, sur des poste clients qui ne sont pas pourvus de Microsoft
Outlook ce la donne des perturbation du logiciel (bloque certaine partie du
logiciel).

Ma question est de savoir si il est possible de neutraliser la référe nce
dans la config ou de opter pour son utilisation.

Dans un souci de maintenance je ne peux pas envisager de compiler deux so fts
différents.

Ou alors y'a t'il quelques fichiers qui ne sont pas sous licence qu'il fa ut
installer avec mon soft pour éviter le problème.

Par avance merci.

Marc



Tu pourrais désactiver certaines fonctions si Outlook n'est pas
installé sur le poste.
Une autre possibilité, enlever les références et faire de la liaison
tardive.

Par exemple :
Dim OlApp As Object ' objet Outlook
Dim bOutlook As Boolean

On Error Resume Next

Set OlApp = GetObject(, "Outlook.Application.10")
If Not OlApp Is Nothing Then
bOutlook = True
End if

If Not bOutlook Then
Set OlApp = CreateObject("Outlook.Application.10")
If Not OlApp Is Nothing Then
bOutlook = True
End If
End If

If Not bOutlook Then
MsgBox "Pas d'Outlook"
End If
Marc
Le #18434681
Merci de cette réponse rapide.

Je fais le test et te tiens au courant dans la journée voir matinée.

Marc

On 20 jan, 10:31, "Marc"
Bonjour à tous.

J'ai un petit problème dans mon soft je fais appel a une référence:
Microsoft Outlook 10.0 Object library afin de mettre à jour les contacts
et
agenda.

Pas de problème, sur mon poste j'ai Microsoft Outlook et mon soft
fonctionne
très bien(Je précise que c'est une option du soft et non l'objet).

En revanche, sur des poste clients qui ne sont pas pourvus de Microsoft
Outlook ce la donne des perturbation du logiciel (bloque certaine partie
du
logiciel).

Ma question est de savoir si il est possible de neutraliser la référence
dans la config ou de opter pour son utilisation.

Dans un souci de maintenance je ne peux pas envisager de compiler deux
softs
différents.

Ou alors y'a t'il quelques fichiers qui ne sont pas sous licence qu'il
faut
installer avec mon soft pour éviter le problème.

Par avance merci.

Marc



Tu pourrais désactiver certaines fonctions si Outlook n'est pas
installé sur le poste.
Une autre possibilité, enlever les références et faire de la liaison
tardive.

Par exemple :
Dim OlApp As Object ' objet Outlook
Dim bOutlook As Boolean

On Error Resume Next

Set OlApp = GetObject(, "Outlook.Application.10")
If Not OlApp Is Nothing Then
bOutlook = True
End if

If Not bOutlook Then
Set OlApp = CreateObject("Outlook.Application.10")
If Not OlApp Is Nothing Then
bOutlook = True
End If
End If

If Not bOutlook Then
MsgBox "Pas d'Outlook"
End If
jeanmarcnoury
Le #18435951
> Tu pourrais désactiver certaines fonctions si Outlook n'est pas
installé sur le poste.
Une autre possibilité, enlever les références et faire de la liaiso n
tardive.

Par exemple :
    Dim OlApp As Object   ' objet Outlook
    Dim bOutlook As Boolean

    On Error Resume Next

    Set OlApp = GetObject(, "Outlook.Application.10")
    If Not OlApp Is Nothing Then
       bOutlook = True
    End if

    If Not bOutlook Then
        Set OlApp = CreateObject("Outlook.Application.10")
        If Not OlApp Is Nothing Then
            bOutlook = True
        End If
    End If

   If Not bOutlook Then
       MsgBox "Pas d'Outlook"
   End If



Hello,

tu trouveras sur le site de la FAQ un article qui explique le early et
le late binding:
http://faq.vb.free.fr/index.php?question4

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Marc
Le #18435941
Bon ca marche jusqu'a la déclaration du folders.

J'arrive a déclarer le MAPI.
pour le defautfolder il me jette et sort de la procédure.
as-tu une idée ??

"Marc"
Merci de cette réponse rapide.

Je fais le test et te tiens au courant dans la journée voir matinée.

Marc

On 20 jan, 10:31, "Marc"
Bonjour à tous.

J'ai un petit problème dans mon soft je fais appel a une référence:
Microsoft Outlook 10.0 Object library afin de mettre à jour les contacts
et
agenda.

Pas de problème, sur mon poste j'ai Microsoft Outlook et mon soft
fonctionne
très bien(Je précise que c'est une option du soft et non l'objet).

En revanche, sur des poste clients qui ne sont pas pourvus de Microsoft
Outlook ce la donne des perturbation du logiciel (bloque certaine partie
du
logiciel).

Ma question est de savoir si il est possible de neutraliser la référence
dans la config ou de opter pour son utilisation.

Dans un souci de maintenance je ne peux pas envisager de compiler deux
softs
différents.

Ou alors y'a t'il quelques fichiers qui ne sont pas sous licence qu'il
faut
installer avec mon soft pour éviter le problème.

Par avance merci.

Marc



Tu pourrais désactiver certaines fonctions si Outlook n'est pas
installé sur le poste.
Une autre possibilité, enlever les références et faire de la liaison
tardive.

Par exemple :
Dim OlApp As Object ' objet Outlook
Dim bOutlook As Boolean

On Error Resume Next

Set OlApp = GetObject(, "Outlook.Application.10")
If Not OlApp Is Nothing Then
bOutlook = True
End if

If Not bOutlook Then
Set OlApp = CreateObject("Outlook.Application.10")
If Not OlApp Is Nothing Then
bOutlook = True
End If
End If

If Not bOutlook Then
MsgBox "Pas d'Outlook"
End If




parci
Le #18436521
On 20 jan, 14:17, "Marc"
Bon ca marche jusqu'a la déclaration du folders.

J'arrive a déclarer le MAPI.
pour le defautfolder il me jette et sort de la procédure.
as-tu une idée ??



Si tu enlèves les références, il faut déclarer les constantes.
Un exemple pour lister le dossier des contacts :

Private Sub toto()

Dim OlApp As Object
Dim OlNs As Object
Dim OlDf As Object
Dim OlCt As Object
Dim OlItem As Object

Const olFolderContacts As Long = 10

On Error Resume Next

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

If OlApp Is Nothing Then
Exit Sub
End If

OlApp.Visible = True

Set OlNs = OlApp.GetNamespace("MAPI")
If Not OlNs Is Nothing Then
OlNs.Logon
Set OlDf = OlNs.GetDefaultFolder(olFolderContacts)
If Not OlDf Is Nothing Then
For Each OlItem In OlDf.items
Debug.Print OlItem.FullName, OlItem.Email1Address
Next
End If
End If

On Error GoTo 0

Set OlDf = Nothing
Set OlNs = Nothing
Set OlItem = Nothing
Set OlApp = Nothing

End Sub


C'est pas du vb, mais tu as des exemples ici :
http://www.atoutfox.org/articles.asp?ACTIONüONSULTER&ID00000083
Marc
Le #18438141
Merci je regarde ce soir et demain et te tiens au courant.



On 20 jan, 14:17, "Marc"
Bon ca marche jusqu'a la déclaration du folders.

J'arrive a déclarer le MAPI.
pour le defautfolder il me jette et sort de la procédure.
as-tu une idée ??



Si tu enlèves les références, il faut déclarer les constantes.
Un exemple pour lister le dossier des contacts :

Private Sub toto()

Dim OlApp As Object
Dim OlNs As Object
Dim OlDf As Object
Dim OlCt As Object
Dim OlItem As Object

Const olFolderContacts As Long = 10

On Error Resume Next

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

If OlApp Is Nothing Then
Exit Sub
End If

OlApp.Visible = True

Set OlNs = OlApp.GetNamespace("MAPI")
If Not OlNs Is Nothing Then
OlNs.Logon
Set OlDf = OlNs.GetDefaultFolder(olFolderContacts)
If Not OlDf Is Nothing Then
For Each OlItem In OlDf.items
Debug.Print OlItem.FullName, OlItem.Email1Address
Next
End If
End If

On Error GoTo 0

Set OlDf = Nothing
Set OlNs = Nothing
Set OlItem = Nothing
Set OlApp = Nothing

End Sub


C'est pas du vb, mais tu as des exemples ici :
http://www.atoutfox.org/articles.asp?ACTIONüONSULTER&ID00000083
Marc
Le #18444621
Re bonjour
et me revoila

apres les test je suis confrontéà une erreur 438 en commentaire dans le
source que tu m'as donné

Private Sub toto()

Dim OlApp As Object
Dim OlNs As Object
Dim OlDf As Object
Dim OlCt As Object
Dim OlItem As Object

Const olFolderContacts As Long = 10

On Error Resume Next

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

If OlApp Is Nothing Then
Exit Sub
End If

OlApp.Visible = True
' (Erreur 438)

Set OlNs = OlApp.GetNamespace("MAPI")
If Not OlNs Is Nothing Then
OlNs.Logon
Set OlDf = OlNs.GetDefaultFolder(olFolderContacts) ' (Erreur
438)
If Not OlDf Is Nothing Then
For Each OlItem In OlDf.items
Debug.Print OlItem.FullName, OlItem.Email1Address
Next
End If
End If

On Error GoTo 0

Set OlDf = Nothing
Set OlNs = Nothing
Set OlItem = Nothing
Set OlApp = Nothing

End Sub

L'erreur 438 correspond normalement à "Propriété ou méthode non gérée par
cet objet."

Je ne comprends pas c'est pas logique, à partir de mon soft je commande
WinWord et je n'est aucun soucis(il est rai que dans le cas de word
j'utilise sa référence).

A ton avis ?????

"Marc" %
Merci je regarde ce soir et demain et te tiens au courant.



On 20 jan, 14:17, "Marc"
Bon ca marche jusqu'a la déclaration du folders.

J'arrive a déclarer le MAPI.
pour le defautfolder il me jette et sort de la procédure.
as-tu une idée ??



Si tu enlèves les références, il faut déclarer les constantes.
Un exemple pour lister le dossier des contacts :

Private Sub toto()

Dim OlApp As Object
Dim OlNs As Object
Dim OlDf As Object
Dim OlCt As Object
Dim OlItem As Object

Const olFolderContacts As Long = 10

On Error Resume Next

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

If OlApp Is Nothing Then
Exit Sub
End If

OlApp.Visible = True

Set OlNs = OlApp.GetNamespace("MAPI")
If Not OlNs Is Nothing Then
OlNs.Logon
Set OlDf = OlNs.GetDefaultFolder(olFolderContacts)
If Not OlDf Is Nothing Then
For Each OlItem In OlDf.items
Debug.Print OlItem.FullName, OlItem.Email1Address
Next
End If
End If

On Error GoTo 0

Set OlDf = Nothing
Set OlNs = Nothing
Set OlItem = Nothing
Set OlApp = Nothing

End Sub


C'est pas du vb, mais tu as des exemples ici :
http://www.atoutfox.org/articles.asp?ACTIONüONSULTER&ID00000083



Marc
Le #18446581
Sauf erreur de ma part ou voir incompetance,
Microsoft Outlook 2002 n'accepte les liaisons late binding

Je m'explique
J'utilise createobject avec word ou avec outlook aucun problème.
Err =0
Apres je demande de mettre l'object en mode visible=true, word aucun
probleme
Outlook ErrC8

a moins que je ne declare pas le bon nom de programe, pourtant dans les
process je retrouve bien outlook.exe.

A suivre ...

"Marc" %
Re bonjour
et me revoila

apres les test je suis confrontéà une erreur 438 en commentaire dans le
source que tu m'as donné

Private Sub toto()

Dim OlApp As Object
Dim OlNs As Object
Dim OlDf As Object
Dim OlCt As Object
Dim OlItem As Object

Const olFolderContacts As Long = 10

On Error Resume Next

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

If OlApp Is Nothing Then
Exit Sub
End If

OlApp.Visible = True ' (Erreur 438)

Set OlNs = OlApp.GetNamespace("MAPI")
If Not OlNs Is Nothing Then
OlNs.Logon
Set OlDf = OlNs.GetDefaultFolder(olFolderContacts) ' (Erreur
438)
If Not OlDf Is Nothing Then
For Each OlItem In OlDf.items
Debug.Print OlItem.FullName, OlItem.Email1Address
Next
End If
End If

On Error GoTo 0

Set OlDf = Nothing
Set OlNs = Nothing
Set OlItem = Nothing
Set OlApp = Nothing

End Sub

L'erreur 438 correspond normalement à "Propriété ou méthode non gérée par
cet objet."

Je ne comprends pas c'est pas logique, à partir de mon soft je commande
WinWord et je n'est aucun soucis(il est rai que dans le cas de word
j'utilise sa référence).

A ton avis ?????

"Marc" %
Merci je regarde ce soir et demain et te tiens au courant.



On 20 jan, 14:17, "Marc"
Bon ca marche jusqu'a la déclaration du folders.

J'arrive a déclarer le MAPI.
pour le defautfolder il me jette et sort de la procédure.
as-tu une idée ??



Si tu enlèves les références, il faut déclarer les constantes.
Un exemple pour lister le dossier des contacts :

Private Sub toto()

Dim OlApp As Object
Dim OlNs As Object
Dim OlDf As Object
Dim OlCt As Object
Dim OlItem As Object

Const olFolderContacts As Long = 10

On Error Resume Next

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

If OlApp Is Nothing Then
Exit Sub
End If

OlApp.Visible = True

Set OlNs = OlApp.GetNamespace("MAPI")
If Not OlNs Is Nothing Then
OlNs.Logon
Set OlDf = OlNs.GetDefaultFolder(olFolderContacts)
If Not OlDf Is Nothing Then
For Each OlItem In OlDf.items
Debug.Print OlItem.FullName, OlItem.Email1Address
Next
End If
End If

On Error GoTo 0

Set OlDf = Nothing
Set OlNs = Nothing
Set OlItem = Nothing
Set OlApp = Nothing

End Sub


C'est pas du vb, mais tu as des exemples ici :
http://www.atoutfox.org/articles.asp?ACTIONüONSULTER&ID00000083







parci
Le #18447051
On 21 jan, 15:15, "Marc"
Sauf erreur de ma part ou voir incompetance,
Microsoft Outlook 2002 n'accepte les liaisons late binding

Je m'explique
J'utilise createobject avec word ou avec outlook aucun problème.
Err =0
Apres je demande de mettre l'object en mode visible=true, word aucun
probleme
Outlook ErrC8

a moins que je ne declare pas le bon nom de programe, pourtant dans les
process je retrouve bien outlook.exe.

A suivre ...



Si j'en crois http://support.microsoft.com/kb/291120, ça devrait
marcher pourtant. Ce que je peux dire c'est que l'exemple donné
fonctionne correctement avec mon Outlook 2003.

Ce que tu peux faire quand même : liaison précoce avec références p uis
création de l'instance avec Set x= New Outlook.Application
et test de l'erreur. Si il y a erreur, tu désactives les fonctions
liées à Outlook dans ton programme.
Marc
Le #18447321
Je te remercie, j'ai trouvé la solution je suis effectivement incompétent
...
en fait il faut donner 10 a la variable olfoldercontacts.

En revanche je n'arrive pas a afficher Outlook...

Encore merci


On 21 jan, 15:15, "Marc"
Sauf erreur de ma part ou voir incompetance,
Microsoft Outlook 2002 n'accepte les liaisons late binding

Je m'explique
J'utilise createobject avec word ou avec outlook aucun problème.
Err =0
Apres je demande de mettre l'object en mode visible=true, word aucun
probleme
Outlook ErrC8

a moins que je ne declare pas le bon nom de programe, pourtant dans les
process je retrouve bien outlook.exe.

A suivre ...



Si j'en crois http://support.microsoft.com/kb/291120, ça devrait
marcher pourtant. Ce que je peux dire c'est que l'exemple donné
fonctionne correctement avec mon Outlook 2003.

Ce que tu peux faire quand même : liaison précoce avec références puis
création de l'instance avec Set x= New Outlook.Application
et test de l'erreur. Si il y a erreur, tu désactives les fonctions
liées à Outlook dans ton programme.
Publicité
Poster une réponse
Anonyme