Lire en anglais

Partager via


Range.FindNext, méthode (Excel)

Continue une recherche commencée avec la méthode Trouver. 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 (Après)

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. Notez que Après doit être une cellule unique 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 recherche toutes les cellules de la plage A1:A500 de la feuille de calcul 1 qui contiennent la valeur 2 et remplace la valeur de la cellule entière par 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 recherche toutes les cellules des quatre premières colonnes qui contiennent une constante X et masque la colonne qui contient la constante 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 recherche toutes les cellules des quatre premières colonnes qui contiennent une constante X et affiche la colonne qui contient la constante 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.