Recherche du dernier enregistrement en fonction d'un critère
Bonjour à tous,
Je vous expose mon souhait
Je dispose d'une liste de 3 livreurs avec date d'arrivée et heure d'arrivée, cette bdd est triée par date et heure d'arrivée, et je souhaite ne pas modifier ce tri.
Je veux avec une solution qui passe par des formules et sans macros, tester l'heure d'arrivée de la dernière livraison.
livreur arrivée heure résultat
a 10/11 10h11 OK
a 10/11 10h13 NOK
b 10/11 10h15 OK
a 10/11 10h17 NOK
b 10/11 10h35 OK
La règle de fonctionnement de la formule de résultat :
Si pour un même livreur, la livraison précédente est supérieure à 20 minutes alors OK
Sur ce principe, tout va bien tant que les livreurs se suivent.
Le plus gros challenge est de retrouver l'heure d'arrivée de l'avant derniere livraison du livreur considéré.
il est possible de se limiter aux XX avant dernieres livraisons, la solution EQUIV n'est pas satisfaisante, la valeur retournée est la première retouvée parmi les XX dernières livraisons,
il faudrait un EQUIV qui renvoie la dernière valeur du livreur parmi les XX dernières livraisons
Merci beaucoup de votre aide, et bon courage
Salut Olivier,
Pour quelqu'un qui demande de l'aide, tu es bien exigeant ; tu veux ceci, tu veux cela, mais tu ne veux pas de macro ! Et si ta solution passait par une macro ???? De plus la langue français n'est pas avare en temps ; le conditionnel existe aussi (je voudrais, je souhaiterais, etc.). Regarde à ce sujet le lien ci-dessous :
https://forum.excel-pratique.com/viewtopic.php?t=13
Tu ne joins aussi aucun fichier, il est donc difficile de savoir si l'on a bien compris ta question. Dans le doute, j'ai essayé de créer moi-même un fichier qui devrait correspondre au tien.
https://www.excel-pratique.com/~files/doc/20081119b.xls
Dans les colonnes B, D et E, j'ai repris tes données. C'est dans ces colonnes que tu devrais inscrire de nouvelles entrées.
Dans les colonnes A, C et F, j'ai mis des formules que j'ai recopiées vers le bas jusqu'à la ligne 28 (à recopier plus bas si nécessaire). Le résultat dans la colonne F devrait être celui que tu attends, si tu t'es bien exprimé dans ta demande (tu dis que la dernière livraison devrait être supérieure à 20 minutes, alors qu'entre les deux livraisons de b, tu as exactement 20 minutes et tu indiques « OK » comme résultat. Je présume donc que tu as voulu dire supérieur OU EGAL à 20 minutes). Dans tous les cas, si mon résultat s'approche de tes souhaits, on peut le peaufiné.
Bonne soirée.
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour au forum,
Pour me faire plaisir, solution VBA !
les dates sont supposées être entrées avec la fonction MAINTENANT()
https://www.excel-pratique.com/~files/doc/Livreurs2.xls
Bonne journée
Claude
édit: version2
Bonjour à tous,
Merci beaucoup pour ces solutions, elles correspondent toutes à mon attente.
Excusez la façon triviale de la demande, c'est vrai, un souhait est toujours plus poli.
Je vais donc vous expliquer pourquoi je ne souhaitais pas que la solution passe par une macro.
Cette formule va être copier dans une feuille qui va contenir les données, les données vont être importées à partir d'une insertion automatique de données externes, avec recopie automatique des formules jouxtant la base de données, si une solution avait pu etre trouvée sans macro, c'était encore mieux.
Je viens de trouver une autre solution qui passe par les formules matricielles
à savoir :=SI(B59=B60;SI(C60-MAX(SI($A$2:A59=A60;$C$2:C59;""))>=$P$1;"OK";"NOK");"OK")
si (jour de la ligne sup=jour de la ligne ; si (heure d'arrivé - maxi de l'heure d'arrivé des 57 livraisons précédentes si le livreur est = au livreur de la ligne alors )est supérieure à la consigne P1 soit 20minu alors ok sinon NOK, sinon OK puis que c'est le jour suivant .
https://www.excel-pratique.com/~files/doc/20081119b_1_.xls
Encore merci de votre aide et à bientôt