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

Tester le type d'un élement contenu dans un dossier

1 réponse
Avatar
Arbiel Perlacremaz
Bonsoir

J'utilise Outloook 2002, mais ma question est valable pour les versions
antérieures.

J'ai écrit une procédure qui analyse le contenu du dossier des contacts par
un code tel que celui-ci

Dim MonContact as Outlook.ContactItem
Dim MesContacts as Outlook.MAPIFolder

For each MonContact in MesContacts .Items
'traitement
Next MonContact

Le dossier contient également des listes de distribution, qui ne sont donc
pas de même nature que les contacts. Une erreur se produit lorsque
MonElément tente de référencer la première de ces listes de distribution.

J'ai modifié le code de la manière suivante :

Dim MonElément as Object
Dim MonContact as outlook.ContactItem
Dim MesContacts as Outlook.MAPIFolder

For each UnElément in MesContacts .Items
Select Case UnElément.Class
Case olContactItem
Set MonContact = UnElément
'traitement
end Select
Next MonElément

Aucune erreur ne se produit plus, mais aucun traitement n'est effectué car
UnElément.Class ne prend apparemment jamais la valeur OlContactItem.

Je sais que je peux introduire faire ainsi
On error resume Next
Set MonContact = UnElément
If Err.Number = 0 then
'traitement
end if
Err.clear
pour agir en conséquence.

Mais quelqu'un peut-il me dire comment déterminer de manière moins
"bestiale" si UnElément est un contact ?

D'avance, merci

1 réponse

Avatar
Isabelle Prawitz
Bonjour !
Tu peux utiliser la fonction TypeName.
Par ex.:

If TypeName(monItem)="ContactItem" then...
ou
If TypeName(monItem)="MAPIFolder" then...

Là, tu retrouve exactement le nom de la classe d'objets, entre guillemets.
A+
Isa


"Arbiel Perlacremaz" a écrit dans le message de news:e%
Bonsoir

J'utilise Outloook 2002, mais ma question est valable pour les versions
antérieures.

J'ai écrit une procédure qui analyse le contenu du dossier des contacts par
un code tel que celui-ci

Dim MonContact as Outlook.ContactItem
Dim MesContacts as Outlook.MAPIFolder

For each MonContact in MesContacts .Items
'traitement
Next MonContact

Le dossier contient également des listes de distribution, qui ne sont donc
pas de même nature que les contacts. Une erreur se produit lorsque
MonElément tente de référencer la première de ces listes de distribution.

J'ai modifié le code de la manière suivante :

Dim MonElément as Object
Dim MonContact as outlook.ContactItem
Dim MesContacts as Outlook.MAPIFolder

For each UnElément in MesContacts .Items
Select Case UnElément.Class
Case olContactItem
Set MonContact = UnElément
'traitement
end Select
Next MonElément

Aucune erreur ne se produit plus, mais aucun traitement n'est effectué car
UnElément.Class ne prend apparemment jamais la valeur OlContactItem.

Je sais que je peux introduire faire ainsi
On error resume Next
Set MonContact = UnElément
If Err.Number = 0 then
'traitement
end if
Err.clear
pour agir en conséquence.

Mais quelqu'un peut-il me dire comment déterminer de manière moins
"bestiale" si UnElément est un contact ?

D'avance, merci