Opérateur Like
Permet de comparer deux chaînes.
Syntaxe
résultat = stringLikepattern
La syntaxe de l'opérateur Like est composée des arguments suivants :
Élément | Description |
---|---|
result | Obligatoire ; toute variablenumérique. |
chaîne | Obligatoire ; toute expression de chaîne. |
pattern | Obligatoire. Toute expression de chaîne respectant les conventions décrites dans les remarques. |
Remarques
Si la chaîne correspond au modèle, le résultat est True ; s’il n’y a pas de correspondance, le résultat est False. Si la chaîne ou le modèle a la valeur Null, le résultat est Null.
Le comportement de l’opérateur Like dépend de l’instruction Option Compare. Par défaut, la méthode de comparaison de chaînes de chaque module est Option Compare Binary.
L’instruction Option Compare Binary compare des chaînes en fonction d’un ordre de tri dérivé de la représentation binaire interne des caractères. L’ordre de tri est défini par la page de code.
L’exemple suivant présente un ordre de tri binaire courant :
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
La méthode Option Compare Text compare des chaînes sans prise en compte de la casse, en fonction d’un ordre de tri textuel défini par les paramètres régionaux de votre système. Avec la méthode Option Compare Text, les caractères de l’exemple précédent sont triés de la manière suivante :
(A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)
La gestion intégrée des critères spéciaux permet une grande souplesse dans les comparaisons de chaînes. Vous pouvez en effet utiliser des caractères génériques, des listes de caractères ou des plages de caractères, combinés à votre gré, pour comparer des chaînes. Le tableau suivant définit les caractères autorisés dans l’argument pattern et leur correspondance :
Caractère(s) dans pattern | Correspondance dans l’argument string |
---|---|
? | Tout caractère unique. |
* | Aucun ou plusieurs caractères. |
# | N’importe quel chiffre (0-9). |
[ charlist ] | Tout caractère unique compris dans l’argument charlist. |
[ !charlist ] | Tout caractère unique non compris dans l’argument charlist. |
Un groupe d’un ou plusieurs caractères ( charlist ) placés entre crochets ([ ]) peut être utilisé pour faire correspondre n’importe quel caractère dans une chaîne et peut inclure presque n’importe quel code de caractère, y compris les chiffres.
Remarque
Pour faire correspondre les caractères spéciaux du crochet gauche ([), du point d’interrogation ( ?), du signe numérique (#) et de l’astérisque (*), placez-les entre crochets. Le crochet droit (]) ne peut pas être utilisé dans un groupe pour correspondre à lui-même, mais il peut être utilisé en dehors d’un groupe en tant que caractère individuel.
En utilisant un trait d’union (-) pour séparer les limites supérieure et inférieure de la plage, la liste de caractères peut spécifier une plage de caractères. Par exemple, [A-Z]
produit une correspondance si la position de caractère correspondante dans la chaîne contient des lettres majuscules dans la plage A-Z. Plusieurs plages sont incluses dans les crochets sans délimiteurs.
La signification d’une plage dépend de l’ordre des caractères en vigueur au moment de l’exécution ; il est déterminé par l’instruction Option Compare et les paramètres régionaux du système sur lequel le code est exécuté. À l’aide de l’exemple Option Compare Binary , la plage [A-E]
correspond à A, B et E. Avec l’option Comparer le texte, [A-E]
correspond à A, A, À, à, B, B, E, e. La plage ne correspond ni à Ê, ni à ê, car les caractères accentués viennent après les caractères non accentués dans l’ordre de tri.
Les autres règles importantes qui régissent l’utilisation de critères spéciaux sont les suivantes :
- Un point d’exclamation (!) placé au début de l’argument charlist signifie que la correspondance est uniquement établie si l’argument string ne contient aucun des caractères de l’argument charlist. Utilisé hors des crochets droits, le point d’exclamation correspond à lui-même.
- Le trait d’union (-) peut apparaître soit au début (éventuellement à la suite d’un point d’exclamation), soit à la fin de l’argument charlist pour correspondre à lui-même. En tout autre emplacement, le trait d’union sert à désigner une plage de caractères.
- Lorsqu’une plage de caractères est définie, les caractères doivent apparaître dans l’ordre ascendant (du premier au dernier).
[A-Z]
est un modèle valide, mais[Z-A]
ne l’est pas. - La séquence
[]
de caractères est considérée comme une chaîne de longueur nulle (« »).
Dans certaines langues, l’alphabet comporte des caractères spéciaux représentant deux caractères distincts. Par exemple, plusieurs langues utilisent le caractère « æ » pour représenter les caractères « a » et « e » lorsqu’ils apparaissent ensemble. L’opérateur Like reconnaît que ce caractère spécial équivaut à deux caractères.
Quand une langue utilisant un de ces caractères spéciaux est définie dans les paramètres régionaux du système, toute occurrence du caractère spécial dans les arguments pattern ou string correspond à la séquence de deux caractères équivalente dans l’autre chaîne. De même, un caractère spécial placé entre crochets droits (seul, dans une liste ou dans une plage) dans l’argument pattern correspond à la séquence de deux caractères équivalente dans l’argument string.
Exemple
Cet exemple utilise l’opérateur Like pour comparer une chaîne à un modèle.
Dim MyCheck
MyCheck = "aBBBa" Like "a*a" ' Returns True.
MyCheck = "F" Like "[A-Z]" ' Returns True.
MyCheck = "F" Like "[!A-Z]" ' Returns False.
MyCheck = "a2a" Like "a#a" ' Returns True.
MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Returns True.
MyCheck = "BAT123khg" Like "B?T*" ' Returns True.
MyCheck = "CAT123khg" Like "B?T*" ' Returns False.
MyCheck = "ab" Like "a*b" ' Returns True.
MyCheck = "a*b" Like "a [*]b" ' Returns False.
MyCheck = "axxxxxb" Like "a [*]b" ' Returns False.
MyCheck = "a [xyz" Like "a [[]*" ' Returns True.
MyCheck = "a [xyz" Like "a [*" ' Throws Error 93 (invalid pattern string).
Voir aussi
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.