XL 2013 En cas de doublons prendre date plus recente et copier ligne

nobru26

XLDnaute Junior
Bonsoir,

Petit soucis du jour, je souhaite traiter le doublons suivant leur date/heure/seconde plus récente et copier la ligne dans une autre feuille, Est-ce possible avec une formule sans macro ni matricielle?

Merci

PS feuil 1 base, feuil 2 résultat souhaité
 

Fichiers joints

Dernière édition:

CISCO

XLDnaute Barbatruc
Re : En cas de doublons prendre date plus recente

Bonsoir

Est-ce que tu pourrais nous donner les résultats que tu veux ?

@ plus
 

CISCO

XLDnaute Barbatruc
Re : En cas de doublons prendre date plus recente et copier ligne

Bonjour

Est-ce que dans ton fichier réel les nombres de la colonne B se suivent à partir de 20150100, sans aucun manque, dans le bon ordre ? Idem pour les dates, est-ce qu'elles sont classées dans l'ordre croissant ?

@ plus
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : En cas de doublons prendre date plus recente et copier ligne

Bonsoir

Quelques possibilités en pièce jointe. A toi de faire le tri.

@ plus

P.S : Certaines formules ne donnent le bon résultat que si les dates sont classées dans l'ordre croissant.
 

Fichiers joints

nobru26

XLDnaute Junior
Re : En cas de doublons prendre date plus recente et copier ligne

Merci CISCO, la première fonction a l'air de rouler par contre Est-ce possible de vider les champs lorsque il n'y a pas de ligne en feuille 1?

Pourrais-tu expliquer un peu la formule car j'ai du mal à comprendre
=INDEX(Feuil1!A$2:A$30000;EQUIV(G23+0,1;Feuil1!B$2:B$30000;1))

ci joint l'exemple
 

Fichiers joints

CISCO

XLDnaute Barbatruc
Re : En cas de doublons prendre date plus recente et copier ligne

Bonsoir

Merci CISCO, la première fonction a l'air de rouler par contre Est-ce possible de vider les champs lorsque il n'y a pas de ligne en feuille 1?
Devant chacune des formules, écris SIERREUR(, et à la fin ""), pour avoir par exemple en F3
Code:
=SIERREUR(INDEX(Feuil1!A$2:A$30000;EQUIV(G2+0,1;Feuil1!B$2:B$30000;1));"")
Pourrais-tu expliquer un peu la formule car j'ai du mal à comprendre
=INDEX(Feuil1!A$2:A$30000;EQUIV(G23+0,1;Feuil1!B$2:B$30000;1))
EQUIV(G23;Feuil1!B$2:B$30000;0) renvoie la position du contenu de G23, 20150121, dans la plage Feuil1!B$2:B$30000, pour être plus précis, du premier 20150121 rencontré dans cette plage. Or, ce n'est pas la position du premier que l'on veut, mais celle du dernier, pour avoir la date la plus récente (puisqu'elles sont classées par ordre croissant).

EQUIV(G23+0,1;Feuil1!B$2:B$30000;0) recherche la position du premier 20150121,1 dans la plage Feuil1!B$2:B$30000 mais ne trouvant pas cette valeur, renvoie FAUX.

EQUIV(G23+0,1;Feuil1!B$2:B$30000;1) recherche la position du premier 20150121,1 dans la plage Feuil1!B$2:B$30000 et si cette valeur n'existe pas dans cette plage, renvoie la position de la dernière valeur juste inférieure à 20150121,1, donc dans notre cas du dernier 20150121. Bien sûr, cela ne fonctionne comme nous le voulons que si les dates sont classées dans l'ordre croissant...

Code:
=INDEX(Feuil1!A$2:A$30000;EQUIV(G23+0,1;Feuil1!B$2:B$30000;1))
renvoie donc la valeur dans la plage Feuil1!A$2:A$30000 en position EQUIV(G23+0,1;Feuil1!B$2:B$30000;1).

Pour voir ces différentes étapes, tu peux cliquer sur "Formules", puis sur "Evaluation de formule" (la petite loupe avec fx dedans).

@ plus
 

Fichiers joints

Dernière édition:

nobru26

XLDnaute Junior
Re : En cas de doublons prendre date plus recente et copier ligne

Merci CISCO, je comprends mieux, par contre je pensais que le 1 à la fin de la formule voulait dire >

Pour le sierreur, cela ne fonctionne pas, en étendant le tableau ça me donne les dernières valeurs de la dernière ligne, j'ai testé avec si(f24=f23;=INDEX(Feuil1!A$2:A$30000;EQUIV(G23+0,1;Feuil1!B$2:B$30000;1));"") mais ça ne marche pas non plus.
 

nobru26

XLDnaute Junior
Re : En cas de doublons prendre date plus recente et copier ligne

Re,

J'ai mis =SI(F22=F21;"";INDEX(Feuil1!D$2:D$30000;EQUIV(G22+0,1;Feuil1!B$2:B$30000;1))) dans chaque formule colonne h et j et ça fonctionne.

Mais je ne parviens pas à ne pas avoir de retour sur la recherche initiale en G qui est le point de base de la recherche.
Même avec =MAX(Feuil1!B:B) je retrouve la valeur max de l'index mais j'arrive pas à limiter la recherche
 

CISCO

XLDnaute Barbatruc
Re : En cas de doublons prendre date plus recente et copier ligne

Bonsoir

Cf. en pièce jointe. Je n'ai modifié que les formules dans les colonnes F, G et H.

@ plus
 

Fichiers joints

nobru26

XLDnaute Junior
Re : En cas de doublons prendre date plus recente et copier ligne

Merci mais c'est les valeurs apres la derniere date et dernier numero present que je veux supprimer

15/06/2015 00:02:12 20150121
15/06/2015 00:02:12 20150122
15/06/2015 00:02:12 20150123
15/06/2015 00:02:12 20150124
etc...
ces données qui polluent le fichier

Ci joint une exemple mais qui ne fonctionne pas si la date est vide

Je cherche a ne pas afficher les 20150121 qui sont supérieurs à la dernière valeur de la feuil1

Merci
 

Fichiers joints

nobru26

XLDnaute Junior
Re : En cas de doublons prendre date plus recente et copier ligne

J'ai trouvé un truc mais pas tres conventionnel.

Mis le =MAX(Feuil1!B:B) dans une cellule puis de partou j'ai mis dans la colonne index =SIERREUR(SI(G22+1>M$5;"";G22+1);"")

+1 car si je met G23 il me met une formule cyclique et ça plante.

Des idées plus propores?
 

CISCO

XLDnaute Barbatruc
Re : En cas de doublons prendre date plus recente et copier ligne

Bonsoir

Presque la même méthode en pièce jointe.

Je n'avais pas bien compris le problème. Effectivement, il faut faire un test par rapport au MAX.

@ plus
 

Fichiers joints

Dernière édition:

nobru26

XLDnaute Junior
Re : En cas de doublons prendre date plus recente et copier ligne

Perfect cela me permet d'éviter un cellule intermédiaire...

Reste maintenant à moi de trouver comment afficher le tableau en ordre inversé, je vais tester sur une nouvelle page cela sera plus facile.
 

CISCO

XLDnaute Barbatruc
Re : En cas de doublons prendre date plus recente et copier ligne

Bonjour

Excuse, en G3, il faut rajouter des $
Code:
SIERREUR(SI(G2+1<=MAX(Feuil1!B$2:B$26);G2+1;"");"")
et tirer cette formule vers le bas.

@ plus

P.S : Je corrige dans mon précédent post
 

CISCO

XLDnaute Barbatruc
Re : En cas de doublons prendre date plus recente et copier ligne

REbonjour

Pour ce qui est de ta dernière demande, il suffit de modifier les formules en G2 :
Code:
=MAX(Feuil1!B$2:B$30000)
max au lieu de min
et en G3
Code:
=SIERREUR(SI(G2-1>=MIN(Feuil1!B$2:B$26);G2-1;"");"")
cette dernière à tirer vers le bas aussi loin que désiré.

@ plus
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas