Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme avec les references

10 réponses
Avatar
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

10 réponses

Avatar
parci
On 20 jan, 10:31, "Marc" wrote:
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
Avatar
Marc
Merci de cette réponse rapide.

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

Marc
a écrit dans le message de news:

On 20 jan, 10:31, "Marc" wrote:
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
Avatar
jeanmarcnoury
> 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_' ;
Avatar
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 ??

"Marc" a écrit dans le message de news:

Merci de cette réponse rapide.

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

Marc
a écrit dans le message de news:

On 20 jan, 10:31, "Marc" wrote:
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




Avatar
parci
On 20 jan, 14:17, "Marc" wrote:
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
Avatar
Marc
Merci je regarde ce soir et demain et te tiens au courant.


a écrit dans le message de news:

On 20 jan, 14:17, "Marc" wrote:
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
Avatar
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" a écrit dans le message de news:
%
Merci je regarde ce soir et demain et te tiens au courant.


a écrit dans le message de news:

On 20 jan, 14:17, "Marc" wrote:
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



Avatar
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 ...

"Marc" a écrit dans le message de news:
%
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" a écrit dans le message de news:
%
Merci je regarde ce soir et demain et te tiens au courant.


a écrit dans le message de news:

On 20 jan, 14:17, "Marc" wrote:
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







Avatar
parci
On 21 jan, 15:15, "Marc" wrote:
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.
Avatar
Marc
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

a écrit dans le message de news:

On 21 jan, 15:15, "Marc" wrote:
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.