VBA Find Next

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 que la valeur est trouvée, nous cliquons sur trouver à côté pour trouver l'autre valeur similaire, car c'est une fonctionnalité de feuille de calcul que nous peut également l'utiliser dans VBA comme méthode de propriété d'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 ce 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 la méthode de recherche suivante dans Excel VBA.

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

Vous pouvez télécharger ce modèle Excel VBA Find Next ici - VBA Find Next Excel Template

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

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 d'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 sont là dans la plage de cellules de A2 à A11 dans cette plage seulement, nous allons 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.Address 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 - Attribuez à nouveau 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) Loop While FirstCell  FindRng.Address MsgBox "Search is over" End Sub 

Step#21 – This will keep showing all the matching cell address and in the end, it will show the message as “Search is Over” in the new message box.

Things to Remember

  • FIND method can find only one value at a time.
  • FIND NEXT in excel VBA can find the next value from the already found value cell.
  • Use Do While loop to loop through all the cells in the range.