Recherche dernière cellule non vide

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Avatar de l’utilisateur
gerard24
ManitOOu
ManitOOu
Messages : 3160
Inscription : 06 juil. 2008 17:08
Localisation : dans le Périgord

Recherche dernière cellule non vide

Message par gerard24 »

Bonjour,

Il y a quelques temps, en effectuant une recherche sur le forum, je suis tombé sur ce fil avec cette formule :

Code : Tout sélectionner

=INDIRECT(ADRESSE(MAX((DECALER(tableau;0;MAX((tableau<>"")*COLONNE(tableau))-MIN(COLONNE(DECALER(tableau;0;0;1;1)));;1)<>"")*LIGNE(tableau));MAX((tableau<>"")*COLONNE(tableau))))
Aïe...

J'ai voulu comprendre le fonctionnement de cette formule et j'ai donc entrepris de la "démonter".
Hé oui, je suis comme ça, non content d'avoir l'heure il faut que je démonte la montre.... :wink:

Mais pourquoi diable tous ces calculs portant sur les numéros de colonne alors qu'on a qu'une seule colonne et qu'on cherche un numéro de ligne ?
J' en ai déduis que la formule est plus générale et permet de rechercher sur un tableau et non sur une colonne unique.
Ce que le démontage m'a confirmé.

1_ Concernant la recherche sur un Tableau, j'ai supprimé un petit bout de la formule que j'estime inutile (voir fichier joint Feuille3 2°)
A me confirmer, ou infirmer éventuellement.
ce qui nous donne :

Code : Tout sélectionner

=INDIRECT(ADRESSE(MAX((DECALER(tableau;0;MAX((tableau<>"")*COLONNE(tableau))-MIN(COLONNE(tableau));;1)<>"")*LIGNE(tableau));MAX((tableau<>"")*COLONNE(tableau))))
2_ Pour une recherche uniquement sur une colonne :

Code : Tout sélectionner

=INDIRECT(ADRESSE(MAX((plage<>"")*LIGNE(plage));COLONNE(plage)))
Voir le fichier joint pour le "démontage-remontage" de la formule. Cela devrait aider à la compréhension de la formule, enfin je l'espère...
Si je reçois une facture pour du Doliprane, c'est que j'aurais échoué.
LastCell.ods
Certains utilisent le fait que :
l'aide F1 a écrit :Si la fonction RECHERCHE ne trouve pas le critère de recherche, elle renvoie la valeur la plus grande (inférieure ou égale au critère de recherche) trouvée dans le vecteur de recherche.
Ce qui nous donne :

Code : Tout sélectionner

=RECHERCHE(9^9^9;plage)
on recherche un nombre élevé (+élevé que ceux de la plage) et la fonction ne le trouvant pas renvoie la dernière valeur de cette plage.
Si à la place des données numériques la plage contient des données texte, on remplace 9^9^9 par "zzz".
N'étant pas sur à 100% du bon fonctionnement de RECHERCHE sur une plage non triée, je n'utilise pas cette formule.
Je ne traite pas cette fonction dans le fichier joint.

A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OOodidacte
LibreOffice 6.4.5 sous Windows 10.
pour télécharger LibreOffice