Partager via


Comment : rechercher du texte dans les plages de la feuille de calcul

Mise à jour : novembre 2007

S'applique à

Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions de Microsoft Office spécifiés.

Type de projet

  • Projets au niveau du document

  • Projets au niveau de l'application

Version de Microsoft Office

  • Excel 2003

  • Excel 2007

Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet.

La méthode Find de l'objet Microsoft.Office.Interop.Excel.Range vous permet de rechercher du texte dans la plage. Ce texte peut également correspondre à n'importe quelle chaîne d'erreur susceptible d'apparaître dans une cellule de feuille de calcul telle que #NULL! ou #VALUE!. Pour plus d'informations sur les chaînes d'erreur, consultez Valeurs d'erreur de cellule.

L'exemple suivant recherche une plage nommée Fruits et modifie la police des cellules contenant le mot « apples ». Cette procédure fait également appel à la méthode FindNext, qui utilise les paramètres de recherche définis précédemment pour poursuivre la recherche. Vous spécifiez la cellule à partir de laquelle la recherche doit commencer et la méthode FindNext gère le reste.

Remarque :

La recherche de la méthode FindNext revient au début de la plage de recherche lorsqu'elle en a atteint la fin. Votre code ne doit pas décrire une boucle infinie. L'exemple de procédure indique comment éviter cela à l'aide de la propriété Address.

Pour rechercher du texte dans une plage de feuille de calcul

  1. Déclarez les variables pour le suivi de la plage complète, de la première plage trouvée et de la plage trouvée actuelle.

    Dim currentFind As Excel.Range = Nothing
    Dim firstFind As Excel.Range = Nothing
    
    Excel.Range currentFind = null; 
    Excel.Range firstFind = null; 
    
  2. Recherchez la première correspondance, en spécifiant tous les paramètres à l'exception de la cellule à partir de laquelle la recherche doit commencer.

    currentFind = Fruits.Find("apples", , _
        Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, _
        Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False)
    
    currentFind = Fruits.Find("apples", missing,
        Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, 
        Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
        missing, missing); 
    
  3. Poursuivez la recherche tant que vous trouvez des correspondances.

    While Not currentFind Is Nothing
    
    while(currentFind != null) 
    
  4. Comparez la première plage trouvée (firstFind) à Nothing. Si firstFind ne contient aucune valeur, le code stocke la plage trouvée (currentFind).

    If firstFind Is Nothing Then
        firstFind = currentFind
    
    if (firstFind == null)
    {
        firstFind = currentFind; 
    }
    
  5. Si l'adresse de la plage trouvée correspond à celle de la première plage trouvée, le code sort de la boucle.

    ElseIf currentFind.Address = firstFind.Address Then
        Exit While
    End If
    
    else if (currentFind.get_Address(missing, missing, Excel.XlReferenceStyle.xlA1, missing, missing)
          == firstFind.get_Address(missing, missing, Excel.XlReferenceStyle.xlA1, missing, missing))
    {
        break;
    }
    
  6. Définissez l'apparence de la plage trouvée.

    With currentFind.Font
        .Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
        .Bold = True
    End With
    
    currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
    currentFind.Font.Bold = true; 
    
  7. Procédez à une autre recherche.

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

L'exemple suivant illustre la méthode complète.

Exemple

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
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(missing, missing, Excel.XlReferenceStyle.xlA1, missing, missing)
              == firstFind.get_Address(missing, missing, Excel.XlReferenceStyle.xlA1, missing, missing))
        {
            break;
        }

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

        currentFind = Fruits.FindNext(currentFind); 
    }
}

Voir aussi

Tâches

Comment : appliquer des styles à des plages dans les classeurs

Comment : faire référence aux plages de la feuille de calcul dans le code

Concepts

Utilisation des plages

Fonctionnement des paramètres optionnels dans les solutions Office