[Excel 07] Tri de base de données

Résolu/Fermé
Sporoz Messages postés 3 Date d'inscription mercredi 8 juin 2011 Statut Membre Dernière intervention 21 juin 2011 - Modifié par Sporoz le 20/06/2011 à 15:16
Sporoz Messages postés 3 Date d'inscription mercredi 8 juin 2011 Statut Membre Dernière intervention 21 juin 2011 - 21 juin 2011 à 15:21
Bonjour,






Bonjour,

Je possède actuellement un tableau avec des données bibliographiques sur certaines espèces de phytoplancton (pour vous cadrer un peu le thème). Dans ce tableau on trouve entre autre : valeurs max et min de longueur, de largeur, nombre max et min de pores, forme de la valve (lancéolée, courbée), etc...

Je souhaite me servir de ce tableau de données à des fins d'identification d'espèces que j'observe. Je m'explique :

En prélevant des échantillons d'eau de mer, j'effectue des observations de phytoplancton. Je note alors leur longueur, largeur, nombre de pores etc...
Je souhaiterais alors constituer un tableau qui va "checker" si ces valeurs sont comprises entre les valeurs max et min présentes dans mon tableau bibliographiques (qui référence les différentes espèces).

Ainsi, pour la première bébête que je souhaite identifier, la tableau voit que sa longueur est comprise entre les longueurs max et min connues de l'espèce 1, de même pour la largeur, et tous les autres critères, ducoup mon tableau excel me renvoit à la fin : "didonc, cette espèce que tu viens de mesurer, a de grande chance d'être l'espèce 1".

Ainsi pour tous les organismes que je mesure, j'ai une vision de quelle espèce je viens certainement de mettre en évidence.


J'ai actuellement constitué un tableau qui ajoute 1 point si la valeur mesurée est comprise entre les deux valeurs référence, ou si la forme de la pointe, ou de la valve, est la même que celle d'une espèce référencée. Ainsi pour chaque organisme mesuré, j'obtiens à la fin les 5 espèces ayant obtenus le plus de points (et cela m'aide à identifier les espèces).

Je souhaiterais optimiser ce programme, en hiérarchisant les critères. Je m'explique :
Pour le moment dès qu'un critère est OK, cela donne un point, il n'y a pas d'importance relative des critères les uns par rapport aux autres, or c'est primordial dans la justification de mon identification.

J'aimerais donc : que dans un premier temps le tableau vérifie si l'organisme, que je cherche à identifier, présente ou non un nodule central, et qu'alors il élimine de la liste tous les organismes référencés n'ayant pas de nodule central. Ainsi, petit à petit, avec une hiérarchisation que j'ai établi, je cherche à déterminée qu'elle est l'espèce que j'ai actuellement sous les yeux.

Je cherche donc à discriminé des espèces (c'est drôle dit comme ça ^^), à en éliminer certaines directement, de manière à ne pas me retrouver à la fin avec des faux positifs (par exemple une espèce n'ayant pas de nodule central, mais donc tous les autres critères collent, et ba avec le système que j'ai actuellement elle va avoir plein de points, et pourtant comme elle n'a pas de nodule central, ba ça ne peut pas être l'espèce que j'ai sous les yeux).

Je vous joint le tableau que j'ai fait actuellement :

https://www.cjoint.com/?AFummadZsVr

Pas besoin de se focaliser au delà de A1:U16 (au delà c'est simplement des aides aux calculs). Il y a autant de feuilles que de dates de prélèvements d'eau de mer. Enfin il y a un dernière feuille contenant le tableau avec les mesures de références. Vous noterez que je n'ai pas encore pris en compte tous les critères, j'attends simplement d'établir une hiérarchisation de ces derniers.


Je vous remercie déjà de m'avoir lu, j'espère avoir été clair (concis peut être pas ^^), et j'espère que vous saurez m'aider (mais je n'en doute pas).
Merci d'avance.
A voir également:

1 réponse

Raymond PENTIER Messages postés 58763 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 décembre 2024 17 255
21 juin 2011 à 03:48
Bonjour Sporoz.

Tu m'as filé mal au crâne !

Mais essaie, dans ta cellule B20, de faire débuter ta méga formule, juste après le signe égal, par SI(OU(ET(Ref!$O6="no";B$9=1);ET(Ref!$O6="yes";B$9=0));0;
sans oublier de fermer la parenthèse tout à la fin de la formule ; et tu recopies ...
Il me semble que ça marche.
0
Raymond PENTIER Messages postés 58763 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 décembre 2024 17 255
Modifié par Raymond PENTIER le 21/06/2011 à 04:16
Cela donnerait donc :
= SI(OU(ET(Ref!$O6="no";B$9=1);ET(Ref!$O6="yes";B$9=0));0; SI(ET(B$3>=Ref!$E6;B$3<=Ref!$F6);1;0)+SI(ET(B$4>=Ref!$G6;B$4<=Ref!$H6);1;0)+SI(ET(B$5>=Ref!$M6;B$5<=Ref!$N6);1;0)+SI(ET(B$6>=Ref!$K6;B$6<=Ref!$L6);1;0)+SI(ET(B$7>=Ref!$P6;B$7<=Ref!$Q6);1;0)+SI(ET(B$8>=Ref!$R6;B$8<=Ref!$S6);1;0)+SI(B$9=0;1;0) )

Feuille 18-04-11, on a un résultat intéressant en colonne H car la liste
fraudulenta (6)
delicatissima (5)
heimii (5)
subpacifica (5)
subcurvata (4)

qui aurait pu se poursuivre par
granii (4)
turgiloides (4)
lineola (4)

devient alors
fraudulenta (5)
delicatissima (4)
heimii (4)
subpacifica (4)
turgiloides (3)

car subcurvata (0) est éliminée !
0
Sporoz Messages postés 3 Date d'inscription mercredi 8 juin 2011 Statut Membre Dernière intervention 21 juin 2011
21 juin 2011 à 14:17
Ok je vois, tu mets sous SI le calcul, de manière à faire prédominer le critère nodule central. En fait en attendant une réponse je me suis mis hier soir aux macros, et c'est assez intuitif, j'ai réussi à faire un truc qui marche avec des dizaines de conditions if, c'est certainement peu élégant, mais j'ai réussi à obtenir ce que je voulais.

https://www.cjoint.com/?AFvornJpxar
0
Raymond PENTIER Messages postés 58763 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 décembre 2024 17 255
21 juin 2011 à 15:08
Eh bien tant mieux.
Et à la prochaine.
0
Sporoz Messages postés 3 Date d'inscription mercredi 8 juin 2011 Statut Membre Dernière intervention 21 juin 2011
Modifié par Sporoz le 21/06/2011 à 15:21
Merci pour ton aide (je n'avais pas penser aux OU et ET, cela m'a aidé ce matin à peaufiner un peu ma macro). A la prochaine.
0