Thor se demande s’il existe un moyen d’effectuer une recherche sans avoir à spécifier une colonne ou une ligne et que le résultat soit l’adresse de la cellule dans laquelle la valeur est trouvée. Par exemple, il souhaite rechercher une valeur (telle que 345 ou « mon texte ») et demander à la fonction de rechercher toutes les cellules de toutes les feuilles de calcul du classeur et de renvoyer l’adresse complète de la cellule dans laquelle la valeur a été trouvée.

L’approche que vous utilisez sera dictée par la plage que vous souhaitez rechercher.

Si vous souhaitez effectuer une recherche sur la même feuille de calcul sur laquelle vous souhaitez afficher la réponse, vous pouvez utiliser une formule, telle que la suivante:

=ADDRESS(MAX(ROW(1:5)(A1:E5="my text")), MAX(COLUMN(A1:E1)(A1:E5="my text")),4)

Cela doit être entré sous forme de formule matricielle (appuyez sur Ctrl + Maj + Entrée) et ne recherche que dans la plage A1: E5. Vous pouvez, si vous le souhaitez, modifier la plage en ajustant la formule de manière appropriée.

Une zone de recherche plus large consisterait à regarder une feuille de calcul entière. Cela peut toujours être fait en utilisant une formule matricielle, telle que la suivante:

=ADDRESS(MAX(ROW(Sheet1!1:65000)(IF(Sheet1!1:65000=$A$1,1,0))), MAX(COLUMN(Sheet1!$1:$65000)IF(Sheet1!1:65000=$A$1,1,0)))

La formule suppose que ce que vous recherchez est stocké dans la cellule A1.

Vous devez remplacer la désignation Sheet1 par le nom de la feuille de calcul que vous souhaitez rechercher.

Si vous souhaitez rechercher une plage plus large, telle que toutes les feuilles de calcul d’un classeur, la meilleure solution consiste à utiliser une macro qui fait appel à la fonction Rechercher dans Excel.

Function FindAddr(vValue As Variant)

Dim wks As Worksheet     Dim rCell As Range     Dim bFound As Boolean

bFound = False     For Each wks In ActiveWorkbook.Worksheets         With wks             Set rCell = .Cells.Find _               (What:=vValue, After:=.Cells(1), _               LookIn:=xlValues, LookAt:=xlWhole, _               SearchOrder:=xlByRows, _               SearchDirection:=xlNext, _               MatchCase:=False)

If Not rCell Is Nothing Then                 bFound = True                 Exit For             End If         End With     Next     If bFound Then         FindAddr = wks.Name & "!" & _           rCell.Address(False, False)

Else         FindAddr = "Not Found"

End If     Set wks = Nothing     Set rCell = Nothing End Function

Cette fonction est conçue pour être appelée à partir d’une autre macro, qui lui transmet tout ce qui doit être recherché dans le paramètre vValue. La fonction renvoie soit l’adresse complète (y compris le nom de la feuille de calcul) de la première correspondance, soit elle renvoie «Non trouvé» s’il n’y a pas de correspondance.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (11524) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.

Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

link: / excel-Searching_for_a_Value_Using_a_Function [Recherche d’une valeur à l’aide d’une fonction].