Table des matières
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 vérifier si une chaîne de caractères contient une autre chaîne de caractères dans Excel à l'aide de la fonction VBA .
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 vérifier si une chaîne contient une valeur.xlsm
6 méthodes en VBA pour vérifier si une chaîne contient une autre chaîne dans Excel
Dans cette section, vous trouverez 6 méthodes efficaces pour mettre en œuvre la politique de l'UE en matière d'environnement. VBA pour vérifier si une chaîne contient une autre chaîne ou non.
1. VBA pour vérifier si une chaîne contient une sous-chaîne
Vous trouverez ci-dessous un exemple de la fonction InStr pour trouver si une chaîne contient une sous-chaîne dans Excel.
Des pas :
- 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 pop-up du code, dans la barre de menu, cliquez sur Insertion -> ; Module .
- Dans la fenêtre de code, copiez le code suivant et collez-le.
Public Sub ContainSub() If InStr("Movie : Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> ; 0 Then MsgBox "Movie found" Else MsgBox "Movie not 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 une correspondance trouvée, sinon, il retournera aucune correspondance trouvée.
Dans notre exemple, nous voulions savoir si notre chaîne primaire " Film : Iron Man, Batman, Superman, Spiderman, Thor "contient le mot " Hulk "Si ce n'est pas le cas, nous obtenons un message de type Film non trouvé résultat.
2. VBA pour vérifier si une chaîne contient un nombre
Vous pouvez rechercher si les chaînes de caractères contiennent des chiffres ou non en utilisant la fonction VBA code.
Regardez l'exemple suivant où nous allons trouver quelles chaînes contiennent des chiffres avec les noms de films.
Étapes pour vérifier si les chaînes de caractères contiennent des chiffres avec VBA sont indiqués ci-dessous.
Des pas :
- 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.
Function SearchNumbers(oRng As Range) As Boolean Dim bSearchNumbers As Boolean, i As Long bSearchNumbers = False For i = 1 To Len(oRng.Text) If IsNumeric(Mid(oRng.Text, i, 1)) Then bSearchNumbers = True Exit For End If Next SearchNumbers = bSearchNumbers End Function
- Il ne s'agit pas d'une sous-procédure pour le VBA à exécuter, c'est la création d'un Fonction définie par l'utilisateur (UDF), que nous appellerons dans notre feuille de calcul pour exécuter la tâche. Ainsi, après avoir écrit le code, au lieu de cliquer sur le bouton Exécuter cliquez sur le bouton Sauvez de la barre de menu pour sauvegarder le fichier macro.
- Revenez maintenant à la feuille de calcul concernée et écrivez la fonction définie par l'utilisateur que vous venez de créer dans le champ VBA code ( Numéro de recherche dans la première ligne du code) et à l'intérieur des parenthèses de la fonction, entrez le numéro de référence de la cellule de la chaîne de caractères qui a des chiffres en tête (par ex. Cellule B5 ).
- Appuyez sur Entrez .
Vous obtiendrez une valeur booléenne ( VRAI ou Faux ), si la chaîne dans la cellule contient des nombres, vous obtiendrez VRAI sinon FAUX .
- Faites glisser la cellule vers le bas en Poignée de remplissage pour appliquer la formule au reste des cellules afin de vérifier quelle chaîne contient des chiffres et quelle chaîne n'en contient pas.
3. VBA pour extraire des chiffres d'une chaîne de caractères
Dans la section ci-dessus, nous avons appris comment vérifier si la chaîne de caractères contient des chiffres ou non. Et dans cette section, nous allons apprendre comment extraire ces chiffres et les placer dans une autre cellule avec l'exemple donné ci-dessous.
Etapes pour vérifier si les chaînes de caractères contiennent des chiffres et les extraire avec VBA sont indiqués ci-dessous.
Des pas :
- Ouvrir Éditeur Visual Basic de la Développeur et Insérer a Formulaire utilisateur cette fois à partir de l'onglet Insertion de la fenêtre de code.
- De l'apparition Boîte à outils , glisser-déposer Bouton de commande dans le Formulaire utilisateur .
- Double-cliquez sur le bouton, copiez le code suivant et collez-le.
Private Sub CommandButton1_Click() Worksheets("Number").Range("C2:C15").ClearContents checkNumber (Worksheets("Number").Range("B2:B15") End Sub checkNumber(objRange As Range) Dim myAccessary As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessary In objRange For i = 1 To Len(myAccessary.Value) If IsNumeric(Mid(myAccessary.Value, i,1)) Then If Trim(objRange.Cells(objRange.Row - 1, 2)) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & ; Mid(myAccessary.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessary.Text, i, 1) End If End If Next iRow = iRow + 1Next myAccessary End Sub
- Exécuter le code et il vous mènera à la feuille de calcul qui vous intéresse.
- Cliquez sur le bouton de commande et vous obtiendrez le numéro extrait des chaînes de caractères.
4. VBA pour vérifier si une chaîne contient une certaine lettre
Cette méthode est presque similaire à la méthode de vérification des sous-chaînes dans une chaîne de caractères.
Vous trouverez ci-dessous le InStr pour trouver si une chaîne de caractères contient une certaine lettre dans Excel.
Des pas :
- 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 ContainChar() If InStr("Movie : Iron Man, Batman, Superman, Spiderman, Thor", "Z")> ; 0 Then MsgBox "Lettre trouvée" Else MsgBox "Lettre non trouvée" End If End Sub
Votre code est maintenant prêt à être exécuté.
- Exécuter le programme. Si votre contient la lettre alors vous obtiendrez une correspondance trouvée, sinon, il retournera aucune correspondance trouvée.
Dans notre exemple, nous voulions savoir si notre chaîne primaire " Film : Iron Man, Batman, Superman, Spiderman, Thor "contient la lettre " Z "Si ce n'est pas le cas, nous obtenons un message de type Lettre non trouvée résultat.
5. VBA pour vérifier si une plage de chaînes contient une autre chaîne.
Nous avons appris à vérifier si une chaîne de caractères donnée contient une autre chaîne de caractères ou non. Mais dans cette section, nous allons apprendre à vérifier si une plage de chaînes de caractères contient une sous-chaîne de caractères ou non en prenant l'ensemble de données suivant comme exemple.
Des pas :
- Ouvrir É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 ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> ; 0 Then MsgBox "Movie found" Else MsgBox "Movie not found" End If End Sub
Votre code est maintenant prêt à être exécuté.
- Exécuter le code.
Si votre gamme de contient la sous-chaîne alors vous obtiendrez une correspondance trouvée, sinon, il retournera aucune correspondance trouvée.
6. VBA pour extraire des chaînes de caractères à partir de chaînes de caractères
Dans cette section, nous allons voir comment vérifier si les chaînes de caractères contiennent certaines sous-chaînes et extraire celles-ci dans une autre cellule.
Nous allons extraire les informations des noms commençant par " Chris " à partir de l'ensemble de données suivant.
Étapes :
- Ouvrir É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.
Sub SearchSub() Dim lastrow As Long Dim i As Integer, count As Integer lastrow = ActiveSheet.Range("A30000").End(xlUp).Row For i = 1 To lastrow If InStr(1, LCase(Range("C" & ; i)), "Chris") 0 Then count = count + 1 Range("F" & ; count & ; ":H" & ; count) = Range("B" & ; i & ; ":D" & ; i).Value End If Next i End Sub
Votre code est maintenant prêt à être exécuté.
- Exécuter le code.
Seuls les noms commençant par " Chris " seront stockés dans les cellules prédéfinies.