Aide pour classement avec doublons (macro autorisée, après réflexion...)
Bonjour le forum,
Pour ce qui me connaissent un peu de par mes quelques messages ici, je solicite encore l'aide de ce forum pour un (nouveau) fichier en lien avec un jeu de gestion de ferme.
Dans ce jeu, on peut travailler quelques indices génétiques (de 3 à 6 selon l'espèce animale). Pour la faire évoluer, il faut faire le choix entre les différents mâles existants.
L'objectif de ce fichier est de faire ressortir les 20 meilleurs mâles (dans le jeu on peut combiner, en terme de "critères" 1 ou 2 indices, mais dans ce fichier, le top 20 je le fais selon la somme de ces indices génétiques (plus facile pour moi à faire... et le fichier est déja lourd comme ça (y a surement moyen de l'optimiser -sans macro car, toujours pareil dans mon cas, le fichier doit pouvoir tourner sous MS Office comme sous LibreOffice, OpenOffice...).
Après je n'y suis dessus que depuis hier, donc...
Le fichier ci-joint comporte 2 onglets :
- résultats
- mâles (qui sert de base de donnée et de feuille de calculs...)
Comment ca marche :
le jeu permet d'extraire des données dans un .csv.
Le joueur extrait ces données, et les colle...
Onglet mâles :
Le joueur extrait ces données, et les colle en P2 (et ca rempli les colonnes jusqu'en AF; C'est la partie "variable" du fichier, en terme de lignes, puisque peuvent être collée aussi bien 300 lignes que 15 000). Les colonnes B à O sont les colonnes de calculs, selon :
colonne B : calcule le nombre d'indices génétiques du mâle > à celui de la femelle à inséminer (uniquement pour les mâles de la même race que la femelle)
colonnes C/E : indique (en binaire), en fonction de la valeur en B, si le nombre d'indices est > au palier défini (on y reviendra plus tard, c'est dans l'autre onglet), ou égal à ce palier, ou égal à ce palier-1.
colonnes F/H : je liste de façon incrémentée les valeurs présentes dans les colonnes C/E, pour obtenir une liste de 1 à...
colonnes I/K : j'indique le nom du mâle qui correspond aux valeurs des colonnes F/H
colonne L : on retrouve ici le résultat de la liste créée en F/H
colonne M : je classe les sommes (colonne Q) par ordre décroissantes qui correspondent aux males issus de la liste (colonne O)
colonne N : je classe les sommes (colonne Q) par ordre décroissantes
colonne O : je rappelle ici les noms des mâles selon la liste créé en I/L
Voila pour cet onglet.
P.S. : j'ai quelques couacs en M (par ex M33). J'en ai relevé 2 (M33 et M55,pour lesquels j'ai supprimé la formule du coup, et je pense que c'est lié à la présence de "~" dans le nom du mâle... Mais même avec un ctrl + H j'ai pas réussi à les virer (en dehors de manuellement 1 par 1). Ils arrivent avec l'extract issu du jeu :/
Onglet résultats :
ligne 4 : le joueur renseigne la race, le matricule et les indices génétiques de la femelle à inséminer (ne pas tenir compte des #REF! ligne 3 : ce sera juste des titres variables, sans incidence sur le reste du fichier)
cellule E1 : le (fameux) palier est calculé automatiquement (je vous explique pas l'origine de la formule), palier sur lequel se base les calculs du fichier.
lignes 11 à 30 (là aussi ne pas tenir compte des #REF: de la ligne 10... puisque liés à la ligne 3) : c'est le top 20, classés par somme des indices, et juste de la race renseignée en C4. En vert, c'est juste pour visualiser les indices génétiques > à la femelle.
Problème :
en ligne 27, j'ai un mâle qui est en double (ca peut arriver, voire triple ou plus) mais du coup, dans ma colonne N (onglet mâles) je n'ai pas de rang 17 (mais 2 fois le rang 16). Je sais pas trop comment l'aborder (par ex compter combien de fois est la valeur de rang/classement, et duppliquer le nom du mâle sur autant de lignes que cette valeur? mais dans ce cas comment dire à excel "tu duppliques cette donnée N fois"?
Merci pour votre aide, comme toujours!
Bonjour à tous,
Une proposition :
Bonsoir DjiDji (c'est marrant : Gigi qui parle à DjiDji)
Merci pour ton fichier. En parallèle j'avais réussi à bricoler quelque chose, mais avec 1 cellule intermédiaire dans mon tableau, et 1 (ou 2 je ne sais plus) au niveau du classement...
J'ai regardé vite fait ta proposition (visiblement sans cellules intermédiaires, donc c'est cool!), j'ai (vite fait donc) remarqué que tu as modifié , dans l'onglet "mâles), la formle en M (avec le SIERREUR, qui résout, au passage, mon N/A dû au "~"), en N aussi (vu qu'il y a maintenant un rang 16) et la formule en O . Je ne pense pas avoir relevé d'autres modifications.
Je regarderai ça plus en profondeur ce soir ou demain, mais déja, merci à toi de t'être penché sur mon problème!!
[EDIT : ON]
(après comparaison des fichiers, juste la formule en M a été retouchée). Merci!
[EDIT : OFF]
En fait, après essai, ca ne répond pas à mon attente...
Certes les doublons s'affichent, mais dans le top 20 de ta proposition, toutes les races sont mélangées : le top 20 ne tient donc pas compte de la race de la femelle (les croisements sont interdits)
Si on compare mon résultat (fichier modifié par rapport à celui d'origine, pour faire apparaitre les doublons, mais avec toujours mes erreurs "N/A" que je supprimer manuellement), je devrais obtenir ça :
Le résultat de ta proposition donne ça :
On remarque que :
les positions 1 à 13 donnent le même nom de mâle ;
le 14e diffère (le mien apparait en 17e dans ta proposition, et ton 14e n'est pas dans mon top 20),
15 et 16 (le doublon), on est en accord,
ton 17e est donc mon 14e
et mes 17 à 19 se retrouvent en 18-20 dans ton résultat.
et toue le reste (des indices au prix) est faux dans ton top 20
Si on regarde la ligne 151 de l'onglet "Mâles", qui correspond donc à "AFIN..." (le n°1 du top), colonne Q
on remarque que c'est bien un taureau de race Armoricaine, qui a une somme de 355.89 et non un taureau Blanc Bleu Belge qui a une somme de 307.83
Les informations de ton top 1 correspondent au mâle BIMBAL OF k2 ..., ligne 6 de l'onglet "Mâles" (colonne Q).
J'ai (peut être) trouvé pourquoi : dans ton classement, tu as également modifié les formules pour y mettre de l'INDIRECT (que je ne maitrise pas du tout).
Or il s'avère que sur cette ligne 6, colonne O, apparait le nom d'AFIN en tant que "mâle au rang 1" (je pense que du coup l'erreur vient de l'INDIRECT
Après quelques tests, j'ai peur que sans macro je m'embarque dans un truc... Digne d'une galère (mais j'ai pas assez de rames pour les galériens !) : il y a foule de calculs, et vu que les formules "calculent en temps réel", a la moindre modification d'une donnée d'entrée (par ex un indice de la femelle), ça mouline qques secondes avant de rendre la main...
Du coup, si les experts qui passent par ici considèrent que oui, une macro va alléger la tâche (au moins en permettant, par ex, le déclenchement du calcul "sur décision de l'utilisateur, par ex en cliquant sur un bouton", alors je veux bien tenter la chose (quite a faire une demande de conversion de la macro pour la rendre utilisable sous calc, mais je ferai ça da's un 2e temps, sur le forum dédié)
Du coup, si pour aiguiller les prochaines aides, je dois donner + de détails sur ce qui doit être affiché en permanence, ce qui doit être calculé...ne pas hésiter à me demander.
Je n'y connais presque rien en macro. Je sais +/- en décoder (puisque dans certains cas c'est la même philosophie que faire des formules) mais je sais pas comment coder (= la syntaxe à suivre)...
si on prend le cas de AFIN DE CHAZELLE, son classement est faux puisque tu prends toi AFIN DE CHAZELLE_1 et qui n'est meme pas classé dans "nom selon rang" autrement dit, il n'existe pas
alors on fait comment ??
Crdlmt
Oui, je prend "AFIN DE CHAZELLE_1 car si tu regarde bien comment il est créé (colonne P de l'onglet Males), il prend les noms de la colonne P (donc le nom selon le rang" et y ajoute une instance "incrémentielle" derrière, pour "gérer les doublons, via cellules intermédiaires (c'est comme ça que j'ai trouvé, sur internet, une solution pour gérer les doublons dans mon top 20 final.
Donc oui, AFIN DE CHAZELLE, tout comme AFIN DE CHAZELLE_1 est bien le mâle de race armoricaine, qui a au moins 4 indices > à la femelle, et qui a la plus grande somme des indices, donc le n°1 du classement...
Voila d'où sort "AFIN DE CHAZELLE_1".
MAIS, comme tu peux le voir dans le fichier, j'ai dû faire la même chose (colonne Q) en me basant sur les noms (colonne S) non classés, qui arrivent via l'export du jeu puisqu'ils n'ont pas le même ordre et que du coup un rechercheV du "nom selon le rang" (colonne O) ou de "'l'instance selon le rang" (colonne P) ne renvoit pas les bonnes informations (comme indiqué en fin de mon message d'hier à 22:28).
Et comme mes connaissances sont quand même plutot limitées dans Excel, je fais "comme je peux, malheureusement avec moulte de cellules intermédiaires..."
C'est pas un reproche que je te fais, loin de là! Je suis même content que quelqu'un se soit penché sur le sujet :)
re, j'ai supprimé la moitié du fichier et puis la formule "aggregat" (fonctionne depuis 2010, je crois)
Vos données, je les ai copié et collé comme valeurs (comme leurs formules sont supprimées)
EDIT: maintenant avec liste déroulante dans D4
Bonjour Bart,
Merci pour ta proposition !
Je suis bluffé de voir mon tableau amaigri et curieux de décortiquer la formule utilisée (agrégat, tronqué : c'edt des fonctions que je ne connais pas...deja que les fonctions ligne et colonne je débute avec ça...) : vivement ce soir !
Bien vu pour AUTONI (position 14) : il n'apparaît pas dans mon classement car un des nom "à erreur", à cause du "à"... Merci pour ça du coup !
Par contre, une remarque dans ton classement :
Le 16e (BONUS PROMOPLUS...) existe 2 fois dans l'onglet males, car il a pu être vendu d'un joueur qui a le rôle d'eleveur/inseminateur, à un autre joueur qui a le même rôle (c'edt pour ça qu'en colonne M, il y a 2 noms différents pour ce mâle (tatoune31 et Earl de St leu)
Lui n'apparaît que 2 fois (onglet mâle, lignes 1433 et 1434) mais un mâle peut apparaître plus de 2 fois (comme booke..., lignes 1436 a 1438, ou bracro Mt, lignes 1491 a 1494)
Est il envisageable d'intégrer toutes les instances dans ton résultat (et que, dans le cas de ce mâle, il remonte 2 fois, 1 fois associé au CIA tatoune31 et l'autre fois avec Earl de St leu)? Ou, autre option, qu'il n'apparaisse qu'une fois mais qu'il y ait, par ex en dessous du top 20, une note du genre "le mâle Toto est disponible également dans les CIA xxx, yyy, zzz"?
Parce qu'il se peut qu'un des joueurs/cia ne soit plus actif (mais sur le jeu le compte, si le joueur ne se des inscrit pas de lui même, reste visible "6 mois après la dernière connection"...
re, ces doublons étaient éliminé à l'aide de la colonne Q, les zéros dans cette colonne sont les doublons du même numéro "matricule" mais avec une somme d'indices plus petits ou une ligne plus petit. (Voir votre "BONO PROMOPLUS", la somme était la même et alors c'était la 2eme ligne, qui est pris en considération). Il y a 224 "doublons" comme çà. Bon, en supprimant cette colonne, (je ne l'ai pas encore fait), on a ceci. Vous verrez que pour ce "BONO", il a maintenant les 2 lignes mais la 1434 est devant la 1433 (en cas d'égalité, la dernière ligne a priorité).
L'aggregat n'utilise que la colonne K (contenu & numero de la ligne) pour créer le TOP-20. C'est pourquoi, cette formule n'a pas des problèmes avec votre "à".
.,
re,
merci pour les explications, et vu comment le tableau a été simplifié je suis vraiment bluffé!! (je savais qu'Excel est puissant, mais là... wow!)
Dans le cas des doublons, peu importe "celui qui arrive en premier", le souhait est juste qu'ils apparaissent :) histoire que le joueur intéressé par le mâle en question ait toutes les possibilités (du moment que le mâle a toutes ses instances dans le top 20, sinon... le joueur doit faire avec (déja que top 20, on est quelques uns à penser qu'on va trop loin et que la majorité des demandes concerneront un choix plus restreint...mais comme on dit : "c'est le retour d'expérience qui fera l'analyse!"
Merci encore!
[EDIT : ON]
Apres un petit essai (déja c'est plus rapide!) mais j'ai l'impression (je me trompe peut être) que ton top 20 se base uniquement sur la somme des indices, sans tenir compte du nombre d'indices (du mâle > la femelle) défini sur l'onglet résultats, en F1.
et c'est , avec la race, LE critère pour définir "qui a sa place dans le top 20".
Si je passe en vert les indices des mâles > la femelle, dans le cas d'un palier à 4 (donc 4 indices du males > la femelle), on remarque par ex que SURF DE LOOP (5e et 6e) n'a que 3 indices supérieurs à ceux de la femelle, le 10e n'en a que 2, le 20e 1 seul.
Est ce intégrable dans ta proposition (c'était une partie des colonnes qui ont été supprimées par rapport au fichier d'origine)?
[EDIT : OFF]
comme ceci ? Dans la cellule D6, vous pouvez choisir avec (1) ou sans (0) palier
Bonjour Bart,
Je voyais plus un "classement selon la somme, en prenant en compte le palier"
Du coup, par rapport à ta dernière proposition
Le 12e (cofoutrairi...) serait 6e "parce que parmis les mâles qui ont 4 indices ou plus (vu que le palier est de 4, et que ce mâle en a justement 4), et sa somme arrive en 6e position, mêmes si le 20e (drecoimas, actuellement 11e) a tous les indices (donc 5) mais une somme moins bonne (que cofoutairi).
Ceci dit, je regarderai ce soir ce que ça donne ce soir, et partagerai ce resultat avec d'autres joueurs expérimentés pour voir ce qu'ils pensent d'un tel classement.
re, j'ai ajouté une 3eme méthode de trier, càd :
D6 = 0 : triage descendant de la colonne J (sans colonne M)
D6 = 1 : triage descendant avant clé 1 = la colonne M (Palier) et clé 2 = la colonne J (Somme)
D6 = 2 : triage descendant avec clé 1 (invisible, mais colonne M >= $E$1) et clé 2 = la colonne J (Somme)
C'est aussi le TOP-100 pour mieux voir les différences entre ces 3 méthodes. (PS. plus tard, vous pouvez supprimer les lignes à partir de la 20eme.)
2 doublons consécutifs en colonne C = MFC jaune
Re,
Que dire... Merci!!
C'est plus que ce que j'attendais ! Mais c'est top !!
Encore merci pour ta patience et ton travail !,