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

ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010 - 12 avril 2010 à 08:58
ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010 - 13 avril 2010 à 14:34
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
12 avril 2010 à 09:10
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
0
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
12 avril 2010 à 09:13
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)
0
ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010
12 avril 2010 à 09:25
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.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
12 avril 2010 à 09:26
Pour quelle raison ?

étant issues d'un For Each ...


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
12 avril 2010 à 09:28
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
0
ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010
12 avril 2010 à 09:34
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
12 avril 2010 à 09:39
V est un Object ? (ou Variant, c'est Idem)

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010
12 avril 2010 à 09:43
J'ai essayé les deux mais il y a toujours l'Erreur d'exécution '13' sur la même ligne :

Set UnContact = V
0
ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010
12 avril 2010 à 09:52
D'accord ça marche , en attendant je vais essayer de mon côté.
0
ptitemeuh Messages postés 83 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 8 juillet 2010
13 avril 2010 à 14:34
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 ?!
0