Rechercher du texte dans une chaîne (fonction INSTR) - Exemples de code VBA

Fonction INSTR

La fonction VBA Instr vérifie si une chaîne de texte est trouvée dans une autre chaîne de texte. Il renvoie 0 si le texte n'est pas trouvé. Sinon, il renvoie la position du caractère où se trouve le texte.

La fonction Instr exécute exact allumettes. L'opérateur VBA Like peut être utilisé à la place pour effectuer des correspondances / correspondances inexactes à l'aide de caractères génériques.

Exemple d'instruction

L'extrait de code suivant recherche dans la chaîne « Rechercher dans cette chaîne » le mot « Rechercher ». La fonction Instr renvoie 1 car le texte se trouve en première position.

123 Sub FindSomeText()MsgBox InStr("Regarder dans cette chaîne", "Regarder")Fin du sous-marin

Ce deuxième exemple renvoie 7 car le texte se trouve à partir de la 7e position :

123 Sub FindSomeText2()MsgBox InStr("Ne pas regarder dans cette chaîne", "Regarder")Fin du sous-marin

Important! La fonction Instr est sensible aux majuscules et minuscules par défaut. Cela signifie que « regarder » ne correspondra pas à « Regarder ». Pour rendre le test insensible à la casse, lisez ci-dessous.

Syntaxe Instr

La syntaxe de la fonction Instr est la suivante :

1 Instr( [début], chaîne, sous-chaîne, [comparer] )

[démarrer] (facultatif) - Cet argument optionnel est la position de départ de la recherche. Entrez 1 pour lancer la recherche à partir de la position 1 (ou laissez vide). Entrez 5 pour lancer la recherche à partir de la position 5. Important! La fonction INSTR calcule la position du caractère en comptant à partir de 1 PAS à partir de la position [départ].

chaîne de caractères - La chaîne de texte à rechercher.

sous-chaîne - La chaîne de texte à rechercher dans la chaîne principale.

[comparer] (facultatif) - Par défaut, Instr est sensible à la casse. En définissant cet argument, vous pouvez rendre Instr Case insensible :

Argument vb Valeur

Argument Entier La description
vbBinaryComparer

0

(Par défaut) Sensible à la casse

vbTextComparer

1

Pas sensible à la casse

vbBase de donnéesComparer

2

Accès MS uniquement. Utilise les informations de la base de données pour effectuer une comparaison.

Position de départ de l'instrument

La position de départ Instr vous permet d'indiquer la position du caractère où vous commencerez votre recherche. Gardez cependant à l'esprit que la sortie Instr comptera toujours à partir de 1.

Ici, nous définissons la position de départ sur 3 pour sauter le premier B :

123 Sous Instr_StartPosition()MsgBox InStr(3, "ABC ABC", "B")Fin du sous-marin

Le résultat est 6 car le deuxième B est le 6ème caractère de la chaîne.

Test INSTR insensible à la casse

Par défaut, VBA traite "L" différemment de "l". En d'autres termes, VBA est sensible à la casse. Ceci est vrai pour toutes les fonctions de texte. Pour rendre VBA insensible à la casse, définissez l'argument [comparer] sur 1 ou vbTextCompare.

123 Public Sub FindText_IgnoreCase()MsgBox InStr(1, "Ne pas regarder dans cette chaîne", "rechercher", vbTextCompare)Fin du sous-marin

Alternativement, vous pouvez ajouter Option Compare Text en haut de votre module de code :

1 Option Comparer le texte
12345 Option Comparer le textePublic Sub FindText_IgnoreCase2()MsgBox InStr("Ne pas regarder dans cette chaîne", "regarde")Fin du sous-marin

L'option Comparer le texte aura un impact sur tout le code de ce module. Personnellement, je place cela en haut de tout module qui traite du texte parce que je ne me soucie jamais des différences de casse.

Fonction InstrRev

La fonction Instr recherche à partir de la gauche. Au lieu de cela, vous pouvez rechercher à partir de la droite en utilisant la fonction InstrRev. La fonction InstrRev fonctionne de manière très similaire à la fonction Instr.

123 Sub FindSomeText_FromRight()MsgBox InStrRev("Regarder dans cette chaîne", "Regarder")Fin du sous-marin

Tout comme la fonction Instr, cela renverra 1 car il n'y a qu'une seule instance de "Look" dans le texte. Mais si nous ajoutons un deuxième « Look », vous verrez qu'il renvoie la position du « Look » le plus à droite :

123 Sub FindSomeText_FromRight()MsgBox InStrRev("Regardez dans cette chaîne Regardez", "Regardez")Fin du sous-marin

Ensuite, nous passerons en revue d'autres exemples d'Instr.

Exemples d'InString

Si la chaîne contient une sous-chaîne

Ici, nous utiliserons une instruction If pour tester si une chaîne contient une sous-chaîne de texte :

123456789 Public Sub FindSomeText()Si InStr("Regardez dans cette chaîne", "regardez") = 0 AlorsMsgBox "Pas de correspondance"AutreMsgBox "Au moins une correspondance"Fin siFin du sous-marin

Rechercher une chaîne de texte dans une cellule

Vous pouvez également trouver une chaîne dans une cellule :

12345 Sous Find_String_Cell()Si InStr(Range("B2").Value, "Dr.") > 0 AlorsPlage("C2").Valeur = "Docteur"Fin siFin du sous-marin

Ou parcourez une plage de cellules pour tester si les cellules contiennent du texte :

12345678910 Sous Search_Range_For_Text()Cellule tamisée en tant que plagePour chaque cellule de la plage ("b2:b6")Si InStr(cell.Value, "Dr.") > 0 Alorscell.Offset(0, 1).Value = "Docteur"Fin siCellule suivanteFin du sous-marin

Trouver la position d'un caractère dans une chaîne

Ce code trouvera la position d'un seul caractère dans une chaîne et affectera la position à une variable :

1234 Sous Find_Char()Dim n As Longn = InStr("Ici regarde ici", "L")Fin du sous-marin

Chaîne de recherche pour mot

Ce code recherchera un mot dans une chaîne :

12345678910 Sous Search_String_For_Word()Dim n As Longn = InStr("Ici regarde ici", "Regarde")Si n = 0 AlorsMsgBox "Mot non trouvé"AutreMsgBox "Mot trouvé à la position : " & nFin siFin du sous-marin

Si la variable contient une chaîne

Ce code testera si une variable de chaîne contient une chaîne de texte :

12345678 Sous-Variable_Contains_String()Dim str en tant que chaînestr = "Regardez ici"Si InStr(str, "Ici") > 0 AlorsMsgBox "Voici trouvé !"Fin siFin du sous-marin

Instr et la fonction de gauche

Instr peut être utilisé avec d'autres fonctions de texte comme Left, Right, Len et Mid pour couper le texte.

Avec la fonction Gauche, vous pouvez afficher le texte avant une chaîne de texte :

1234567891011 Sous Instr_Gauche()Dim str en tant que chaîneDim n As Longstr = "Regardez ici"n = InStr(str, "Ici")MsgBox Gauche(str, n - 1)Fin du sous-marin

Utilisation d'Instr dans Microsoft Access VBA

Tous les exemples ci-dessus fonctionnent exactement de la même manière dans Access VBA et dans Excel VBA.

Pour en savoir plus, lisez notre article : Fonctions de texte VBA

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave