Recherche d’une valeur à l’aide d’une fonction (Microsoft Excel)
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]
.