Comment : rechercher par programmation pour le texte dans les plages de feuille de calculHow to: Programmatically search for Text in worksheet ranges

Le Find méthode de la Range objet vous permet de rechercher du texte dans la plage.The Find method of the Range object enables you to search for text within the range. Ce texte peut également être une des chaînes d’erreur qui peuvent s’afficher dans une cellule de feuille de calcul comme #NULL! ou #VALUE!.This text can also be any of the error strings that can appear in a worksheet cell such as #NULL! or #VALUE!. Pour plus d’informations sur les chaînes d’erreur, consultez les valeurs d’erreur de cellule.For more information about error strings, see Cell error values.

S’applique à : les informations contenues dans cette rubrique s’applique au document-projets et ajouter de VSTO de niveau-dans les projets pour Excel.Applies to: The information in this topic applies to document-level projects and VSTO Add-in projects for Excel. Pour plus d’informations, consultez fonctionnalités disponibles par type d’application et de projet Office.For more information, see Features available by Office application and project type.

L’exemple suivant recherche une plage nommée Fruits et modifie la police des cellules qui contiennent le mot « apples ».The following example searches a range named Fruits and modifies the font for cells that contain the word "apples". Cette procédure utilise également le FindNext (méthode), qui utilise précédemment défini les paramètres pour répéter la recherche de recherche.This procedure also uses the FindNext method, which uses the previously set search settings to repeat the search. Vous spécifiez la cellule après laquelle effectuer la recherche et le FindNext méthode gère le reste.You specify the cell after which to search, and the FindNext method handles the rest.

Note

Le FindNext recherche de la méthode reprend au début de la plage de recherche une fois qu’il a atteint la fin de la plage.The FindNext method's search wraps back to the beginning of the search range after it has reached the end of the range. Votre code doit s’assurer que la recherche ne pas inclure dans un wrapper autour de dans une boucle infinie.Your code must ensure that the search does not wrap around in an infinite loop. L’exemple de procédure montre comment gérer cette situation à l’aide de la Address[Object, Object, XlReferenceStyle, Object, Object] propriété.The sample procedure shows one way to handle this using the Address[Object, Object, XlReferenceStyle, Object, Object] property.

lien vers la vidéo pour une démonstration vidéo connexe, consultez comment faire : utiliser la méthode Find dans un complément à Excel ?.link to video For a related video demonstration, see How do I: Use the Find method in an Excel Add-in?.

Pour rechercher du texte dans une plage de feuille de calculTo search for text in a worksheet range

  1. Déclarer des variables pour le suivi de la plage entière, la première plage est trouvée et la plage trouvée actuelle.Declare variables for tracking the entire range, the first found range, and the current found range.

    Excel.Range currentFind = null; 
    Excel.Range firstFind = null; 
    
    Dim currentFind As Excel.Range = Nothing
    Dim firstFind As Excel.Range = Nothing
    
  2. Recherchez la première correspondance, en spécifiant tous les paramètres à l’exception de la cellule à rechercher.Search for the first match, specifying all the parameters except the cell to search after.

    currentFind = Fruits.Find("apples", missing,
        Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, 
        Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
        missing, missing); 
    
    currentFind = Fruits.Find("apples", , _
        Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, _
        Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False)
    
  3. Continuez à chercher tant de correspondances.Continue searching as long as there are matches.

    while(currentFind != null) 
    
    While Not currentFind Is Nothing
    
  4. Comparez la première plage trouvée (firstFind) à rien.Compare the first found range (firstFind) to Nothing. Si firstFind ne contient aucune valeur, le code stocke la plage trouvée (currentFind).If firstFind contains no value, the code stores away the found range (currentFind).

    if (firstFind == null)
    {
        firstFind = currentFind; 
    }
    
    If firstFind Is Nothing Then
        firstFind = currentFind
    
  5. Quitter la boucle si l’adresse de la plage trouvée correspond à l’adresse de la première plage est trouvée.Exit the loop if the address of the found range matches the address of the first found range.

    else if (currentFind.get_Address(Excel.XlReferenceStyle.xlA1)
          == firstFind.get_Address(Excel.XlReferenceStyle.xlA1))
    {
        break;
    }
    
    ElseIf currentFind.Address = firstFind.Address Then
        Exit While
    End If
    
  6. Définir l’apparence de la plage trouvée.Set the appearance of the found range.

    currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
    currentFind.Font.Bold = true; 
    
    With currentFind.Font
        .Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
        .Bold = True
    End With
    
  7. Effectuer une autre recherche.Perform another search.

    currentFind = Fruits.FindNext(currentFind); 
    
    currentFind = Fruits.FindNext(currentFind)
    

    L'exemple suivant montre la méthode complète.The following example shows the complete method.

ExempleExample

private void DemoFind() 
{
    Excel.Range currentFind = null; 
    Excel.Range firstFind = null; 

    Excel.Range Fruits = Application.get_Range("A1", "B3");
    // You should specify all these parameters every time you call this method,
    // since they can be overridden in the user interface. 
    currentFind = Fruits.Find("apples", missing,
        Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, 
        Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
        missing, missing); 

    while(currentFind != null) 
    { 
        // Keep track of the first range you find. 
        if (firstFind == null)
        {
            firstFind = currentFind; 
        }

        // If you didn't move to a new range, you are done.
        else if (currentFind.get_Address(Excel.XlReferenceStyle.xlA1)
              == firstFind.get_Address(Excel.XlReferenceStyle.xlA1))
        {
            break;
        }

        currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
        currentFind.Font.Bold = true; 

        currentFind = Fruits.FindNext(currentFind); 
    }
}
Private Sub DemoFind()
    Dim currentFind As Excel.Range = Nothing
    Dim firstFind As Excel.Range = Nothing

    Dim Fruits As Excel.Range = Me.Application.Range("A1", "B2")
    ' You should specify all these parameters every time you call this method, 
    ' since they can be overridden in the user interface.
    currentFind = Fruits.Find("apples", , _
        Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, _
        Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False)

    While Not currentFind Is Nothing

        ' Keep track of the first range you find.
        If firstFind Is Nothing Then
            firstFind = currentFind

        ' If you didn't move to a new range, you are done.
        ElseIf currentFind.Address = firstFind.Address Then
            Exit While
        End If

        With currentFind.Font
            .Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
            .Bold = True
        End With

        currentFind = Fruits.FindNext(currentFind)
    End While
End Sub

Voir aussiSee also

Travailler avec des plages Work with ranges
Comment : appliquer des styles à des plages dans les classeurs par programmation How to: Programmatically apply styles to ranges in workbooks
Comment : faire référence par programmation aux plages de feuille de calcul dans le code How to: Programmatically refer to worksheet ranges in code
Paramètres optionnels dans les solutions OfficeOptional parameters in Office solutions