[Résolu] dernière saisie selon un critère dans une liste

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.
pphilippe
Membre hOOnoraire
Membre hOOnoraire
Messages : 178
Inscription : 18 oct. 2018 15:01

[Résolu] dernière saisie selon un critère dans une liste

Message par pphilippe »

Bonsoir
Je pensais que la fonction INDEX (EQUIV) pouvait trouver la dernière saisie d''un critère en jouant sur le mode, mais j'ai bien vu dans ce post du 02 fev 2019 que ce n'était pas si simple.
Sauf que dans mon problème les saisies sont verticales et j'ai du mal à adapter la solution qui avait été proposée à l'époque par Jean-Louis.
Donc voilà. Je cherche la date de la première intervention sur un sujet et la date de la dernière intervention sur le même sujet.
INDEX(EQUIV) me donne la première date, mais je ne trouve pas pour la dernière et je suis preneur de vos conseils.
(NB;SI) me permet de compter le nombre de sujets.
Si j'abusai je serai bien preneur de la date de la deuxième, puis de la troisième, puis ... de la dernière !
D’avance merci
pphilippe
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par pphilippe le 01 avr. 2026 20:19, modifié 1 fois.
Libre Office Version : 26.2.5.2
Ubuntu : 24.04.4 LTS
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6093
Inscription : 02 janv. 2009 23:56

Re: dernière saisie selon un critère dans une liste

Message par Jean-Louis Cadeillan »

Bonsoir,
Pour la deuxième (en F5, validation matricielle) :

Code : Tout sélectionner

=INDEX(dates;PETITE.VALEUR(SI(fruits=D4; LIGNE(fruits);"");2)-1)
J'ai utilisé tes plages nommées, ce qui m'oblige à enlever 1, car elles sont définies à partir de la deuxième ligne et INDEX() compte les lignes de sa plage et non le n° de ligne dans l'absolu. Par exemple, sur la plage dates (= B2:B21), la date de la première pomme se trouve sur la ligne n°7 (dans l'absolu) mais c'est la ligne n°6 de B2:B21.
Le 2 indique pour PETITE.VALEUR() d'aller chercher la deuxième petite valeur. Si tu veux la troisième, tu mets un 3 à la place, etc.
Pour la dernière (en F6, validation matricielle) :

Code : Tout sélectionner

=INDEX(dates;MAX(SI(fruits=D4; LIGNE(fruits);"");2)-1)
MAX() remplace PETITE.VALEUR()… même logique.
À tester ci-joint.
Cordialement,
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Windows 10 Pro 64, LibO 26.2.6.3(JRE 1.8.0_503) et AOO 4.1.16 (Adoptium 19.0.2.7)
pphilippe
Membre hOOnoraire
Membre hOOnoraire
Messages : 178
Inscription : 18 oct. 2018 15:01

Re: dernière saisie selon un critère dans une liste

Message par pphilippe »

Merci Jean-Louis
Bon, ça fonctionne. Je vais mettre un moment avant de comprendre pourquoi, mais c'est super et je pense que ta réponse aidera d'autres que moi.

Sinon: est-ce plus élégant de nommer les plages à partir de la première ligne ?
Quelles sont les conséquences ?

Encore merci
pphilippe
Libre Office Version : 26.2.5.2
Ubuntu : 24.04.4 LTS
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6093
Inscription : 02 janv. 2009 23:56

Re: [Résolu] dernière saisie selon un critère dans une liste

Message par Jean-Louis Cadeillan »

Bonsoir,
pphilippe a écrit : ↑01 avr. 2026 20:17 Sinon: est-ce plus élégant de nommer les plages à partir de la première ligne ?
Quelles sont les conséquences ?
L'important, c'est que les valeurs à trouver soient dans la plage nommée, c'est le cas qu'on inclue la première ligne ou non. J'ai plutôt l'habitude, ces derniers temps, de faire des plages, nommées ou non, quand elles sont utilisées par INDEX(), qui commencent à la première ligne, je trouve la maintenance plus facile, quand on revient sur un travail un peu vieux, on se pose moins de questions existentielles sur les décalages…
La seule précaution, si tu commences à 1, est que le titre ne soit pas égal à une des valeurs cherchées, bien sûr. Si tu utilises une fonction de type TROUVE() pour chercher les valeurs, et non pas, comme ici, le =, il faudra en plus que le titre ne contienne pas la valeur recherchée…
Quant à l'élégance, c'est très subjectif (voir mon avatar :mrgreen: ).
Cordialement,
Jean-Louis
Windows 10 Pro 64, LibO 26.2.6.3(JRE 1.8.0_503) et AOO 4.1.16 (Adoptium 19.0.2.7)
cwolan
Membre hOOnoraire
Membre hOOnoraire
Messages : 187
Inscription : 14 févr. 2021 22:15

Re: [Résolu] dernière saisie selon un critère dans une liste

Message par cwolan »

Bonjour,

Pour s'amuser, à partir de la version 25.8 :

Code : Tout sélectionner

=LET(X;FILTRE(ASSEMBH(fruits;dates);fruits=D4);INDEX(X;1;2))
Pour la dernière occurrence :

Code : Tout sélectionner

=LET(X;FILTRE(ASSEMBH(fruits;dates);fruits=D4);INDEX(X;LIGNES(X);2))
⠀
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 1.1.5 – 4.1.17
LibreOffice 3.3.0.4 – 26.8
Windows 7,10,11 64-bit
pphilippe
Membre hOOnoraire
Membre hOOnoraire
Messages : 178
Inscription : 18 oct. 2018 15:01

Re: [Résolu] dernière saisie selon un critère dans une liste

Message par pphilippe »

Bonjour
Merci et bravo à tous les deux pour la pédagogie associée à vos réponses,
je vous souhaite un beau printemps
pphilippe
Libre Office Version : 26.2.5.2
Ubuntu : 24.04.4 LTS