Bonjour,
Je suis nouveau sur ce forum et ne sais pas si cette astuce a déjà été publiée (désolé si c'est le cas, ma recherche infructueuse de cette publication est peut-être liée à mon inexpérience ici...), alors je vous la donne en l'état. Elle est certainement perfectible, alors n'hésitez pas à la commenter et à la corriger si besoin.
Je recherchais un moyen simple d'afficher dans une cellule d'Excel la dernière ligne ou colonne non vide d'une plage de données, le but au final étant de pouvoir reconstituer des adresses complètes à partir de ces informations avec la fonction INDIRECT. Je souhaitais aussi que la solution soit dynamique et que la valeur retournée se mette à jour automatiquement en cas de modification de la plage testée.
J'ai obtenu le résultat attendu avec les fonctions matricielles. Ainsi, pour obtenir la dernière ligne non vide de la colonne A par exemple, j'ai utilisé la formule suivante (à valider avec CTRL+SHIFT+ENTER et non simplement avec ENTER) :
=MAX(SI((A:A)<>"";LIGNE((A:A))))
Il est évidemment possible d'adresser un autre fichier que celui où vous saisissez la formule :
=MAX(SI(('C:\Users\sylvburg\Documents\Professionnel\R\bridge_marge\output_files\[bridge_marge_fichier01.xlsx]Sheet1'!A:A)<>"";LIGNE(('C:\Users\sylvburg\Documents\Professionnel\R\bridge_marge\output_files\[bridge_marge_fichier01.xlsx]Sheet1'!A:A))))
De la même manière, la formule à utiliser pour trouver la dernière colonne non vide de la ligne 1 devient :
=MAX(SI((1:1)<>"";COLONNE(1:1)))
Et pour tester un autre fichier que celui où vous saisissez la formule :
=MAX(SI(('C:\Users\sylvburg\Documents\Professionnel\R\bridge_marge\output_files\[bridge_marge_fichier01.xlsx]Sheet1'!1:1)<>"";COLONNE(('C:\Users\sylvburg\Documents\Professionnel\R\bridge_marge\output_files\[bridge_marge_fichier01.xlsx]Sheet1'!1:1))))
Vous pouvez aussi limiter la plage testée, ici par exemple je teste la dernière cellule non vide de la ligne 1
pour les colonnes entre A et E :
=MAX(SI((A1:E1)<>"";COLONNE((A:E))))
Et vous pouvez évidemment tester d'autres valeurs que les non vides; ici je retourne la dernière ligne où je trouve en colonne A une chaîne de caractères commençant par "FSTAT" :
=MAX(SI(GAUCHE(A:A;5)="FSTAT";LIGNE((A:A))))
Voir le fichier ci-joint pour les exemples, en espérant que cela en aide certains.
A+