Range.FindNext, méthode (Excel)

Poursuit une recherche qui a été lancée avec la méthode Find . Elle recherche la cellule suivante qui correspond aux mêmes critères et renvoie un objet Range qui la représente. Elle n’affecte ni la sélection ni la cellule active.

Syntaxe

expression. FindNext (After)

expression Variable représentant un objet Range.

Paramètres

Nom Requis/Facultatif Type de données Description
After Facultatif Variant Cellule après laquelle vous souhaitez commencer la recherche. Cela correspond à la position de la cellule active lorsqu’une recherche est effectuée à partir de l’interface utilisateur. N’oubliez pas qu’After doit être une seule cellule dans la plage.
La recherche commence après cette cellule ; la cellule spécifiée n’est pas incluse dans la recherche tant que la méthode n’englobe pas cette cellule. Si vous ne spécifiez pas cet argument, la recherche commence après la cellule en haut à gauche de la plage.

Valeur renvoyée

Plage

Remarques

Lorsque la recherche atteint la fin de la plage de recherche spécifiée, elle recommence au début de la plage. Pour arrêter une recherche lorsqu’elle recommence au début, enregistrez l’adresse de la première cellule trouvée, puis testez chaque adresse de cellule trouvée successive avec cette adresse enregistrée.

Exemple

Cet exemple montre comment rechercher toutes les cellules de la plage A1:A500 de la feuille de calcul 1 qui contiennent la valeur 2 et modifier la valeur de la cellule entière sur 5. Autrement dit, si les valeurs 1234 et 99299 contiennent 2, les deux valeurs de cellule deviendront 5.

Sub FindValue()
    
    Dim c As Range
    Dim firstAddress As String
    
    With Worksheets(1).Range("A1:A500") 
        Set c = .Find(2, lookin:=xlValues) 
        If Not c Is Nothing Then 
            firstAddress = c.Address 
            Do 
                c.Value = 5 
                Set c = .FindNext(c) 
            Loop While Not c Is Nothing
        End If 
    End With
    
End Sub

Cet exemple montre comment rechercher toutes les cellules des quatre premières colonnes qui contiennent une constante X et masquer la colonne qui contient le X.

Sub Hide_Columns()

    'Excel objects.
    Dim m_wbBook As Workbook
    Dim m_wsSheet As Worksheet
    Dim m_rnCheck As Range
    Dim m_rnFind As Range
    Dim m_stAddress As String

    'Initialize the Excel objects.
    Set m_wbBook = ThisWorkbook
    Set m_wsSheet = m_wbBook.Worksheets("Sheet1")
    
    'Search the four columns for any constants.
    Set m_rnCheck = m_wsSheet.Range("A1:D1").SpecialCells(xlCellTypeConstants)
    
    'Retrieve all columns that contain an X. If there is at least one, begin the DO/WHILE loop.
    With m_rnCheck
        Set m_rnFind = .Find(What:="X")
        If Not m_rnFind Is Nothing Then
            m_stAddress = m_rnFind.Address
             
            'Hide the column, and then find the next X.
            Do
                m_rnFind.EntireColumn.Hidden = True
                Set m_rnFind = .FindNext(m_rnFind)
            Loop While Not m_rnFind Is Nothing And m_rnFind.Address <> m_stAddress
        End If
    End With

End Sub

Cet exemple montre comment rechercher toutes les cellules des quatre premières colonnes qui contiennent une constante X et afficher la colonne qui contient le X.

Sub Unhide_Columns()
    'Excel objects.
    Dim m_wbBook As Workbook
    Dim m_wsSheet As Worksheet
    Dim m_rnCheck As Range
    Dim m_rnFind As Range
    Dim m_stAddress As String
    
    'Initialize the Excel objects.
    Set m_wbBook = ThisWorkbook
    Set m_wsSheet = m_wbBook.Worksheets("Sheet1")
    
    'Search the four columns for any constants.
    Set m_rnCheck = m_wsSheet.Range("A1:D1").SpecialCells(xlCellTypeConstants)
    
    'Retrieve all columns that contain X. If there is at least one, begin the DO/WHILE loop.
    With m_rnCheck
        Set m_rnFind = .Find(What:="X", LookIn:=xlFormulas)
        If Not m_rnFind Is Nothing Then
            m_stAddress = m_rnFind.Address
            
            'Unhide the column, and then find the next X.
            Do
                m_rnFind.EntireColumn.Hidden = False
                Set m_rnFind = .FindNext(m_rnFind)
            Loop While Not m_rnFind Is Nothing And m_rnFind.Address <> m_stAddress
        End If
    End With

End Sub

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.