Formule excel pour former une matrice

Résolu/Fermé
marinevh - 13 nov. 2017 à 13:02
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 - 20 nov. 2017 à 00:19
Bonjour,
j'ai une base de données de courses (1000 courses avec environ 10 partants par courses). J'ai la probabilité que chaque partant soit premier, et j'aimerais a partir de la déduire avec des hypothèses la proba que chaque partants soit 3 eme.

j'ai donc essayé de faire une matrice 2x2 j'ai en colonne tous mes partants (12000 observations) et j'ai fait une ligne allant de 1 a 20 (mon nombre max de partants).

Dans ma première ligne j'ai 1,2 ,3 ,4 ,5 ... jusque 20
je voudrais faire une matrice comme suit
premier 1 2 3 4 5 6 7 8 9 10
1 / - proba 1 premier et 2 second- pro 1premier et 3 second- proba 1 premier et 4 second
2 proba 2 premier et 1 second - / - proba 2 premier et 3 second
3
4
5
6
7
8
Du coup ayant l'id de la course et je voudrais une fonction me permettant d'aller chercher la proba du 1 pour toute la première ligne et la proba du 2 puis 3 puis 4 selon la colonne dans laquelle je suis mais sachant qu'il faut aussi faire attention au numéro de course et que l'ID de la course soit le meme.

Je ne suis pas sure que ce soit très clair mais je ne sais pas comment ajouter un fichier...

A voir également:

4 réponses

Raymond PENTIER Messages postés 58732 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 29 novembre 2024 17 247
13 nov. 2017 à 13:49
Bonjour.

1) Non, ce n'est pas extrêmement clair !
2) Oui, voici comment envoyer un fichier :
 1) Tu vas dans https://www.cjoint.com/ 
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier (15 Mo maxi)
3) Tu défiles vers le bas pour cliquer sur le bouton bleu [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; tu fais un clic-droit dessus et tu choisis "Copier le lien"
5) Tu reviens dans ta discussion sur CCM, et dans ton message tu fais "Coller".
=>Voir la fiche https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
0
Bonjour,

Alors voila l'adresse ou j'ai essayé d'expliquer ce que je voudrais faire:
http://www.cjoint.com/c/GKnnmitDWmH

J'espère que vous pourrez m'aider des Antilles
et si ce n'est toujours pas clair n'hésitez pas a me redemander
ca m'aiderait beaucoup!!

Merci par avance,
Cordialement
0
Raymond PENTIER Messages postés 58732 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 29 novembre 2024 17 247
14 nov. 2017 à 00:10
Désolé !
Mais déjà que je n'y connais pas en courses de chevaux, cela ne m'a pas aidé à comprendre ton tableau, et tes explications n'ont pas suffit à m'éclairer.
D'ailleurs je ne comprends pas pourquoi tu demandes de l'aide alors que tu as déjà inscrit les formules dans tes bulles de commentaire ...
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
14 nov. 2017 à 01:25
Bonsoir,

Donc tu as les formules mais tu ne sais pas les positionner avec les bonnes valeurs.
Regarde dans le fichier joint : https://www.cjoint.com/c/GKoay36ysFH

Il y a 2 noms dynamiques : partants et qcol
Le premier donne le nbre de partants de la course de la ligne où il est utilisé.
Le second donne la proba du partant dont le n° est en tête de colonne dans la course dont le n° est sur la ligne où il est utilisé.

Cordialement
0
Merci beaucoup pour votre réponse et c'est exactement ce que je veux faire.
Par contre pour appliquer cela a ma base de données, je voulais savoir comment je faisais pour créer les 2 noms dynamique partants et qcol

cordialement
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858 > marinevh
14 nov. 2017 à 13:13
Bonjour,

Les formules sont dans les noms.
Il suffit de les reproduire dans ton classeur.

Exemple : tu te mets en 'Feuil1 (2)'!D2 du fichier que je t'ai envoyé et tu vas dans le gestionnaire de nom.
Derrière partants tu as la formule =MAX(SI('Feuil1 (2)'!$A$2:$A$32='Feuil1 (2)'!$A2;'Feuil1 (2)'!$B$2:$B$32;0))
Tu adaptes $A$2:$A$32 et $B$2:$B$32 à la dimension de tes données. Tu remarqueras que les références sont absolues.
Ce qui rend dynamique ce nom, c'est l'absence de $ dans la référence $A2 qui fait que le nom partants donne une réponse en fonction de la ligne où on l'utilise.
Pour redéfinir partants dans ta feuille, tu te positionnes sur une cellule de la ligne 2 et tu colles la formule. c'est tout.

Pour qcol, toujours positionné en D2, la formule =RECHERCHEV('Feuil1 (2)'!D$1;SI('Feuil1 (2)'!$A$2:$A$32='Feuil1 (2)'!$A2;'Feuil1 (2)'!$B$2:$C$32;{0.0});2;0) est relative ligne à cause de $A2 et relative colonne du fait de D$1
Il faut donc se repositionner en D2 dans ta nouvelle feuille avant de redéfinir qcol.
Naturellement tu auras adapté les dimensions de tes données dans $B$2:$C$32 et $A$2:$A$32

Tu peux te passer des noms définis que j'ai utilisé pour rendre la formule plus lisible.
Il suffit de remplacer chaque nom par sa formule : =SI(OU(D$1=$B2;D$1>MAX(SI($A$2:$A$32=$A2;$B$2:$B$32;0)));"";$C2/(1-$C2)*RECHERCHEV(D$1;SI($A$2:$A$32=$A2;$B$2:$C$32;{0.0});2;0)/(1-RECHERCHEV(D$1;SI($A$2:$A$32=$A2;$B$2:$C$32;{0.0});2;0)-$C2))
A valider par CTRL+MAJ+ENTER parce c'est une formule matricielle.

Cordialement
0
marinevh > JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020
14 nov. 2017 à 19:28
Bonjour,

Un grand grand merci pour la clarté de votre message et pour votre aide!!

Bien cordialement
0
Je me permets de vous recontacter car vous m'aviez fait une réponse super claire la dernière fois, et j'avais juste encore une petite question: je voudrais faire la somme pour chaque numéro de partant retrouver le numéro de partant en colonne, et faire la somme de la colonne pour la course correspondant.

http://www.cjoint.com/c/GKqn2WTpFPH

voila le lien avec les commentaires explicatifs
si vous avez une idée ce serait super gentil!! :)
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858 > marinevh
Modifié le 17 nov. 2017 à 02:21
Bonsoir,

Ne personnalise pas tes demandes.
Il y a du monde sur ce forum pour te repondre, pas que moi.
En plus, je ne suis pas une référence en terme de simplicité. Donc tu te prives de réponses en personnalisant ta demande.

A part cela, tu peux essayer cette formule : =SOMMEPROD($D$2:$W$32*($D$1:$W$1=$B2)*($A$2:$A$32=$A2)) que tu recopies sur la zone qui te convient.
Tu auras besoin, pour que le résultat soit correct, de modifier les formules en D2:W32 en remplaçant les « «  par un 0.
Il faudra également modifier la MFC pour qu’elle prenne en compte le 0 à la place des guillemets.

Maintenant, la formule :
Le principe, c’est de filtrer ta zone de données verticalement pour ne garder que la colonne du partant et horizontalement pour ne garder que les lignes de la course du partant.
($D$1:$W$1=$B2) fournit une matrice ligne de vrai/faux, qui isole la colonne correspondant au partant (ici, B2)
($A$2:$A$32=$A2) fournit une matrice colonne de vrai /faux qui isole les lignes correspondant à la course (ici, A2)
Le produit de cette matrice colonne par cette matrice ligne donne une matrice de 31 lignes sur 20 colonnes contenant des vrais pour les cellules correspondant à la course du partant et au partant.
Il suffit de superposer ce crible avec tes données pour obtenir les valeurs à additionner.
C’est ce que fait la dernière multiplication.
Le sommeprod termine l’affaire.

Cordialement.

Edit : je viens de voir ton fichier et les commentaires en colonne X.
Donc tu mets la formule en X2 avec recopie vers le bas jusqu’en X32.
0