Excel formule dernière occurence help!!

Fermé
D££ - 12 avril 2008 à 17:36
 D££ - 12 avril 2008 à 21:25
Bonjour:
je sais que je me complique la vie mais je cherche a formuler correctement
une formule sur excel (en français).
J'ai une colonne date (exprimée en numéro du jour) avec parfois plusieurs fois
le meme jour, et une colonne contenant des nombres entiers.
je voudrais dans un deuxieme tableau (meme feuille), avoir le meme tableau
mais cette fois ci en ne retenant que le dernier nombre pour chaque date.
c a d
N°jour Nb
99 6
99 5
99 7
100 9
100 5
101 8
102 3
102 2

et mon deuxieme tableau doit me donner

N°jour Nb
99 7
100 5
101 8
102 2

Ma question est donc: quelle formule mettre dans les cellules de la colonne Nb de mon deuxieme tableau.

Je suis sur que la réponse est simple ... mais là mon cerveau bug... et surtout suis pas assez rodé sur excel.

Merci pour votre aide. D££
A voir également:

8 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
12 avril 2008 à 18:08
Bonjour,

proposition ci joint:
https://www.cjoint.com/?emshkQJP8j

Bon WE
Michel
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
12 avril 2008 à 18:11
Rassure toi, la reponse ne me parait pas simple a moi non plus et pourtant j'utilise Excel de maniere intensive depuis tres longtemps.
Dans ce cas, je ne vois pas d'autre solution que d'ajouter une colonne dans ton premier tableau afin d'indiquer ou se trouve la derniere occurence.
       A      B                 C
  +---------+----+-------------------------------+
1 | No Jour | Nb | Dernier                       |
  +---------+----+-------------------------------+
2 |      99 |  6 | =SI(NB.SI(A2:A$9;A2)=1;B2;"") |
  +---------+----+-------------------------------+
3 |      99 |  5 | =SI(NB.SI(A3:A$9;A3)=1;B3;"") |
  +---------+----+-------------------------------+
4 |      99 |  7 | =SI(NB.SI(A4:A$9;A4)=1;B4;"") |
  +---------+----+-------------------------------+
5 |     100 |  9 | =SI(NB.SI(A5:A$9;A5)=1;B5;"") |
  +---------+----+-------------------------------+
6 |     100 |  5 | =SI(NB.SI(A6:A$9;A6)=1;B6;"") |
  +---------+----+-------------------------------+
7 |     101 |  8 | =SI(NB.SI(A7:A$9;A7)=1;B7;"") |
  +---------+----+-------------------------------+
8 |     102 |  3 | =SI(NB.SI(A8:A$9;A8)=1;B8;"") |
  +---------+----+-------------------------------+
9 |     102 |  2 | =SI(NB.SI(A9:A$9;A9)=1;B9;"") |
  +---------+----+-------------------------------+

Ce qui donnera le resultat suivant
       A      B       C
  +---------+----+---------+
1 | No Jour | Nb | Dernier |
  +---------+----+---------+
2 |      99 |  6 |         |
  +---------+----+---------+
3 |      99 |  5 |         |
  +---------+----+---------+
4 |      99 |  7 |       7 |
  +---------+----+---------+
5 |     100 |  9 |         |
  +---------+----+---------+
6 |     100 |  5 |       5 |
  +---------+----+---------+
7 |     101 |  8 |       8 |
  +---------+----+---------+
8 |     102 |  3 |         |
  +---------+----+---------+
9 |     102 |  2 |       2 |
  +---------+----+---------+

Le tableau suivant utilise alors les formules :
       A                       B
  +---------+--------------------------------------+
1 | No jour |                  Nb                  |
  +---------+--------------------------------------+
2 |      99 | =SOMME.SI(Feuil1!A$1:A$9;A2;C$1:c$9) |
  +---------+--------------------------------------+
3 |     100 | =SOMME.SI(Feuil1!A$1:A$9;A3;C$1:c$9) |
  +---------+--------------------------------------+
4 |     101 | =SOMME.SI(Feuil1!A$1:A$9;A4;C$1:c$9) |
  +---------+--------------------------------------+
5 |     102 | =SOMME.SI(Feuil1!A$1:A$9;A5;C$1:c$9) |
  +---------+--------------------------------------+

Est ce que cela te conviens ?
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
12 avril 2008 à 18:17
Excellente solution michel_m.
Ne pas oublier les $ cependant.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
12 avril 2008 à 18:59
Exact, les 2 formules deviennent:

Tri sans doublons (D1 doit resté vide)
=SI(MIN(SI(A$1:A$100>D1;A$1:A$100))=0;"";MIN(SI(A$1:A$100>D1;A$1:A$100)))
dernière occurence
=SI(D2="";"";INDEX(B$1:B$100;MAX(SI(A$1:A$1000=D2;LIGNE(A$1:A$1000)))))
formules matricielles

Merci Santiago

Bonne soirée à tt le monde
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tout dabord merci à tous les deux pour vos réponses.

Réponse à Michel_m:
je t'avouerais que je n'arrive pas bien à saisir le sens de la "syntaxe" de la formule, et n'ayant pas réussi à l'aapliquer à ma feuille de calcul, je me suis servi de la tienne pour y incorporer mes propres données ( :-p ) donc ce probleme est résolu.
Cependant pourquoi la deuxieme colonne de ton deuxieme tableau renvoie la valeur 0 alors qu'elle devrait renvoyer 2 (derniere occurence) ?

Réponse à santiago69:
Ton deuxieme tableau renvoie la derniere occurence pour le jour 99 dans toute la colonne (colonne 2 tableau 2) !!

Question à tous deux:
Ne saisissant pas bien les sens des syntaxes de l'un et de l'autre, je crois avoir compris que chacune de vos formules n'était valable que pour une plage de données déja remplie et dont on connait donc la taille. Pas possible donc pour moi de faire un copier/coller pour des futures plages pas encore remplies. ??...
J'espère que mon charabia n'en est pas vraiment pour vous... en vous remerciant encore de votre aide....
0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
12 avril 2008 à 19:49
La formnule de mon deuxieme tableau est :
       A                           B
  +---------+---------------------------------------------+
1 | No jour |                     Nb                      |
  +---------+---------------------------------------------+
2 |      99 | =SOMME.SI(Feuil1!A$1:A$9;A2;Feuil1!C$1:C$9) |
  +---------+---------------------------------------------+
3 |     100 | =SOMME.SI(Feuil1!A$1:A$9;A3;Feuil1!C$1:C$9) |
  +---------+---------------------------------------------+
4 |     101 | =SOMME.SI(Feuil1!A$1:A$9;A4;Feuil1!C$1:C$9) |
  +---------+---------------------------------------------+
5 |     102 | =SOMME.SI(Feuil1!A$1:A$9;A5;Feuil1!C$1:C$9) |
  +---------+---------------------------------------------+


Et rassure toi, nos formules marchent meme si tu insere des nouvelles lignes.
Je te conseille la solution de michel_m.
Tu peux cependant lui apporter la correction suivante (si michel_m me permet) :
D2 =SI(MIN(SI(A:A>D1;A:A))=0;"";MIN(SI(A:A>D1;A:A)))
E2 =SI(D2="";"";INDEX(B:B;MAX(SI(A:A=D2;LIGNE(A:A))))­)

N'oublie pas que ce sont des formules matricielles. c'est a dire qu'apres les avoir modifie, tu dois valider avec Shift+Ctrl+Enter plutot qu'avec un simple Enter.
Ensuite tu peux remplir ton tableau 1 a l'infini et recopier vers le bas ton tableau 2 a l'infini.
En revanche, tes calculs seront beaucoup plus lents (mais je pense que ca ira avec les donnees que tu as)

0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
12 avril 2008 à 21:10
Bonsoir,

Je ne crois pas (à vérifier) que les formules matricielles fonctionnent avec des colonnes entières (A:A) il faut donc écrire par exemple A$1:A$36000 par exemple (ca permet 100 numéro par jour!)

D££, sur les forums, on te livre des maquettes: j'ai pris 100 comme j'aurai pu écrire 500 ou 1000 ou 65536... je commence en A1, mais chez toi c'est peut EF567... a toi d'adapter (et ainsi de progresser) car la communauté forum ne propose pas de solutions PAC (Prêt A Cuire)

Cependant, estime, comme dans toute appli, la charge maximum avec environ 15% d'extension surtout avec des matricielles qui sont très longues avec des grands tableaux; il vaut mieux alors passer par du VBA et voir qui est le + rapide..

Amicalement

Michel
0
Ca y est tout est ok!
je sais pas trop d'où venait l'erreur (...) en tout cas la formule de michel_m rectifiée par santiago69,... ça donne pile poil ce que je voulais! donc encore un grand merci à vous deux! Une bonne soirée et un excellent week-end!
0