VBA TROUVER SUIVANT - Comment utiliser la fonction FindNext dans Excel VBA?

Table des matières

Excel VBA Rechercher suivant

Comme dans Excel lorsque nous appuyons sur CTRL + F, une boîte d'assistant apparaît qui nous permet de rechercher une valeur dans la feuille de calcul donnée et une fois la valeur trouvée, nous cliquons sur trouver à côté pour trouver l'autre valeur similaire, car il s'agit d'une fonctionnalité de feuille de calcul que nous peut également l'utiliser dans VBA comme méthode de propriété Application comme application.findnext aux mêmes fins.

Trouver la valeur spécifique dans la plage mentionnée est très bien, mais que se passe-t-il si l'exigence est de trouver la valeur avec plusieurs occurrences. Dans l'un des articles précédents, nous avons discuté de la méthode «Find» dans VBA, et elle n'est pas du tout complexe, mais trouver toutes les occurrences répétitives n'est possible qu'avec la méthode «Find Next» dans Excel VBA.

Dans cet article, nous allons vous montrer comment utiliser ce «Find Next» dans Excel VBA.

Qu'est-ce que la recherche suivante dans Excel VBA?

Comme le mot l'indique, «Rechercher suivant» signifie que depuis la cellule trouvée, continuez à rechercher la valeur suivante jusqu'à ce que vous reveniez à la cellule d'origine où nous avons commencé la recherche.

Il s'agit de la version avancée de la méthode «Find», qui ne recherche qu'une seule fois la valeur mentionnée dans la plage mentionnée.

Vous trouverez ci-dessous la syntaxe de la méthode FIND NEXT dans Excel VBA.

Après: c'est le mot que nous recherchons.

Exemples de méthode de recherche suivante dans Excel VBA

Vous trouverez ci-dessous les exemples de recherche de la méthode suivante dans Excel VBA.

Par exemple, regardez les données ci-dessous.

Étape 1 - Dans ces données, nous devons trouver le nom de la ville «Bangalore». Commençons la sous-procédure dans l'éditeur visuel de base.

Code:

Sub RangeNext_Example () End Sub

Étape # 2 - Tout d'abord, déclarez la variable comme objet «Range».

Code:

Sub RangeNext_Example () Dim Rng As Range End Sub

Étape # 3 - Définissez la référence pour la variable objet comme «Plage (« A2: A11 »).

Code:

Sub RangeNext_Example () Dim Rng As Range Set Rng = Range ("A2: A12") End Sub

Puisque nos données de la liste des villes se trouvent dans la plage de cellules A2 à A11 de cette plage, nous allons seulement rechercher la ville «Bangalore».

Puisque nous définissons la référence de plage sur la variable «Rng», nous utilisons cette variable au lieu d'utiliser RANGE («A2: A11») à chaque fois.

Étape # 4 - Utilisez la variable RNG et ouvrez la méthode Find.

Code:

Sub RangeNext_Example () Dim Rng As Range Set Rng = Range ("A2: A12") Rng.Find End Sub

Étape # 5 - Le premier argument de la méthode FIND est «Quoi», c'est-à-dire ce que nous essayons de rechercher dans la plage mentionnée, donc la valeur que nous recherchons est «Bangalore».

Code:

Sub RangeNext_Example () Dim Rng As Range Set Rng = Range ("A2: A12") Rng.Find What: = "Bangalore" End Sub

Étape # 6 - Pour montrer dans quelle cellule nous avons trouvé cette valeur, déclarez une autre variable sous forme de chaîne.

Code:

Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12") Rng.Find What: = "Bangalore" End Sub

Étape # 7 - Pour cette variable, attribuez l'adresse de cellule trouvée.

Code:

Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address End Sub
Remarque: RNG. Adresse car RNG aura la référence pour la cellule de valeur trouvée.

Étape # 8 - Maintenant, affichez le résultat de la variable d'adresse de cellule attribuée dans la boîte de message dans VBA.

Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress End Sous

Étape # 9 - Exécutez le code et voyez ce que nous obtenons ici.

Nous avons donc trouvé la valeur «Bangalore» dans la cellule A5. Avec la méthode Find, nous ne pouvons trouver qu'une seule cellule, donc au lieu de FIND, nous devons utiliser FIND NEXT dans Excel VBA.

Étape # 10 - Nous devons référencer la variable d'objet de plage, mais en utilisant la méthode FIND NEXT dans Excel VBA.

Code:

Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress Set Rng = Range ("A2: A12"). FindNext (Rng) End Sub

Comme vous pouvez le voir ci-dessus, nous avons utilisé la méthode VBA FIND NEXT, mais à l'intérieur de la fonction, nous avons utilisé un nom de variable d'objet de plage.

Étape # 11 - À nouveau, attribuez l'adresse de la cellule et affichez l'adresse dans la boîte de message.

Code:

Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress Set Rng = Range ("A2: A12"). FindNext (Rng) CellAddress = Rng.Address MsgBox CellAddress End Sub

Step#12 - Run the macro and see what we get in the first message box.

Step#13 - The first message box shows the value “Bangalore” found in the cell A5. Click on the Ok button to see the next found value.

The second value found in A7 cell, press Ok to continue.

VBA Find Next (Using Loop)

It will exit the VBA subprocedure, but we are one more to be found in cell A10. When the values are to be found in more than one cell, then it is a better idea to use loops.

In this case, too, we have value “Bangalore” in more than one cell, so we need to include loops here.

Step#14 - First, declare two variables as the range.

Code:

Sub RangeNext_Example1() Dim Rng As Range Dim FindRng As Range End Sub

Step#15 - Set the reference for the first variable, as shown below.

Code:

Sub RangeNext_Example1() Dim Rng As Range Dim FindRng As Range Set Rng = Range("A2:A11").Find(What:="Bangalore") End Sub

Step#16 - For the second variable, set the reference by using the FIND VBA function.

Sub RangeNext_Example1() Dim Rng As Range Dim FindRng As Range Set Rng = Range("A2:A11").Find(What:="Bangalore") Set FindRng = Rng.FindNext("Bangalore") End Sub

Step#17 - Before we start searching for the value, we need to identify from which cell we are starting the search, for that declares the variable as a string.

Code:

Sub RangeNext_Example1() Dim Rng As Range Dim FindRng As Range Set Rng = Range("A2:A11").Find(What:="Bangalore") Set FindRng = Rng.FindNext("Bangalore") Dim FirstCell As String FirstCell = Rng.Address End Sub

Step#18 - For this variable, assign the first cell address.

Code:

Sub RangeNext_Example1() Dim Rng As Range Dim FindRng As Range Set Rng = Range("A2:A11") Set FindRng = Rng.Find(What:="Bangalore") Dim FirstCell As String FirstCell = Rng.Address End Sub

Step#19 - Now, we need to include the “Do While” loop to loop through all the cells and find the searching value.

Code:

Sub RangeNext_Example1() Dim Rng As Range Dim FindRng As Range Set Rng = Range("A2:A11").Find(What:="Bangalore") Set FindRng = Rng.FindNext("Bangalore") Dim FirstCell As String FirstCell = Rng.Address Do Loop While FirstCell Cell.Address End Sub

Inside the loop, mention the message box and VBA FIND NEXT method.

Step#20 - Below is the complete code for you.

Code:

Sub FindNext_Example () Dim FindValue As String FindValue = "Bangalore" Dim Rng As Range Set Rng = Range ("A2: A11") Dim FindRng As Range Set FindRng = Rng.Find (What: = FindValue) Dim FirstCell As String FirstCell = FindRng.Address Do MsgBox FindRng.Address Set FindRng = Rng.FindNext (FindRng) Boucle pendant que FirstCell FindRng.Address MsgBox "La recherche est terminée" End Sub

Étape # 21 - Cela continuera à afficher toutes les adresses de cellules correspondantes, et à la fin, il affichera le message comme «La recherche est terminée» dans la nouvelle boîte de message.

Choses dont il faut se rappeler

  • La méthode FIND ne peut trouver qu'une seule valeur à la fois.
  • FIND NEXT dans Excel VBA peut trouver la valeur suivante de la cellule de valeur déjà trouvée.
  • Utilisez la boucle Do While pour parcourir toutes les cellules de la plage.

Articles intéressants...