Numéro d'article: 291161 - Dernière mise à jour: jeudi 23 novembre 2006 - Version: 1.1

OL2002 : Utilisation des fonctionnalités Find et Restrict pour extraire des éléments

Ancien nº de publication de cet article : F291161

Sommaire

Agrandir tout | Réduire tout

Résumé

Cet article aborde la façon d'utiliser les méthodes Find et Restrict dans le modèle d'objet Microsoft Outlook. Les deux méthodes sont utilisées pour récupérer par programmation les éléments d'un dossier basé sur la valeur des champs Outlook. Il contient les rubriques suivantes :

Les méthodes Find et FindNext
La méthode Restrict
Utilisation des types de données avec des filtres
Utilisation des variables comme partie du filtre
Utilisation des opérateurs logiques comme partie du filtre
Questions et problèmes courants

Plus d'informations

IMPORTANT : Avant d'utiliser le code dans cet article, assurez-vous que :
  • Tous les exemples de codes Automation dans cet article peuvent être exécutés depuis Visual Basic ou Visual Basic pour Applications.
  • Dans votre projet Visual Basic ou Visual Basic pour Applications, vous devez ajouter une référence à la bibliothèque d'objets Microsoft Outlook 10.0.
  • Vous devez avoir sélectionné un dossier Contacts avant d'exécuter les exemples de code. Il est recommandé de créer un nouveau dossier Contacts temporaire pour les tests et copier certains contacts dans le nouveau dossier. De cette façon vous pouvez changer librement les champs et vous pourrez de nouveau supprimer le dossier ultérieurement.
  • Chacune des lignes de code " sFilter " indiquées à titre d'exemple peut être intégrée dans les deux exemples de procédure en remplaçant les lignes de code sFilter existantes dans ces procédures.
  • Les exemples de procédure sortent des informations dans la fenêtre Immédiate de l'éditeur Visual Basic. Vous pouvez vouloir personnaliser cette sortie si vous remplacez d'autres lignes de code sFilter.
Microsoft fournit des exemples de programmation à des fins d'illustration uniquement, sans garantie explicite ou implicite, y compris, de manière non limitative, les garanties implicites de qualité marchande et/ou d'adéquation à un usage particulier. Cet article suppose que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du Support technique Microsoft peuvent vous expliquer les fonctionnalités d'une procédure particulière, mais ils ne peuvent pas modifier les exemples en vue de vous fournir des fonctionnalités supplémentaires ou de créer des procédures répondant à vos besoins spécifiques. Si vous ne maîtrisez que partiellement la programmation, vous pouvez contacter un fournisseur de logiciels agréé Microsoft ou l'assistance téléphonique (payante) de Microsoft au (800) 936-5200 (États-Unis). Pour plus d'informations sur les fournisseurs de logiciels agréés Microsoft, veuillez consulter la page suivante sur le Web :
https://partner.microsoft.com/global/30000104 (https://partner.microsoft.com/global/30000104)
Pour plus d'informations sur les options d'assistance disponibles auprès de Microsoft, veuillez consulter la page Web suivante :
http://support.microsoft.com/directory/overview.asp (http://support.microsoft.com/?scid=http%3a%2f%2fsupport.microsoft.com%2fdirectory%2foverview.asp)

Les méthodes Find et FindNext

La méthode Find permet de trouver un élément dans un dossier qui correspond à certains critères.

Si vous devez rechercher des éléments supplémentaires correspondant aux mêmes critères, vous pouvez utiliser la méthode FindNext pour effectuer une nouvelle recherche ou utiliser la méthode FindNext pour trouver tous les éléments qui correspondent aux critères. Cette fonctionnalité est identique à celle de la méthode Restrict (traitée plus loin dans cet article).

L'exemple d'automation suivant trouve tous les contacts qui fonctionnent chez Microsoft :
Sub FindContacts()
   Dim ol As Outlook.Application
   Dim oItms As Outlook.Items
   Dim sFilter As String
   Dim oItm As Outlook.ContactItem
   
   Set ol = New Outlook.Application

   ' Get the items in the currently selected folder
   Set oItms = ol.ActiveExplorer.CurrentFolder.Items

   ' The filter string to search with
   sFilter = "[CompanyName] = 'Microsoft'"
   
   ' Find the first item
   Set oItm = oItms.Find(sFilter)

   ' Loop through to find additional items
   Do While Not oItm Is Nothing
      Debug.Print oItm.FullName & " (" & oItm.CompanyName & ")"
      Set oItm = oItms.FindNext
   Loop
   
   Set oItm = Nothing
   Set oItms = Nothing
   Set ol = Nothing
End Sub

La méthode Restrict

La méthode Restrict applique un filtre à l'ensemble des Éléments, retournant une nouvelle collection contenant tous les éléments issus de la collection originale qui correspondent au filtre. Cette méthode est une variante à l'utilisation des méthodes Find et FindNext.

L'exemple d'automation suivant utilise la méthode Restrict pour appliquer un filtre aux éléments Contact pour trouver uniquement ces contacts qui fonctionnent chez Microsoft. Il fonctionne exactement comme l'exemple Find/FindNext traité antérieurement.
Sub RestrictContacts()
   Dim ol As Outlook.Application
   Dim oItms As Outlook.Items
   Dim oResItems As Outlook.Items
   Dim sFilter As String
   Dim oItm As Outlook.ContactItem
   
   Set ol = New Outlook.Application

   ' Get the items in the currently selected folder
   Set oItms = ol.ActiveExplorer.CurrentFolder.Items

   ' The filter string to search with
   sFilter = "[CompanyName] = 'Microsoft'"

   ' Find all items that meet the search criteria
   Set oResItems = oItms.Restrict(sFilter)

   ' Loop through all of the found items
   For Each oItm In oResItems
      Debug.Print oItm.FullName & " (" & oItm.CompanyName & ")"
   Next
      
   Set oItm = Nothing
   Set oItms = Nothing
   Set ol = Nothing
End Sub

Utilisation des types de données avec des filtres

Chaîne (pour les champs Texte)

Lorsque vous recherchez des champs Texte, vous pouvez utiliser une apostrophe(') ou des guillemets ("") pour délimiter les valeurs qui font partie du filtre. Par exemple, toutes les lignes suivantes fonctionnent correctement lorsque le champ est de type Chaîne :
sFilter = "[CompanyName] = 'Microsoft'"

sFilter = "[CompanyName] = ""Microsoft"""

sFilter = "[CompanyName] = " & Chr(34) & "Microsoft" & Chr(34)

Date

Bien que les dates et les durées sont généralement enregistrées avec un format de Date, les méthodes Find et Restrict imposent que la date et l'heure soient converties en une représentation sous forme de chaîne. Pour vous assurer que la date est formatée selon les modalités Outlook, utilisez la fonction Format.

L'exemple suivant crée un filtre pour trouver tous les contacts qui ont été modifiés après le 15 janvier 1999 à 15:30.
sFilter = "[LastModificationTime] > '" & Format("1/15/99 3:30pm", "ddddd h:nn AMPM") & "'"

Opérateurs booléens

Les opérateurs booléens TRUE/FALSE, YES/NO, ON/OFF, etc. ne doivent pas être convertis en chaîne. Par exemple, pour déterminer si la journalisation est activée pour les contacts, vous pouvez utiliser ce filtre :
sFilter = "[Journal] = True"
NOTE : If you use quotation marks as delimiters with Boolean fields, then an empty string will find items whose fields are False and all non-empty strings will find items whose fields are True. Où est la traduction ?

Mots clés (ou Catégories)

TheLe champ Catégories est de type mots clés, conçu pour contenir des valeurs multiples. Lorsque vous y accédez par programmation, le champ Catégories se comporte comme un champ de Texte et la chaîne doit correspondre exactement. Les valeurs dans la chaîne de texte sont séparées par une virgule et un espace.

Ce qui signifie que vous ne pouvez pas utiliser les méthodes Find et Restrict sur un champ de mots clés s'il contient plusieurs valeurs. Par exemple, si vous avez un contact dans la catégorie " Business " et un autre dans les catégories Business et " Social ", vous ne pouvez pas facilement utiliser les méthodes Find et Restrict pour récupérer tous les éléments dans la catégorie Business. Vous pouvez parcourir tous les contacts dans le dossier et utiliser la fonction Instr pour savoir si la chaîne " Business " est contenue dans l'ensemble du champ de mots clés.

REMARQUE : La seule exception possible est que vous limitiez le champ Catégories à deux ou un nombre inférieur de valeurs. Vous pouvez alors utiliser les méthodes Find et Restrict avec l'opérateur logique OR pour récupérer tous les contacts Business. Par exemple (dans pseudocode) : " Business " OR " Business, Personal " OR " Personal, Business. "

Les chaînes de catégorie ne tiennent pas compte de la casse.

Entier

Vous pouvez rechercher les champs contenant un nombre entier ou sans les guillemets comme délimiteurs. Les filtres suivants trouvent les contacts créés avec Outlook 2000 :
sFilter = "[OutlookInternalVersion] = 92711"
sFilter = "[OutlookInternalVersion] = '92711'"

Utilisation des variables comme partie du filtre

Comme le montre l'exemple de méthode Restrict dans le fichier d'aide Outlook Visual Basic (Vbaoutl9.chm), vous pouvez utiliser des valeurs en provenance de variables comme partie du filtre.

Le code VBScript exemple suivant illustre la syntaxe qui utilise les variables comme partie du filtre.
sFullName = "John Smith"

' This approach uses Chr(34) to delimit the value.
sFilter = "[FullName] = " & Chr(34) & sFullName & Chr(34)

' This approach uses double quotation marks to delimit the value.
sFilter = "[FullName] = """ & sFullName & """"

Utilisation des opérateurs logiques comme partie du filtre

Les opérateurs logiques autorisés sont AND, OR et NOT. Ci-après des variantes de la clause pour la méthode Restrict vous permettant de spécifier plusieurs critères.

  • OU : Le code suivant retourne tous les éléments de contact qui ont comme catégorie Business ou Personal.
    sFilter = "[Categories] = 'Personal' Or [Categories] = 'Business'"
  • AND : Le code suivant récupère tous les contacts personnels qui fonctionnent chez Microsoft :
    sFilter = "[Categories] = 'Personal' And [CompanyName] = 'Microsoft'"
  • NOT : The following code retrieves all personal contacts who don't work at Microsoft. ? Où est la traduction ?
    sFilter = "[Categories] = 'Personal' And Not([CompanyName] = 'Microsoft')"

Questions et problèmes courants

  • Si vous essayez d'utiliser les méthodes Rechercher ou Restreindre avec des champs définis par l'utilisateur, ils doivent être définis dans le dossier. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
    290656  (http://support.microsoft.com/kb/290656/FR/ ) OL2002 : Utilisation de champs définis par l'utilisateur dans des solutions
  • Il est impossible d'effectuer une opération " contains ". Par exemple, vous ne pouvez pas utiliser la méthode Find ou Restrict pour rechercher les éléments qui ont un mot dans le champ Sujet. Parcourez plutôt tous les éléments du dossier et utilisez la fonction InStr pour effectuer une recherche dans un champ.
  • Vous pouvez utiliser les méthodes Find et Restrict pour rechercher les éléments qui commencent dans une certain plage de caractères. Par exemple, pour rechercher tous les contacts dont le nom de famille commence par la lettre M, utilisez ce filtre :
    sFilter = "[LastName] > 'LZZZ' And [LastName] < 'N'"

Références

Pour plus d'informations sur les ressources disponibles et les réponses aux questions les plus fréquemment posées à propos des solutions Microsoft Outlook, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
287530  (http://support.microsoft.com/kb/287530/FR/ ) OL2002 : Questions sur les formulaires personnalisés et les solutions Microsoft Outlook

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Outlook 2002 Standard
Mots-clés : 
kbhowto KB291161
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
 

Traductions disponibles

 

Related Support Centers