Vérifier si une chaîne contient une sous-chaîne en VBA

Glen Alfaro 30 janvier 2023
  1. Utilisation de la fonction Instr() pour vérifier si la chaîne principale contient une sous-chaîne
  2. Utilisation de la fonction InstrRev() pour vérifier si la chaîne principale contient une sous-chaîne
  3. Utilisation de l’opérateur Like pour vérifier si la chaîne principale contient une sous-chaîne
Vérifier si une chaîne contient une sous-chaîne en VBA

Cet article démontrera l’utilisation de la fonction Instr(), de la fonction InstrRev() et de la fonction Like pour vérifier si la chaîne principale contient une sous-chaîne.

Utilisation de la fonction Instr() pour vérifier si la chaîne principale contient une sous-chaîne

Syntaxe de la fonction Instr() :

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

Type de retour : Entier

Paramètres:

[ start ] Optionnel. Valeur numérique où la recherche commencera.
Pour l’argument [ start ], ci-dessous sont les valeurs correspondantes :
1 - [Par défaut] La recherche commencera au début de la chaîne principale
n - La recherche commencera à la position n.
string1 Obligatoire. La chaîne à rechercher (chaîne principale)
string2 Obligatoire. La chaîne à rechercher.
[ compare ] Optionnel. Indique quelle méthode de comparaison de chaînes sera utilisée.
Pour l’argument [ compare ], ci-dessous figurent les valeurs correspondantes :
0 - [Par défaut] Méthode de comparaison binaire (sensible à la casse)
1 - Méthode de comparaison de texte (insensible à la casse)

Le bloc de code ci-dessous vérifiera si une sous-chaîne se trouve dans la chaîne principale dans VBA à l’aide de la fonction Instr().

Function IsSubstring(pos as Integer, mainStr as String, subStr as String,compTyp as Integer) as boolean
    'if `Instr()` function returned 0 then the substring is not present in the main string.
    'If `Instr()` function returned a value greater than `0`, would mean that the substring is in the main string.
    If Instr(pos,mainStr,subStr,compTyp) >0 Then
        IsSubstring = true
        Else: IsSubstring = false
    End if
End Function
Sub test1()
    Debug.print IsSubstring(1,"ABCDE","C",1)
End Sub
Sub test2()
    Debug.print IsSubstring(1,"ABCDE","F",1)
End Sub
Sub test3()
    Debug.print IsSubstring(1,"ABCDE","c",0)
End Sub

Sortie test1 :

True

Sortie test2 :

False

Sortie test3 :

False

Le bloc de code ci-dessous renverra la position de la sous-chaîne à partir de la chaîne principale à l’aide de la fonction Instr().

Function GetPosition(pos as Integer, mainStr as String, subStr as String,compTyp as Integer)
    'Check first if the substring is in the main string.
     If InStr(pos, mainStr, subStr, compTyp) > 0 Then
        'if substring is in the main string then get the position of the substring in the main string.
       GetPosition = InStr(1, mainStr, subStr, 1)
       Else: GetPosition = ("Subtring is not in the main string.")
   End If
End Function
Sub test1()
    'Check if `C` is in `ABCDE` starting at the first letter (A), case insensitive.
    Debug.Print GetPosition(1,"ABCDE", "C",1)
End Sub
Sub test2()
    'Check if `c` is in `ABCDE` starting at the first letter of the main string, case sensitive.
    Debug.Print GetPosition(1,"ABCDE", "c",0)
End Sub
Sub test3()
    'Check if `c` is in `ABCDE` starting at the fourth letter of the main string, case sensitive.
    Debug.Print GetPosition(4,"ABCDE", "c",0)
End Sub

Sortie test1 :

3

Sortie test2 :

Subtring is not in the main string.

Sortie test3 :

Subtring is not in the main string.

Utilisation de la fonction InstrRev() pour vérifier si la chaîne principale contient une sous-chaîne

Syntaxe de la fonction InstrRev() :

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

Type de retour : Entier

Paramètres:

string1 Obligatoire. La chaîne à rechercher (chaîne principale)
string2 Obligatoire. La chaîne à rechercher.

Le bloc de code ci-dessous vérifiera si une sous-chaîne se trouve dans la chaîne principale dans VBA à l’aide de la fonction InstrRev().

Function IsSubstring(mainStr As String, subStr As String) As Boolean
    'if `InstrRev()` function returned 0 then the substring is not present in the main string.
    'If `InstrRev()` function returned a value greater than `0`, would mean that the substring is in the main string.
    If InStrRev(mainStr, subStr) > 0 Then
        IsSubstring = True
        Else: IsSubstring = False
    End If
End Function
Sub test1()
    Debug.Print IsSubstring("ABCDE", "C")
End Sub
Sub test2()
    Debug.Print IsSubstring("ABCDE", "F")
End Sub

Sortie test1 :

True

Sortie test2 :

False

Utilisation de l’opérateur Like pour vérifier si la chaîne principale contient une sous-chaîne

Syntaxe de l’opérateur Like :

res = string Like pattern

Type de retour : booléen

Paramètres:

res Obligatoire. Valeur de retour en booléen
string Obligatoire. La chaîne à examiner
pattern Obligatoire. Chaîne à rechercher. Voir Remarques pour plus de détails

Remarques:

? N’importe quel caractère
* N’importe quel caractère de 0 à plusieurs
# N’importe quel numéro (0 à 9)

Le bloc de code ci-dessous vérifiera si une sous-chaîne se trouve dans la chaîne principale dans VBA à l’aide de l’opérateur Like.

Function IsSubString(mainStr as String,subStr as String) as Boolean
    'Check if subStr is in the main string by using *
   If mainStr Like "*" & subStr & "*" Then
        IsSubString = True
        Else: IsSubstring= False
   End If
End Function
Sub test1()
    Debug.print (IsSubString("ABCDE","C"))
End Sub
Sub test2()
    Debug.print (IsSubString("ABCDE","c"))
End Sub
Sub test3()
    Debug.print (IsSubString("ABCDE","F"))
End Sub

Sortie test1 :

True

Sortie test2 :

False

Sortie test3 :

False

Article connexe - VBA String