Comment utiliser la fonction InStr en VBA (3 exemples simples)

  • Partage Ça
Hugh West

En travaillant avec les codes VBA d'Excel, nous rencontrons quelques fonctions intégrées qui convertissent une tâche complexe en un petit code d'une ligne. InStr est une telle fonction disponible dans Excel VBA qui recherche une chaîne particulière dans une autre chaîne donnée à partir d'une position donnée. Aujourd'hui, je vais montrer comment vous pouvez utiliser la fonction InStr en VBA pour rechercher une chaîne spécifique dans une autre chaîne donnée.

Télécharger le cahier d'exercices

Fonction InStr.xlsm

Introduction à Fonction InStr de VBA

  • Résumé

Recherche une chaîne spécifique dans une chaîne donnée, à partir d'une position donnée. Si une correspondance est trouvée, renvoie la position dans la chaîne donnée à partir de laquelle la correspondance a commencé.

  • Syntaxe

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

  • Arguments
ARGUMENT EXIGENCE DESCRIPTION

[start] En option La position à partir de laquelle la recherche commencera. La valeur par défaut est 1.
Chaîne 1 Requis La chaîne dans laquelle il recherche une chaîne donnée.
chaîne2 Requis La chaîne de caractères qu'elle recherche dans une chaîne de caractères donnée.
[comparer] En option Une valeur numérique comprise entre {-1,0,1,2} qui spécifie le type de comparaison. La valeur par défaut est -1 (vbUseCompareOption). Si l'instruction Option Compare n'est pas spécifiée, la comparaison sera binaire.

Note :

  • Bien que le [start] et l'argument [comparer] sont facultatifs, vous avez besoin de l'argument [start] si vous spécifiez l'argument [comparer] Sinon, une erreur sera générée.
  • Si l'un ou l'autre ou les deux [start] et l'argument [comparer] L'argument est Nulle vous serez confronté à une erreur.
  • Les quatre valeurs spécifiées dans le [comparer] argument effectue quatre types de comparaison différents, mentionnés ci-dessous :
VALEUR CONSTANTE DESCRIPTION

-1 vbUseCompareOption Effectue la comparaison spécifiée dans l'instruction Option Compare.
0 vbBinaryCompare Effectue une comparaison binaire.
1 vbTextCompare Effectue une comparaison de texte.
2 vbDatabaseCompare Effectue une comparaison à partir de votre base de données.
  • Comparaison des options est une instruction fournie avant le début du code VBA principal, qui indique si le code doit rechercher une comparaison binaire ou une comparaison de texte, le cas échéant.

Texte de comparaison d'options

    • En termes simples Comparaison binaire signifie une comparaison sensible à la casse.
    • En termes simples Comparaison de textes signifie une comparaison insensible à la casse.
  • Valeur de retour
    • Renvoie la position dans le Chaîne 1 à partir duquel le chaîne2 a commencé.
    • En cas chaîne2 ne se trouve pas dans Chaîne 1 à partir du commencer position, renvoie 0.
    • Si le Chaîne 1 est de longueur nulle, renvoie 0.
    • Si le chaîne2 est de longueur nulle, retourne l'argument commencer .
    • Et enfin, si l'un des Chaîne 1 ou chaîne2 est Nulle renvoie une erreur.

3 exemples simples pour utiliser la fonction InStr de VBA

Dans cette section, nous verrons trois exemples faciles d'application du VBA InStr dans Excel. Voyons le premier exemple de la fonction InStr dans les codes VBA.

1. déterminer si une adresse est une adresse électronique ou non en utilisant la fonction InStr de VBA

Ici, nous avons pris un ensemble de données contenant des adresses de contact de clients. Notre objectif ici sera d'identifier si les adresses sont des adresses e-mail ou non.

Nous allons maintenant développer un code VBA en utilisant l'option InStr pour identifier s'il s'agit d'une adresse électronique ou non. Pour ce faire, suivez les étapes ci-dessous.

Des pas :

  • Au début, allez à la Développeur et sélectionnez Visual Basic ( Ou appuyez sur Alt+F11) pour ouvrir le VBA fenêtre.

  • Ensuite, sur le VBA allez dans la fenêtre Insérer> ; Module .

  • Après cela, sur le module, collez le code suivant :
 Function DECISION(string1 As String) Dim Position As Integer Position = InStr(1, string1, "@", 0) If Position = 0 Then DECISION = "Not Email" Else DECISION = "Email" End If End Function 

  • De plus, nous avons créé une fonction appelée DÉCISION Elle décide si une adresse est une adresse électronique ou non. Appliquons la fonction à l'ensemble de données dont nous disposons.
  • Sur la cellule C5 écrivez la formule suivante et remplissez automatiquement le reste des cellules en utilisant la formule suivante Poignée de remplissage .
=DECISION(B5)

  • Comme nous pouvons le voir, nous avons identifié chaque adresse, qu'il s'agisse d'une adresse électronique ou non.

🎓 Comment le code fonctionne-t-il ?

  • Fonction DECISION(string1 As String)

Tout d'abord, cela crée une fonction appelée DÉCISION avec un argument de type chaîne nommé Chaîne 1 .

  • Dim Position As Integer

Il déclare une variable entière nommée Position .

  • Position = InStr(1, string1, "@", 0)

Cela permet d'attribuer la valeur de l'élément Position comme la sortie de la InStr avec les arguments suivants 1, string1, "@" et 0 En bref, cela attribue la position dans l'adresse où il y a un... "@" .

  • Si Position = 0 Alors DÉCISION = "Pas de courrier électronique".

Il affecte la sortie de l DÉCISION fonction comme "Pas d'email" si le Position La variable est 0 c'est-à-dire qu'il n'y avait pas "@" dans l'adresse.

(Rappelons que si une chaîne de caractères n'est pas trouvée dans la chaîne donnée, la fonction InStr les fonctions de retour 0 ).

  • Else DECISION = "Email"

Cela affecte la sortie de l DÉCISION fonction comme "Email" s'il y avait un "@" dans l'adresse. Ainsi les adresses où il y a la "@" sont classés dans les catégories suivantes Courriel : et les autres sont classés dans les catégories suivantes "Pas d'email" .

Lectures similaires

  • Comment utiliser la fonction VBA UCASE dans Excel (4 exemples)
  • Utiliser la fonction MsgBox dans Excel VBA (un guide complet)
  • Comment utiliser la fonction VBA SPLIT dans Excel (5 exemples)
  • Utiliser la fonction LCase en VBA dans Excel (avec 4 exemples)
  • Comment utiliser la fonction Fix dans Excel VBA (4 exemples)

2. Utilisation de la fonction InStr de VBA pour Extraire l'extension de certaines adresses e-mail

Ici, nous avons une liste d'adresses e-mail de certains clients. Cette fois, nous allons extraire l'extension de l'adresse e-mail, par exemple s'ils ont gmail.com ou yahoo.com .

Pour ce faire, suivez les étapes ci-dessous.

Des pas :

  • Pour commencer, comme la méthode précédente, ouvrez une nouvelle VBA et collez le code suivant dans la fenêtre.
 Function EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function 

  • De plus, nous avons créé une fonction appelée EXTENSION Il extrait l'extension de toute adresse électronique.
  • En outre, appliquons cette fonction à l'ensemble de données dont nous disposons. Tout d'abord, saisissez cette formule dans la cellule C5 puis double-cliquez sur le Poignée de remplissage .
=EXTENSION(B5)

  • Enfin, nous pouvons voir que nous avons réussi à extraire l'extension de tous les courriels.

🎓 Comment le code fonctionne-t-il ?

  • Function EXTENSION(Email As String)

Cela crée une nouvelle fonction appelée EXTENSION avec un argument de type chaîne nommé Courriel : .

  • Dim Position As Integer

Cette partie déclare une variable entière nommée Poste.

  • Position = InStr(1, Email, "@", 0)

Cela permet d'attribuer la valeur de l'élément Position comme la sortie de la InStr avec les arguments suivants 1, Email, "@" et 0 En bref, cela permet d'assigner la position dans l'espace de travail. Courriel : où il y a un "@" .

  • EXTENSION = Right(Email, (Len(Email) - Position))

Cette partie attribue la sortie du EXTENSION comme les caractères après le symbole "@" Il s'agit de l'extension nécessaire de la Courriel : .

3. extraire le prénom ou le nom d'un nom de famille en utilisant la fonction InStr de VBA

Enfin, nous allons effectuer une tâche totalement différente. Cette fois, nous avons les noms de certains employés d'une entreprise. Et nous allons essayer de construire une fonction pour extraire soit le prénom, soit le nom de famille des employés.

Pour ce faire, suivez les étapes ci-dessous.

Des pas :

  • Tout d'abord, à l'instar de méthode 1 Pour cela, collez le code ci-dessous dans un nouveau module de la fenêtre VBA.
 Function SHORTNAME(Name As String, First_or_Last As Integer) Dim Break As Integer Break = InStr(1, Name, " ", 0) If First_or_Last = -1 Then SHORTNAME = Left(Name, Break - 1) Else SHORTNAME = Right(Name, Len(Name) - Break) End If End Function 

  • Ici, nous avons créé une fonction appelée NOM COURT qui extrait soit le prénom soit le nom d'un nom. Appliquons cette formule à notre ensemble de données.
  • Dans un premier temps, pour extraire le prénom, écrivez la formule ci-dessous dans la cellule C5 .
=NOM COURT (B5,-1)

  • Enfin, pour extraire les noms de famille, on écrit la formule suivante en D5 :
=NOM COURT (B5,1)

  • Par la suite, si nous remplissons automatiquement le reste des cellules avec Gestionnaire de remplissage nous obtiendrons le résultat souhaité.

🎓 Comment le code fonctionne-t-il ?

  • Fonction SHORTNAME(Name As String, First_or_Last As Integer)

Il crée une nouvelle fonction appelée NOM COURT avec un argument de type String nommé Nom et un Argument Integer nommé Premier_ou_dernier .

  • Dim Break As Integer

Cette partie déclare une nouvelle variable entière nommée Pause .

  • Break = InStr(1, Name, " ", 0)

Il attribue la valeur de l'élément Pause comme la sortie de la InStr avec les arguments suivants 1, Nom, " " et 0 En bref, cela permet d'assigner la position dans l'espace de travail. Nom où il y a un espace (" ").

  • Si First_or_Last = -1 Alors SHORTNAME = Left(Name, Break - 1)

Cette ligne attribue la sortie de la fonction NOM COURT comme les caractères qui précèdent le espace si le Premier_ou_dernier L'argument est -1. C'est le premier nom.

  • SHORTNAME = Right(Name, Len(Name) - Break)

Cette partie attribue la sortie du NOM COURT comme les caractères après le espace si le Premier_ou_dernier L'argument est 1. C'est le nom de famille.

Conclusion

De cette façon, vous pouvez écrire des codes VBA avec l'option InStr qui trouve la position d'une chaîne de caractères spécifique dans une autre chaîne de caractères donnée, puis vous pouvez créer vos propres fonctions pour une variété d'utilisations. De plus, si vous avez des questions, n'hésitez pas à nous les poser.

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.