Erreur d'exécution '91' : Variable objet ou variable de bloc With non définie

Signaler
Messages postés
83
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
8 juillet 2010
-
Messages postés
83
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
8 juillet 2010
-
Bonjour à tous,

J'ai établi un petit programme afin d'enregistrer quelque chose dans la partie note d'un de mes contacts enregistré dans mon carnet d'adresses mais j'ai une petite erreur "Erreur d'exécution '91' : Variable objet ou variable de bloc With non définie".

Voici une partie de mon programme (il permet de rechercher l'adresse mail du destinataire dans le carnet d'adresses "Mes Contacts", s'il existe on enregistre si non rien) :

Dim Nb As Integer
Dim Ns As NameSpace
Dim Carnet As MAPIFolder
Dim V As Variant

Set Ns = GetNamespace("MAPI")
Set Carnet = Ns.GetDefaultFolder(olFolderContacts)
Set Courriel = Item
Set Destinataires = Courriel.Recipients

' ENREGISTREMENT DES CONSULTATIONS DE CHAQUE CONTACT
' Pour tous les destinataires du courriel
For Each Destinataire In Destinataires

    ' Rechercher dans les contacts
    For Each V In Carnet.Items
            If TypeName(V) = "ContactItem" Then 'Vérifier s'il s'agit d'un ContactItem
            
            If UnContact.Email1Address = Destinataire.Address _
            Or UnContact.Email2Address = Destinataire.Address _
            Or UnContact.Email3Address = Destinataire.Address Then

etc ... 


L'erreur se porte sur:
   If UnContact.Email1Address = Destinataire.Address _
            Or UnContact.Email2Address = Destinataire.Address _
            Or UnContact.Email3Address = Destinataire.Address Then


J'ai modifié V As Variant en V As Object mais toujours la même erreur... D'où peut-elle venir ?


D'avance merci.
A voir également:

10 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
d'ou vient la variable UnContact ?

ne devrais tu pas utiliser la variable V ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 avril 2010
3
petite remarque en passant, avant d'utiliser les propriétés des objets unContact ou Destinataire, il faut s'assurer qu'ils ne soient pas nul (Nothing)
Messages postés
83
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
8 juillet 2010

Bonjour,

J'ai oublié de copier un bout de mon code :

Dim Courriel As MailItem
Dim Destinataires As Recipients
Dim Destinataire As Recipient
Dim UnContact As ContactItem


Si je remplace UnContact par V, j'ai une "Erreur d'exécution '4096' : Un ou plusieurs éléments dans le dossier que vous avez synchronisé ne correspond pas. Pour résoudre les conflits, ouvrez les éléments, puis renouvelez l'opération." toujours sur la même partie.

De même si je définis V As Object.


Comment dois-je faire pour s'assurer qu'ils ne soient pas nul ? Et s'ils le sont, comment faut-il utiliser comme code ? Je suis désolé de vous demander tout ça, je suis débutante en VBA.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Pour quelle raison ?

étant issues d'un For Each ...


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
tentes :

If TypeName(V) = "ContactItem" Then 'Vérifier s'il s'agit d'un ContactItem
Set UnContact = V
If UnContact.Email1Address = Destinataire.Address _
Or UnContact.Email2Address = Destinataire.Address _
Or UnContact.Email3Address = Destinataire.Address Then

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
83
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
8 juillet 2010

Je viens de modifier tel que tu m'as dit mais j'ai, ce coup là, une "Erreur d'exécution '13' : Incompatibilité de type".

Elle est basée sur :

Set UnContact = V
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
V est un Object ? (ou Variant, c'est Idem)

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
83
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
8 juillet 2010

J'ai essayé les deux mais il y a toujours l'Erreur d'exécution '13' sur la même ligne :

Set UnContact = V
Messages postés
83
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
8 juillet 2010

D'accord ça marche , en attendant je vais essayer de mon côté.
Messages postés
83
Date d'inscription
jeudi 4 février 2010
Statut
Membre
Dernière intervention
8 juillet 2010

Re !

Bon alors... passons aux choses sérieuses

J'ai recherché de mon côté et j'ai trouvé l'erreur... sachant que mon code en vb est bon

Tout fonctionne correctement quand je ne partage pas mes contacts personnels (c'est-à-dire modification des notes du contact auquel j'ai envoyé un mail). Or, lorsque je souhaite choisir de partager mes contacts personnels avec d'autres personnes... ERREUR comme j'ai eu précédemment...

Est-ce qu'il existe un code qui prendrait en compte le partage de mes contacts dans mon programme ?!