Recherche de l’adresse de la valeur la plus basse dans une plage (Microsoft Excel)
Lors de l’écriture d’une macro, vous pouvez trouver la valeur la plus basse dans une plage de cellules à l’aide de la méthode WorksheetFunction pour appliquer la fonction de feuille de calcul MIN. Vous devrez peut-être, cependant, non seulement trouver la valeur la plus basse de la plage, mais également l’adresse de la première cellule qui contient cette valeur.
Un moyen simple consiste simplement à parcourir la plage que vous souhaitez examiner et à dériver à la fois la valeur la plus basse et l’adresse de la cellule examinée, comme dans l’exemple suivant:
Function FindLowestAddr(pRng As Range) As String Application.Volatile MinVal = pRng.Cells(1).Value MinAddr = pRng.Cells(1).Address For Each c in pRng If c.Value < MinVal Then MinVal = c.Value MinAddr = c.Address End If Next c FindLowestAddr = MinAddr End Function
Notez que cette approche ne repose pas du tout sur la fonction de feuille de calcul MIN. Il y a cependant un inconvénient: il ne fait pas la différence entre les cellules qui contiennent des valeurs numériques et celles qui n’en contiennent pas. En d’autres termes, si la plage passée à la fonction contient une cellule vide, cette cellule est considérée comme contenant une valeur zéro, qui peut très bien être la valeur la plus basse de la plage.
Une façon de contourner cela consiste à s’appuyer sur des fonctions de feuille de calcul à partir de la macro. La macro suivante utilise les fonctions de feuille de calcul MIN et MATCH pour déterminer l’emplacement de la valeur minimale, puis l’index (décalage) de cette cellule dans la plage.
Function GetAddr(rng As Range) As String Dim dMin As Double Dim lIndex As Long Dim sAddress As String Application.Volatile With Application.WorksheetFunction dMin = .Min(rng) lIndex = .Match(dMin, rng, 0) End With GetAddr = rng.Cells(lIndex).Address End Function
Il convient de noter que si vous utilisez la macro uniquement pour découvrir l’adresse, car vous pensiez qu’il n’y avait aucun moyen de dériver les informations souhaitées sans la macro, vous pouvez supprimer entièrement la macro en utilisant une formule de feuille de calcul. Par exemple, si vous souhaitez déterminer l’adresse de la cellule la plus basse dans la plage nommée MyRange, vous pouvez utiliser ce qui suit:
=ADDRESS(ROW(MyRange)+MATCH(MIN(MyRange),MyRange,0)-1,COLUMN(MyRange))
_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 (7140) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:
link: / excelribbon-Finding_the_Address_of_the_Lowest_Value_in_a_Range [Recherche de l’adresse de la valeur la plus basse dans une plage]
.