Vous pouvez vous demander s’il existe un moyen de renvoyer la dernière valeur (non la plus grande) d’une colonne. Par exemple, s’il existe des valeurs de A1 à A5, vous souhaiterez peut-être que la valeur de A5 soit renvoyée. Plus tard, si des valeurs ont été ajoutées dans A6 à A8, la valeur dans A8 doit être renvoyée.

Une solution peut être abordée de plusieurs manières. La première consiste à utiliser une formule telle que la suivante:

=INDEX(A:A,COUNT(A:A))

Cette formule renvoie la dernière valeur numérique d’une colonne, à condition que les valeurs commencent à (dans ce cas) A1. Cette approche ne fonctionne que si toutes les valeurs de la colonne sont numériques. Si les valeurs ne sont pas numériques ou s’il existe des cellules vides mélangées aux valeurs, une approche différente est nécessaire. Une façon est de copier la formule suivante dans la colonne B, juste à droite des cellules qui peuvent contenir des valeurs:

=IF(ISNUMBER(A2),IF(A2<>0,ROW(A2),""),"")

Dans ce cas, la formule renvoie le numéro de ligne de toute cellule de A qui contient une valeur numérique supérieure à zéro. La formule suivante peut ensuite être utilisée pour récupérer la dernière valeur de la colonne A:

=INDEX(A:A,MAX(B:B))

Cette formule fonctionne car elle renvoie le plus grand numéro de ligne de la colonne B, puis l’utilise comme index pour renvoyer la valeur correspondante de la colonne A.

Si votre plage de données contient un mélange de valeurs numériques et non numériques (et, peut-être, même des cellules vides mélangées dans la plage), vous pouvez envisager la formule suivante:

=LOOKUP(2,1/(1-ISBLANK(A:A)),A:A)

La façon dont cette formule fonctionne peut ne pas être évidente au début. La partie ISBLANK renvoie un tableau qui contient une valeur True ou False pour chaque cellule de la colonne A, selon que cette cellule est vide ou non. Cette valeur True ou False (qui est vraiment un 1 ou 0) est soustraite de 1 de sorte que vous vous retrouvez avec les valeurs True étant 0 et les valeurs False étant 1.

L’étape suivante consiste à utiliser les valeurs 1 ou 0 comme dividende en 1 / x. Cela « inverse » effectivement la valeur, et vous vous retrouvez avec 1 (1/1) ou un # DIV / 0! erreur (1/0). N’oubliez pas qu’il s’agit d’un tableau qui est ensuite utilisé comme paramètre de la fonction LOOKUP. Ce qui est recherché dans le tableau est la valeur 2, qui n’y existe pas. (N’oubliez pas que le tableau ne contient que les valeurs 1 ou une valeur d’erreur.) La fonction LOOKUP ignore en fait toutes les valeurs d’erreur du tableau et renvoie donc le décalage, dans la plage A: A, du dernier élément du tableau qui contient une valeur 1. Cela correspond à la dernière cellule de la plage qui n’est pas vide.

Comme vous pouvez le constater, renvoyer la dernière valeur d’une colonne peut parfois devenir un peu délicat. Une approche propre consiste simplement à développer votre propre fonction VBA qui renvoie la valeur souhaitée. Dans ce cas, vous pouvez programmer la fonction pour renvoyer n’importe quelle valeur, pas seulement des valeurs numériques. Un bel exemple d’une telle fonction est disponible sur le site Web de John Walkenbach. Vérifiez ce qui suit:

http://spreadsheetpage.com/index.php/tip/determining_the_last_non_empty_cell_in_a_column_or_row/

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (2512) 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-Retrieving_the_Last_Value_in_a_Column [Récupération de la dernière valeur dans une colonne].