Alex analyse régulièrement les dernières données de l’industrie du bâtiment et doit rédiger des articles sur ces données. Souvent, il a besoin de mettre en évidence de nouvelles données, telles que «la construction de bâtiments industriels était la plus faible depuis août 2019». Alex s’est demandé s’il y avait un moyen d’automatiser ce type de mise en évidence; si la colonne A contient le mois et l’année et la colonne B contient les valeurs pour ces périodes, Alex aimerait une formule dans la colonne C qui indique «cette valeur est la plus élevée depuis avril 2019» ou «cette valeur est la plus basse depuis novembre 2016».

En supposant que le mois et l’année répertoriés dans la colonne A sont vraiment une valeur de date Excel (et non du texte), vous pouvez facilement créer une formule pour renvoyer les informations souhaitées. Si la ligne 1 est occupée par des en-têtes pour vos colonnes, entrez ce qui suit dans la cellule C2:

=IF(ROW(B2)=2,"",IF(B2>MAX($B$1:B1), "this value is  the highest since " & TEXT(INDEX($A$1:A1,MATCH(MAX( $B$1:B1),$B$1:B1,0)), "mmmm yyyy"), IF(B2<MIN($B$1:B1), "this value is the lowest since " & TEXT(INDEX($A$1:A1, MATCH(MIN($B$1:B1),$B$1:B1,0)), "mmmm yyyy"),"")))

N’oubliez pas qu’il s’agit d’une formule unique et qu’elle doit être saisie sur une seule ligne. Vous pouvez copier la formule autant de lignes que nécessaire dans la colonne C et elle doit fournir les informations souhaitées. Il n’effectue une notation dans la colonne C que si la valeur de la colonne B est supérieure au maximum ou inférieure au minimum de toutes les valeurs précédentes de la colonne B.

Si vous avez pas mal de données dans votre feuille de calcul, vous pouvez remarquer que la formule entraîne de longs temps de recalcul. Si tel est le cas, vous pouvez envisager d’utiliser une macro qui effectuera l’analyse souhaitée et fournira les informations appropriées. La macro suivante regarde en arrière les informations de la colonne B et fournit à la fois un résultat « le plus bas depuis » et « le plus élevé depuis » dans les colonnes C et D.

Sub FindHiLow()

Dim orig_cell As Range     Dim orig_val As Integer     Dim orig_row As Integer     Dim rownum As Integer     Dim newcell As Range     Dim new_val As Integer     Dim lowrow As Integer     Dim hirow As Integer

Set orig_cell = ActiveCell     orig_row = ActiveCell.Row     orig_val = orig_cell.Value

' find lowest     lowrow = 0     For rownum = orig_cell.Row - 1 To 1 Step -1         Set newcell = Cells(rownum, 2)

new_val = newcell.Value         If orig_val >= new_val Then             lowrow = rownum             Exit For         End If     Next     If lowrow = 0 Then lowrow = 1     Cells(orig_row, 3).Value = "Lowest since " & Cells(lowrow, 1)



' find highest     hirow = 0     For rownum = orig_cell.Row - 1 To 1 Step -1         Set newcell = Cells(rownum, 2)

new_val = newcell.Value         If orig_val <= new_val Then             hirow = rownum             Exit For         End If     Next     If hirow = 0 Then hirow = 1     Cells(orig_row, 4).Value = "Highest since " & Cells(hirow, 1)

End Sub

_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 (10183) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

link: / excel-Determining_Highest_Since_or_Lowest_Since [Détermination du" plus haut depuis "ou" le plus bas depuis "].