{"id":454,"date":"2025-08-29T09:56:54","date_gmt":"2025-08-29T09:56:54","guid":{"rendered":"https:\/\/loufab.alwaysdata.net\/blogaccess\/?p=454"},"modified":"2025-08-29T12:22:57","modified_gmt":"2025-08-29T12:22:57","slug":"vba-operateur-like-commun-a-sql-vba-et-aux-expressions","status":"publish","type":"post","link":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/2025\/08\/29\/vba-operateur-like-commun-a-sql-vba-et-aux-expressions\/","title":{"rendered":"VBA : Op\u00e9rateur Like commun \u00e0 SQL, VBA et aux Expressions"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"396\" src=\"https:\/\/loufab.alwaysdata.net\/blogaccess\/wp-content\/uploads\/2025\/08\/like-1024x396.png\" alt=\"\" class=\"wp-image-466\" srcset=\"https:\/\/loufab.alwaysdata.net\/blogaccess\/wp-content\/uploads\/2025\/08\/like-1024x396.png 1024w, https:\/\/loufab.alwaysdata.net\/blogaccess\/wp-content\/uploads\/2025\/08\/like-300x116.png 300w, https:\/\/loufab.alwaysdata.net\/blogaccess\/wp-content\/uploads\/2025\/08\/like-768x297.png 768w, https:\/\/loufab.alwaysdata.net\/blogaccess\/wp-content\/uploads\/2025\/08\/like-1536x594.png 1536w, https:\/\/loufab.alwaysdata.net\/blogaccess\/wp-content\/uploads\/2025\/08\/like-500x193.png 500w, https:\/\/loufab.alwaysdata.net\/blogaccess\/wp-content\/uploads\/2025\/08\/like.png 1676w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>L&rsquo;op\u00e9rateur logique LIKE est un op\u00e9rateur d&rsquo;\u00e9galit\u00e9 strictement r\u00e9serv\u00e9 aux chaines de type texte. Sa particularit\u00e9 est de pouvoir comparer des valeurs \u00e0 un masque compos\u00e9 de caract\u00e8res de substitution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Glossaire<\/h2>\n\n\n\n<p>Dans cet article : Masque, caract\u00e8res de substitution, masque de comparaison, r\u00e8gles  d\u00e9signe la deuxi\u00e8me partie du Like.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comme le = mais plus flexible<\/h2>\n\n\n\n<p>Il s&rsquo;utilise comme n&rsquo;importe quel op\u00e9rateur logique soit :<\/p>\n\n\n\n<p><strong>[Expression \u00e0 comparer] Like [masque de comparaison]<\/strong> <\/p>\n\n\n\n<p>Retourne un <strong>True, False<\/strong> ou <strong>Null<\/strong>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">'En VBA\nIf ExpressionAcomparer Like ExpressionLike then\n\n'Expression\n=iif(ExpressionAcomparer Like ExpressionLike;True;False)\n\n'SQL\n... WHERE ExpressionAcomparer Like ExpressionLike ...<\/pre>\n\n\n\n<p>La syntaxe est identique en SQL <strong>(*)<\/strong>, VBA ou dans les expressions.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>(*) Les moteurs de base de donn\u00e9es utilisent plut\u00f4t les jockers ANSI.<br>* devient % et ? devient _.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Les jokers<\/h2>\n\n\n\n<p>Les jokers sont des caract\u00e8res de substitution permettant de composer le masque de comparaison. Ils sont combinables.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">L&rsquo;ast\u00e9risque *<\/h2>\n\n\n\n<p>L&rsquo;ast\u00e9risque <strong>*<\/strong> remplace plusieurs caract\u00e8res alphanum\u00e9riques et sp\u00e9ciaux.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Expression<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>\u00ab\u00a0abcde45\u00e9#\u00a0\u00bb like \u00ab\u00a0abc*\u00a0\u00bb<\/td><td>Toute chaine commen\u00e7ant par abc<\/td><\/tr><tr><td>\u00ab\u00a001\u00e8+abc\u00a0\u00bb like \u00ab\u00a0*abc\u00a0\u00bb<\/td><td>Toute chaine finissant par abc<\/td><\/tr><tr><td>\u00ab\u00a001abc_\u00e7\u00a0\u00bb like \u00ab\u00a0*abc*\u00a0\u00bb<\/td><td>Toute chaine contenant abc<\/td><\/tr><tr><td>\u00ab\u00a0ab(6\u00e71c\u00a0\u00bb like \u00ab\u00a0ab*c\u00a0\u00bb<\/td><td>Toute chaine commen\u00e7ant pas ab et finissant par c<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Le point d&rsquo;interrogation ?<\/h2>\n\n\n\n<p>Le point d&rsquo;interrogation <strong>?<\/strong> remplace un seul caract\u00e8re quel qu&rsquo;il soit : lettre, chiffre, caract\u00e8re sp\u00e9cial.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Expression<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>\u00ab\u00a0A\u00a0\u00bb Like \u00ab\u00a0?\u00a0\u00bb<\/td><td>Toute chaine contenant 1 caract\u00e8re<\/td><\/tr><tr><td>\u00ab\u00a0abcD\u00a0\u00bb like \u00ab\u00a0abc?\u00a0\u00bb<\/td><td>Toute chaine commen\u00e7ant par abc avec 1 caract\u00e8re \u00e0 la fin.<\/td><\/tr><tr><td>\u00ab\u00a00adc\u00a0\u00bb like \u00ab\u00a0?abc\u00a0\u00bb<\/td><td>Toute chaine commen\u00e7ant par 1 caract\u00e8re et finissant par abc.<\/td><\/tr><tr><td>\u00ab\u00a00abc)\u00a0\u00bb like \u00ab\u00a0?abc?\u00a0\u00bb<\/td><td>Toute chaine contenant abc avec 1 caract\u00e8re de part et d&rsquo;autre.<\/td><\/tr><tr><td>\u00ab\u00a0x4z\u00a0\u00bb like \u00ab\u00a0???\u00a0\u00bb <\/td><td>Toute chaine contenant 3 caract\u00e8res contigus.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><\/ul>\n\n\n\n<p>Comme le point d&rsquo;interrogation remplace 1 caract\u00e8re on peut en utiliser plusieurs \u00e0 la suite dans un masque de comparaison.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Le di\u00e8se #<\/h2>\n\n\n\n<p>Le caract\u00e8re di\u00e8se <strong>#<\/strong> fonctionne comme le point d&rsquo;interrogation mais remplace un chiffre, donc ni lettre, ni un caract\u00e8re sp\u00e9cial.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Expression<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>\u00ab\u00a01\u00a0\u00bb like \u00ab\u00a0#\u00a0\u00bb<\/td><td>un chiffre de 0 \u00e0 9 <br><strong>identique \u00e0 [0-9]<\/strong><\/td><\/tr><tr><td>\u00ab\u00a0100.99\u00a0\u00bb like \u00ab\u00a0###.##\u00a0\u00bb<\/td><td>3 chiffres <strong>et<\/strong> 1 point <strong>et <\/strong>2 chiffres<\/td><\/tr><tr><td>\u00ab\u00a0+100.99\u00a0\u00bb like \u00ab\u00a0[!-]###.##\u00a0\u00bb\u00a0\u00bb<\/td><td><\/td><\/tr><tr><td>\u00ab\u00a0A25X17\u00a0\u00bb like \u00ab\u00a0[A-C]##[!W]##\u00a0\u00bb<\/td><td>A, B ou C, 2 chiffres, pas de W, 2 chiffres<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Les crochets [ ]<\/h2>\n\n\n\n<p>Les crochets permettent de remplacer un caract\u00e8re situ\u00e9 dans une plage particuli\u00e8re. Il a aussi comme fonction de pouvoir utiliser les caract\u00e8res de substitutions en tant que caract\u00e8res num\u00e9riques.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Expression<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>\u00ab\u00a0B\u00a0\u00bb Like \u00ab\u00a0[A -C]\u00a0\u00bb <\/td><td>Le tiret d\u00e9termine une plage de caract\u00e8res contigus entre 2 bornes. Ici A, B ou C.<\/td><\/tr><tr><td>\u00ab\u00a0C\u00a0\u00bb Like \u00ab\u00a0[A,C,E]\u00a0\u00bb<\/td><td>La virgule, d\u00e9termine une s\u00e9rie de caract\u00e8res. Ici A, C ou E.<\/td><\/tr><tr><td>\u00ab\u00a0ANZ\u00a0\u00bb Like \u00ab\u00a0A[M-O][W,Z]\u00a0\u00bb<\/td><td>La combinaison des 2. Ici A, M ou N ou O et W ou Z.<\/td><\/tr><tr><td>\u00ab\u00a0B2\u00a0\u00bb Like \u00ab\u00a0[A-C][!1]\u00a0\u00bb<\/td><td>A, B, C mais pas 1.<\/td><\/tr><tr><td>\u00ab\u00a0Cbc3\u00a0\u00bb Like \u00ab\u00a0[A-D]bc[!0]\u00a0\u00bb<\/td><td>A \u00e0 D puis bc puis &lt;>0<br>\u00ab\u00a0abc2\u00a0\u00bb vrai !<br>\u00ab\u00a0add2\u00a0\u00bb faux ! (pas de bc)<br>\u00ab\u00a0abc0\u00a0\u00bb faux ! (0 \u00e0 la fin)<\/td><\/tr><tr><td>\u00ab\u00a0rL5\u00a0\u00bb Like \u00ab\u00a0[a-z][A-Z][0-9]\u00a0\u00bb <\/td><td>Uniquement en <strong>VBA <\/strong>avec un <strong>Option Compare Binary<\/strong> !<br>La r\u00e9ponse doit contenir 3 digits. 1 lettre en minuscule, 1 en majuscule, un chiffre.<br><br>\u00ab\u00a0aB1\u00a0\u00bb vrai !<br>\u00ab\u00a0AX9\u00a0\u00bb faux ! A est en majuscule.<br>\u00ab\u00a0aAd\u00a0\u00bb faux ! pas de chiffre \u00e0 la fin.<br>\u00ab\u00a0aB123\u00a0\u00bb faux ! 2 et 3 en trop.<br>\u00ab\u00a0abR5\u00a0\u00bb faux ! a ou b en trop.<\/td><\/tr><tr><td>\u00ab\u00a0BMW10\u00a0\u00bb Like \u00ab\u00a0[A-C]M[S-Z]10\u00a0\u00bb<\/td><td>A,B ou C <strong>et<\/strong> M <strong>et<\/strong> X,S \u00e0 Z <strong>et<\/strong> 10<\/td><\/tr><tr><td>\u00ab\u00a0&lsquo;bonjour'\u00a0\u00bb Like \u00ab\u00a0[\u00ab\u00a0\u00a0\u00bb,&rsquo;]*[\u00ab\u00a0\u00a0\u00bb,&rsquo;]\u00a0\u00bb<\/td><td>On teste si la chaine est entour\u00e9e de \u00a0\u00bb ou &lsquo;. <strong>(*)<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>(*) Ceci n&rsquo;est que pour l&rsquo;exemple, cette comparaison n&rsquo;est pas du tout robuste.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Crochets avec des caract\u00e8res sp\u00e9ciaux<\/h2>\n\n\n\n<p>Avec des caract\u00e8res sp\u00e9ciaux la musique est la m\u00eame. Seules les paroles changent.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Expression<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>\u00ab\u00a0\u00c4\u00a0\u00bb like \u00ab\u00a0[\u00c0-\u00c6]\u00a0\u00bb<\/td><td>du 0192 au 0198<\/td><\/tr><tr><td>\u00ab\u00a0)\u00a0\u00bb like \u00ab\u00a0[!-\/]\u00a0\u00bb<\/td><td>du 0033 au 0047 <\/td><\/tr><tr><td><\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Ce qui ne fonctionne pas avec les crochets<\/h2>\n\n\n\n<p>Les combinaisons ne fonctionnent pas. Il faut obligatoirement s\u00e9parer vos r\u00e8gles. Ici quelques exemples.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Expression FAUSSE<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>Expression VRAI<\/strong><\/td><\/tr><tr><td>\u00ab\u00a0[Z-A]\u00a0\u00bb<\/td><td>Toujours respecter l&rsquo;ordre de tri. <\/td><td>\u00ab\u00a0[A-Z]\u00a0\u00bb<\/td><\/tr><tr><td>\u00ab\u00a0[8-5]\u00a0\u00bb<\/td><td>Toujours respecter l&rsquo;ordre de tri.<\/td><td>\u00ab\u00a0[5-8]\u00a0\u00bb<\/td><\/tr><tr><td>\u00ab\u00a0[A-C,!1]\u00a0\u00bb<\/td><td>Pas d&rsquo;assemblage<\/td><td>\u00ab\u00a0[A-C][!1]\u00a0\u00bb<\/td><\/tr><tr><td>\u00ab\u00a0[a-z,A-Z,0-9]\u00a0\u00bb<\/td><td>Pas d&rsquo;assemblage<\/td><td>\u00ab\u00a0[a-z][A-Z][0-9]\u00a0\u00bb<\/td><\/tr><tr><td>\u00ab\u00a0[a-z!]\u00a0\u00bb<\/td><td>La n\u00e9gation toujours au d\u00e9but<\/td><td>\u00ab\u00a0[!a-z]<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Attention<\/strong> ! Les plages de caract\u00e8res doivent toujours \u00eatre plac\u00e9es dans l&rsquo;ordre croissant. Par exemple [A-C] est valide alors que [C-A] ne l&rsquo;est pas, de m\u00eame que [0-9] est valide et [9-0] ne l&rsquo;est pas. Pour d\u00e9terminer l&rsquo;ordre des caract\u00e8res, consultez la table ASCII et r\u00e9alisez des tests.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">La n\u00e9gation<\/h2>\n\n\n\n<p>On peut utiliser <strong>2 types de n\u00e9gation<\/strong> avec l&rsquo;op\u00e9rateur <strong>Like<\/strong>.<\/p>\n\n\n\n<p>Le <strong>Not<\/strong> habituel qui englobe l&rsquo;ensemble de la comparaison, comme dans l&rsquo;exemple suivant<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Expression<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>Not \u00ab\u00a0abc\u00a0\u00bb Like \u00ab\u00a0a?c\u00a0\u00bb<\/td><td>Ne correspond pas<\/td><\/tr><tr><td>Not \u00ab\u00a0abc\u00a0\u00bb Like \u00ab\u00a0a*c\u00a0\u00bb<\/td><td>Ne correspond pas<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Le<strong> ! point d&rsquo;exclamation<\/strong> dans les crochets du masque de comparaison. Dans ce cas on obtient plus de finesse dans la comparaison.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Expression<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>\u00ab\u00a0abc\u00a0\u00bb Like \u00ab\u00a0[!a]bc\u00a0\u00bb<\/td><td>Faux ! le premier caract\u00e8re ne doit pas \u00eatre \u00ab\u00a0a\u00a0\u00bb.<\/td><\/tr><tr><td>\u00ab\u00a01bc\u00a0\u00bb Like \u00ab\u00a0[!a-z]bc\u00a0\u00bb<\/td><td>Vrai ! le premier caract\u00e8re n&rsquo;est pas un caract\u00e8re compris entre a et z.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Rechercher les caract\u00e8res g\u00e9n\u00e9riques<\/h2>\n\n\n\n<p>On peut \u00eatre emmen\u00e9 \u00e0 rechercher l&rsquo;un des caract\u00e8res de substitution dans une cha\u00eene. Quelques exemples dans le tableau suivant.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Expression<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>\u00ab\u00a0Es-tu l\u00e0 ?\u00a0\u00bb Like \u00ab\u00a0Es-tu l\u00e0 [?]\u00a0\u00bb<\/td><td>Le point d&rsquo;interrogation \u00e0 la fin d&rsquo;une phrase.<\/td><\/tr><tr><td>\u00ab\u00a0Es-tu l\u00e0 !\u00a0\u00bb Like \u00ab\u00a0Es-tu l\u00e0 ?\u00a0\u00bb<\/td><td>Un caract\u00e8re \u00e0 la fin. ? ou autre.<\/td><\/tr><tr><td>\u00ab\u00a045\u00a0\u00bb like \u00ab\u00a0[]##\u00a0\u00bb<\/td><td>Pas d&rsquo;espace en d\u00e9but de chaine.<\/td><\/tr><tr><td><br>\u00ab\u00a0AB\u00a0\u00bb Like \u00ab\u00a0A[]B\u00a0\u00bb<\/td><td>Pas d&rsquo;espace entre A et B<br>\u00ab\u00a0A B\u00a0\u00bb est faux !<\/td><\/tr><tr><td>\u00ab\u00a0[Vrai]\u00a0\u00bb Like \u00ab\u00a0[[]Vrai]\u00a0\u00bb<\/td><td>Commence par le crochet ouvrant [.<br>Le crochet fermant ] n&rsquo;a pas besoin d&rsquo;\u00eatre isol\u00e9.<\/td><\/tr><tr><td>\u00ab\u00a0#N\/A\u00a0\u00bb Like \u00ab\u00a0[#]N\/A\u00a0\u00bb<\/td><td>Une cha\u00eene commen\u00e7ant par le caract\u00e8re #.<\/td><\/tr><tr><td>\u00ab\u00a0\u00a0\u00bb\u00a0\u00bbabc\u00a0\u00bb\u00a0\u00bb\u00a0\u00bb Like \u00ab\u00a0\u00a0\u00bb\u00a0\u00bb???\u00a0\u00bb\u00a0\u00bb\u00a0\u00bb<\/td><td>Une chaine commen\u00e7ant par \u00a0\u00bb et finissant par \u00ab\u00a0. <\/td><\/tr><tr><td> \u00ab\u00a0AOC \u00ab\u00a0M\u00e9doc\u00a0\u00bb 33&Prime; like \u00ab\u00a0AOC \u00ab\u00a0\u00a0\u00bb*\u00a0\u00bb\u00a0\u00bb ##\u00a0\u00bb<\/td><td>AOC \u00ab\u00a0une chaine\u00a0\u00bb 33<\/td><\/tr><tr><td>\u00ab\u00a0\u00a0\u00bb\u00a0\u00bbabc\u00a0\u00bb\u00a0\u00bb\u00a0\u00bb Like chr(34) &amp; \u00ab\u00a0abc\u00a0\u00bb &amp; chr(34)<\/td><td>On peut aussi utiliser ce genre de notation o\u00f9 on utilise chr(34) pour retourner le \u00ab\u00a0.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Avec d&rsquo;autres types de donn\u00e9es<\/h2>\n\n\n\n<p>Le LIKE peut fonctionner avec d&rsquo;autres types de donn\u00e9es mais les valeurs test\u00e9es seront transform\u00e9es en texte pour leur \u00e9valuation.<\/p>\n\n\n\n<p>Par exemple avec des dates on peut rechercher des s\u00e9ries.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Expression<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>Equivalent VBA<\/strong><\/td><\/tr><tr><td>date() Like \u00ab\u00a0##\/##\/2032\u00a0\u00bb<\/td><td>nous somme en 2032<\/td><td>Year(date)=2009<\/td><\/tr><tr><td>date() Like \u00ab\u00a0##\/1#\/2032\u00a0\u00bb<\/td><td>Nous sommes au 4e trimestre 2032<\/td><td>Format(Date,\u00a0\u00bbq\u00a0\u00bb)=4 (*)<\/td><\/tr><tr><td>date() Like \u00ab\u00a010\/##\/####\u00a0\u00bb<\/td><td>Nous somme le 10<\/td><td>Day(date)=10<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>(*) Dans les expressions la virgule doit \u00eatre remplac\u00e9e par un point virgule.<br><strong>Format(Date;\u00a0\u00bbq\u00a0\u00bb)<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p>On peut trouver certains int\u00e9r\u00eats \u00e0 utiliser un LIKE plut\u00f4t qu&rsquo;une expression plus acad\u00e9mique, mais attention aux r\u00e9sultats qui peuvent \u00eatre surprenants et loin de vos attentes. Un Like n&rsquo;est pas forc\u00e9ment plus performant par rapport aux fonctions pr\u00e9vues.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>(*) t en SQL, q en VBA. On peut \u00e9galement utiliser la fonction DatePart().<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Quelques tests dans la fen\u00eatre d&rsquo;ex\u00e9cution de VBE<\/h2>\n\n\n\n<p>Vous pouvez vous entrainer dans la fen\u00eatre d&rsquo;ex\u00e9cution pour concevoir vos masques.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">? \"ceci#est [la preuve] par 9 ?\" LIKE \"ceci[#]*[[]la preuve[]]*[0,9]?[?]\"\nVrai\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">La casse<\/h2>\n\n\n\n<p>Vous avez pu remarquer que Like n&rsquo;est pas sensible \u00e0 la casse lors de la comparaison.<br>Il y a cependant un moyen d&rsquo;en tenir compte. Pour cela il faut modifier le param\u00e8tre <strong>Option Compare<\/strong> situ\u00e9 dans l&rsquo;en-t\u00eate du module VBA qui contient l&rsquo;instruction.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Option Compare Database\nOption Explicit<\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Option<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td><strong>Option Compare Database<\/strong><\/td><td>Ne tient pas compte de la casse<br>\u00ab\u00a0AAA\u00a0\u00bb est \u00e9gal \u00e0 \u00ab\u00a0aaa\u00a0\u00bb<\/td><\/tr><tr><td><strong>Option Compare Binary<\/strong><\/td><td>Tient compte de la casse<br> \u00ab\u00a0AAA\u00a0\u00bb est diff\u00e9rent de \u00ab\u00a0aaa\u00a0\u00bb<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Pour une prise en charge de la casse dans vos requ\u00eates vous avez d&rsquo;autres solutions :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Changer de moteur de base de donn\u00e9es. <strong>Ms Sql server, Mariadb, PostgreSQL, Oracle <\/strong>prennent en charge la casse.<\/li>\n\n\n\n<li>Cr\u00e9er votre propre fonction VBA que vous appellerez depuis vos requ\u00eates. Voir l&rsquo;exemple ci-dessous.<\/li>\n<\/ul>\n\n\n\n<p>Mettez cette fonction dans un module Standard.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Option Compare Binary  'respect de la casse\nOption Explicit\n\nPublic Function isLike(value As Variant, masque As Variant) As Variant\n'Fabrice Constans (C2ED)\n'Tient compte d'un passage de Null et de son retour.\n'Appel de la fonction dans tous les composants d'Access\n'VBA : If isLike(date() ,\"##\/##\/2032\") then\n'Expression : =Iif(isLike(date() ;\"##\/##\/2032\");\"Vrai\";\"False\")\n'SQL : SELECT madate FROM matable WHERE isLike(madate ,\"##\/##\/2032\");\n\n    isLike = value Like masque\n\nEnd Function\n\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Attention \u00e0 la valeur Null !<\/h2>\n\n\n\n<p>Le Null est retourn\u00e9 lorsque au moins l&rsquo;une des expressions vaut Null.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Expression<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td>Null Like \u00ab\u00a0*\u00a0\u00bb<\/td><td>La valeur \u00e0 comparer vaut Null<\/td><\/tr><tr><td>\u00ab\u00a0abc\u00a0\u00bb Like Null<\/td><td>Le masque de comparaison vaut Null<\/td><\/tr><tr><td>Null Like Null<\/td><td>Les 2 c\u00f4t\u00e9 de la comparaison valent Null<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">? Null Like \"*\"\nNull\n? \"giraphe sophie\" Like Null\nNull\n? Null Like null\nNull<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>En conclusion voici un op\u00e9rateur bien utile qui rempli 90% des demandes en toutes circonstances. Il p\u00eache cependant par le manque de prise en compte de la casse avec le moteur de base de donn\u00e9es interne d&rsquo;Access, ACE et dans les expressions des formulaires, \u00e9tat et macros. Ceci peut \u00eatre rapidement contourn\u00e9 avec la petite fonction isLike() indiqu\u00e9e dans cet article.<br>Pour des besoins plus pouss\u00e9s n&rsquo;h\u00e9sitez pas \u00e0 utiliser <a href=\"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/2025\/08\/26\/vba-replace-vba-booste-au-regex\/\" target=\"_blank\" rel=\"noreferrer noopener\">RegEx<\/a>. Si le moteur ACE ne le prend pas en charge la plupart des autres moteurs de base de donn\u00e9es ont int\u00e9gr\u00e9 RegEx dans leur SQL.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;op\u00e9rateur logique LIKE est un op\u00e9rateur d&rsquo;\u00e9galit\u00e9 strictement r\u00e9serv\u00e9 aux chaines de type texte. Sa particularit\u00e9 est de pouvoir comparer des valeurs \u00e0 un masque compos\u00e9 de caract\u00e8res de substitution. Glossaire Dans cet article : Masque, caract\u00e8res de substitution, masque &hellip; <a href=\"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/2025\/08\/29\/vba-operateur-like-commun-a-sql-vba-et-aux-expressions\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,6],"tags":[14,7],"class_list":["post-454","post","type-post","status-publish","format-standard","hentry","category-astuce","category-code-vba","tag-astuce","tag-code-vba"],"_links":{"self":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts\/454","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/comments?post=454"}],"version-history":[{"count":10,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts\/454\/revisions"}],"predecessor-version":[{"id":468,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts\/454\/revisions\/468"}],"wp:attachment":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/media?parent=454"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/categories?post=454"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/tags?post=454"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}