Comment trouver une chaîne avec VBA dans Excel (8 exemples)

  • Partage Ça
Hugh West

Mise en œuvre de VBA est la méthode la plus efficace, la plus rapide et la plus sûre pour exécuter n'importe quelle opération dans Excel. Dans cet article, nous allons vous montrer comment trouver certaines chaînes de caractères dans une autre chaîne donnée en utilisant VBA dans Excel.

Télécharger le modèle de pratique

Vous pouvez télécharger le modèle Excel d'entraînement gratuit à partir d'ici.

VBA pour trouver dans String.xlsm

Fonction InStr

Microsoft Excel dispose d'une fonction intégrée appelée la fonction InStr pour trouver la position de chaînes spécifiques dans une chaîne donnée.

Syntaxe générique :

InStr([start], string1, string2, [compare])

Ici,

Arguments Obligatoire/ Facultatif Définition
commencer En option Position de départ de la recherche.
  • Par défaut, le InStr calcule la position du caractère en comptant à partir de 1, et non à partir de la position de départ. Vous pouvez donc laisser ce champ vide si vous le souhaitez.
Chaîne 1 Requis La chaîne de caractères à rechercher, Primary String.
chaîne2 Requis La chaîne à rechercher dans la chaîne primaire.
comparer En option Le site InStr est sensible à la casse par défaut. Mais si vous souhaitez exécuter une fonction insensible à la casse, la fonction InStr Vous pouvez alors passer l'argument ici pour effectuer une certaine comparaison. Cet argument peut avoir les valeurs suivantes,
  • vbBinaryCompare -> ; effectue une comparaison binaire, retourne la valeur 0
  • vbTextCompare -> ; effectue une comparaison de texte, valeur de retour 1
  • vbDatabaseCompare -> ; effectue une comparaison de base de données, valeur de retour 2

Par défaut, InStr prend vbBinaryCompare comme argument de comparaison.

8 exemples simples pour trouver la position d'une chaîne spécifique dans une chaîne donnée en utilisant VBA

Voyons quelques exemples simples pour obtenir les positions de certaines chaînes dans une chaîne donnée en utilisant VBA .

1. VBA pour trouver la position du texte dans une chaîne de caractères

Vous trouverez ci-dessous un exemple de InStr pour trouver la position d'un texte dans une chaîne de caractères.

  • Appuyez sur Alt + F11 sur votre clavier ou allez dans l'onglet Développeur -> ; Visual Basic pour ouvrir Éditeur Visual Basic .

  • Dans la fenêtre de code contextuelle, dans la barre de menu, cliquez sur Insertion -> ; Module .

  • Maintenant, dans la fenêtre de code, écrivez un simple InStr à l'intérieur d'un Sous-procédure VBA (voir ci-dessous).
 Sub INSTR_Example() MsgBox InStr("Le bonheur est un choix", "choix") End Sub 

Votre code est maintenant prêt à être exécuté.

  • Appuyez sur F5 sur votre clavier ou dans la barre de menu, sélectionnez Run -> ; Run Sub/UserForm Vous pouvez également cliquer sur le bouton petite icône Play dans la barre de sous-menu pour exécuter la macro.

Vous verrez que la boîte de message contextuel vous donnera un nombre déclarant la position du texte que vous vouliez vérifier.

Explication :

Notre chaîne primaire, " Le bonheur est un choix "est une phrase de 21 lettres (avec des espaces) et nous voulons trouver la position du texte " choix "Le texte " choix " a commencé à partir de la 16ème position de la corde primaire, d'où le numéro suivant 16 comme résultat dans la boîte de message.

2. VBA pour rechercher du texte à partir d'une position spécifique dans une chaîne de caractères

Voyons maintenant ce qui se passerait si nous voulions obtenir la position d'un certain nombre.

  • De la même manière que précédemment, ouvrez Éditeur Visual Basic de la Développeur et Insérer a Module dans la fenêtre de code.
  • Dans la fenêtre de code, écrivez un simple InStr montré ci-dessus et passez la valeur dans l'argument start en fonction de la position à partir de laquelle vous voulez compter votre texte.
 Sub INSTR_Example() MsgBox InStr(17, "Le bonheur est un choix", "choix") End Sub 

  • Suivant, Exécuter le code.

Vous verrez que la boîte de message contextuel vous donnera un nombre déclarant la position du texte à partir d'une certaine position que vous vouliez vérifier.

Explication :

Comme nous le savions déjà (lors de la discussion de la phase 1), le texte " choix " a commencé à partir de la position de 16 Nous avons donc inséré deux " choix " dans la chaîne primaire et définir 17 comme premier paramètre afin de sauter le premier " choix ". Donc, nous Exécuter la macro ci-dessus et il nous a montré le numéro de position 27 qui est exactement le numéro de position de la deuxième " choix " dans la chaîne de caractères donnée.

3. VBA pour trouver du texte avec la fonction InStr insensible à la casse dans une chaîne de caractères

Dès l'introduction de la InStr vous savez déjà que par défaut, la fonction InStr est sensible à la casse, ce que nous allons vérifier à l'aide d'un exemple.

Voir ce qui suit VBA dans lequel nous voulions trouver la position du mot " Choix " avec un C majuscule dans la chaîne " Le bonheur est un choix "où le choix est écrit avec un petit "c" .

  • Exécuter le code et trouver 0 comme résultat.

C'est parce que le InStr la fonction traite C majuscule et petit "c" différemment. Il a donc cherché le mot " Choix " dans la chaîne de caractères et n'a pas obtenu de correspondance, donc a retourné 0 .

  • Pour faire le InStr fonction insensible à la casse l'argument de comparaison est fixé à vbTextCompare (voir ci-dessous).
 Sub INSTR_Example() MsgBox InStr(1, "Le bonheur est un choix et un choix", "Choix", vbTextCompare) End Sub 

  • Exécuter le code.

Vous obtiendrez le position du texte de la chaîne de caractères, que le texte soit écrit en format lettres majuscules ou minuscules .

4. VBA pour trouver du texte à droite d'une chaîne de caractères

Jusqu'à présent, le InStr ne nous donnait que la position du côté gauche de la chaîne. Mais que faire si vous voulez trouver la position du texte du côté droit de la chaîne.

La fonction InStrRev cherche à partir de la droite. Le InStrRev fonctionne de manière très similaire à la fonction InStr et elle vous trouvera la position d'un texte à partir de la fonction côté droit de la chaîne.

Consultez les exemples suivants pour comprendre la différence.

  • Si nous exécutons le code suivant avec l'option InStr fonction alors,

il nous donne la position ( 16 ) du premier texte " choix ".

  • Mais si nous exécutons le même code avec le InStrRev Fonctionnement alors,

il nous donne la position ( 27 ) du dernier texte " choix ".

Lectures similaires :

  • FindNext en utilisant VBA dans Excel (2 exemples)
  • Comment rechercher et remplacer en utilisant VBA (11 façons)
  • Trouver une correspondance exacte en utilisant VBA dans Excel (5 façons)

5. VBA pour trouver la position d'un caractère dans une chaîne de caractères

Vous pouvez également trouver la position d'un certain caractère dans une chaîne de caractères de la même manière que vous avez trouvé du texte.

  • Copiez le code suivant dans votre VBA fenêtre de code
 Sub Find_Character() Dim z As Long z = InStr("Happiness is a choice", "e") MsgBox z End Sub 

  • Et Exécuter la macro.

Le premier " e "dans notre chaîne donnée est au numéro 7 position.

6. VBA pour trouver une sous-chaîne dans une chaîne de caractères

Ici, nous allons apprendre comment trouver si une chaîne contient un sous-chaîne ou pas.

Pour obtenir cela, nous devons exécuter un Déclaration IF dans notre code.

  • De la même manière que précédemment, ouvrez Éditeur Visual Basic de la Développeur et Insérer a Module dans la fenêtre de code.
  • Dans la fenêtre de code, copiez le code suivant et collez-le.
 Public Sub FindSub() If InStr("Happiness is a choice", "choice") = 0 Then MsgBox "No match found" Else MsgBox "Match found" End If End Sub 

Votre code est maintenant prêt à être exécuté.

  • Exécuter la macro.

Si votre contient la sous-chaîne alors vous obtiendrez un match trouvé Dans notre exemple, nous voulions savoir si notre chaîne primaire " Le bonheur est un choix "contient le mot " choix "Si c'est le cas, on obtient un Correspondance trouvée résultat.

7. VBA pour rechercher une chaîne dans une plage de cellules

Vous pouvez rechercher un certain texte dans une plage de cellules de la chaîne et retourner une certaine chaîne.

Regardez l'exemple suivant où l'on trouve " Dr. "et s'il y a une correspondance, il retournera " Docteur ".

  • Voici le code permettant d'obtenir le résultat décrit ci-dessus,
 Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> ; 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub 

  • Exécuter le code et le résultat est montré ci-dessous

  • Vous pouvez modifier la macro en fonction de vos besoins. Par exemple, si vous voulez trouver " Prof. " dans n'importe quelle cellule de la chaîne, et obtenir " Professeur " comme retour, alors passez simplement " Prof. "comme valeur au lieu de " Dr ." dans la 4ème ligne de la macro et " Professeur " au lieu de " Docteur " dans la 5e ligne de la macro et définissez le numéro de la plage de cellules en conséquence.

8. VBA pour trouver une chaîne dans une cellule

Vous pouvez également recherche d'un certain texte dans une seule cellule d'une chaîne de caractères et retourner une certaine chaîne.

  • Copiez le code suivant et collez-le dans la fenêtre de code.
 Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> ; 0 Then Range("C5").Value = "Doctor" End If End Sub 

Il cherchera " Dr. " dans Cellule B5 et s'il trouve la correspondance, il renvoie " Docteur " dans Cellule C5 .

  • Vous pouvez modifier la macro en fonction de vos besoins. Par exemple, si vous voulez trouver " Prof. " dans n'importe quelle cellule de la chaîne, et obtenir " Professeur " comme retour, alors passez simplement " Prof. "comme valeur au lieu de " Dr ." dans la 2ème ligne de la macro et " Professeur " au lieu de " Docteur " dans la 3ème ligne de la macro et définissez le numéro de référence de la cellule en conséquence.

Conclusion

Cet article vous a montré comment trouver certains textes dans une chaîne de caractères dans Excel en utilisant la fonction de recherche de texte. Macro VBA. J'espère que cet article vous a été très utile. N'hésitez pas à poser toutes vos questions sur le sujet.

Hugh West est un formateur et analyste Excel très expérimenté avec plus de 10 ans d'expérience dans l'industrie. Il est titulaire d'un baccalauréat en comptabilité et finance et d'une maîtrise en administration des affaires. Hugh a une passion pour l'enseignement et a développé une approche pédagogique unique qui est facile à suivre et à comprendre. Sa connaissance approfondie d'Excel a aidé des milliers d'étudiants et de professionnels du monde entier à améliorer leurs compétences et à exceller dans leur carrière. Grâce à son blog, Hugh partage ses connaissances avec le monde, offrant des tutoriels Excel gratuits et une formation en ligne pour aider les particuliers et les entreprises à atteindre leur plein potentiel.