Fonction Si condition + recherche

Bonjour,

Dans mon tableau si joint, j'aimerai faire une recherche de résultat par "journée". Comme ça il n'y a que la référence à changer et il ne faut pas réécrire la formule pour toute les journée et toute les équipes.

Par exemple le FC Rosenau joue un match le 28.07, je souhaiterai mettre une formule dans la cellule M3, lui indiquant qu'il doit chercher le résultat dans la plage D8 à E11. En l’occurrence le résultat est sur la ligne 8.

Donc Si D8<E8 = 0

Si D8>E8 = 3

et Si D8=E8 il faut tenir compte des colonnes à coté SI F8<G8 = 1 et SI F8>G8 = 2

Sans faire la recherche, j'arrive à écrire le début de ma formule d'attribution de point, mais je cale quand je dois mettre les égalités, j'ai un problème de syntaxe.

J'ai différentes formules qui sont déjà intégrer dans le tableau, comme il n'y a encore aucunes valeurs les cellules sont à 0.

Est ce qu'a la fin de chaque formule si je mets =formule;"";"" ça suffit pour ne rien indiquer ou la formule sera fausse?

Merci

Bonne journée

25tournoi.xlsx (16.06 Ko)

Bonjour,

J'ai trouvé une solution complexe mais qui fonctionne...

Je calcule les lignes où se trouvent les clubs pour le match 1,2,3 et les colonnes où ils se trouvent, ça vient ensuite alimenter des formules de référencement pour faire varier la ligne et la colonne où on va chercher l'info de la cellule.

La ligne est calculée via la formule petite valeur, on prend la première plus petite ligne où on trouve le nom du club pour le premier match, puis la deuxième, la troisième...

Pour utiliser cette formule j'ai remplacé Match 1, Match 2, Match 3 par 1,2,3 et affiche Match via un format personnalisé.

Si tu as des questions sur la solution proposée n'hésite pas, le fair-play n'est pas pris en compte comme tu n'en n'as pas parlé

Voici le fichier :

Je patauge dans ta formule lol mais merci

Vraiment du mal à tout suivre, je ne comprend pas les valeurs qui résultent des formules lignes et colonnes.

Mais ça fonctionne

Comment ce fait il que si dans ton calcul sur les lignes, si je change la place de donné de B8 à B27 en B8 à B19 ça ne fonctionne plus?

Oui le fair-play est déjà géré par des formule et ça fonctionne.

Tu ne penses pas que pour simplifier les formules, on pourrait s'inspirer de la formule fair play?

Faire une petite recherche en fonction du nom et associer des fonctions si derrière???

Bonjour,

Désolé mais je ne vois vraiment pas comment faire ce que tu veux avec ton tableau de base.

explication :

1) Dans ton tableau de base aucune colonne n'indique si c'est le "Match 1" ou un autre match.

2) Le nom des équipes à rechercher n'est pas dans la même colonne.

( pour le match du 28/07 FC Rosenau est en colonne C mais Sirentz II en colonne D )

A ta place je présenterai le tableau de base pour le résultat des matchs par date autrement.

Voir exemple en feuille 2

Je me disais aussi que tu ne comprendrais pas trop

Du coup je pars pour des explications, tu verras après que ce n'est pas si compliqué


Pour commencer, le numéro de ligne :

Spoiler

=PETITE.VALEUR(SI(($B$8:$B$27=$L3)+($C$8:$C$27=$L3),LIGNE($B$8:$B$27),""),M$2)

Pour commencer la fonction petite.valeur, cette fonction a pour but d'aller chercher la kième petite valeur d'une liste de données :

si tu lui donnes 2, 1, 3, 5, et que tu lui demandes la première plus petite valeur, elle te renvoie 1, puis 2, puis 3, puis 5 au fur et a mesure que tu augmentes la place souhaitée

Je me sers de cette fonction pour aller chercher la kième ligne qui contient le nom du club pour lequel on veut attribuer des points.

Donc en rouge tu as la fonction chargée de filtrer les numéros de ligne que tu va donner, une fonction SI, et la place souhaitée est donnée par le numéro du match (1,2,3).

La plus grosse difficulté c'est de comprendre ici la formule SI qui peut perturber :

SI(($B$8:$B$27=$L3)+($C$8:$C$27=$L3),LIGNE($B$8:$B$27),"")

Donc tu as 2 tests logiques qui sont faits, que la colonne B contienne le nom du club, que la colonne C contienne le nom du club, le + sert d'opérateur OU, c'est à dire qu'il faut soit que la colonne B contienne le nom du club, soit la colonne C (pour le moment on veut juste savoir les lignes qui contiennent le nom après tout)

Si on trouve bel et bien le club sur une ligne en colonne B ou C, on donne le numéro de la ligne (on la laisse rentrer, elle est dans la liste des invités :p), sinon, on renvoie ceci "" qui va complètement se faire snober par la fonction petite.valeur (ah désolé mais vous n'êtes pas invité à la fête :p)

On aura que les numéros des lignes contenant le nom du club, et on va voir la plus petite, celle qui suit, ou encore celle d'après et ainsi de suite, c'est comme ça que j'obtiens le numéro de ligne

Le numéro de colonne :

Spoiler

=SI(INDIRECT(ADRESSE(U3,COLONNE($B$8)))=$L3,COLONNE($B$8),COLONNE($B$8)+1)

Le numéro de colonne n'est pas aussi compliqué qu'il n'y paraît, pourtant on voit encore plein de formules, c'est à n'y rien comprendre!

Eh bien pour commencer, on a encore un test via une fonction SI, en fait dis toi que le plus dur est fait avec le numéro de ligne, ici la seule chose que je voulais savoir c'est si le nom du club est dans la première colonne ou la deuxième colonne de la ligne, et tout va tourner autor de ça.

On a une fonction INDIRECT qui permet de donner la valeur d'une cellule dont la référence est donnée sous forme de texte, si tu donnes "A1" elle ira te donner la valeur de la cellule A1, je l'utilise souvent avec la fonction ADRESSE qui donne une référence sous forme de texte à partir d'un numéro de ligne et d'un numéro de colonne

Je prends le numéro de la colonne B (la première) via la fonction COLONNE

Je teste par exemple que la cellule B8 contient le nom du club sur la ligne où on l'a trouvé, si ce n'est pas elle, alors on donne le numéro de colonne de la seconde (COLONNE + 1)

Et enfin la fonction qui donne le nombre de points :

Spoiler

Elle aussi n'est pas aussi compliquée qu'il n'y parait, il suffit de la voir différement :

=SI(INDIRECT(ADRESSE(U3,X3+2))<INDIRECT(ADRESSE(U3,SI(X3=2,3,2)+2)),0,

SI(INDIRECT(ADRESSE(U3,X3+2))>INDIRECT(ADRESSE(U3,SI(X3=2,3,2)+2)),3,

SI(INDIRECT(ADRESSE(U3,X3+4))<INDIRECT(ADRESSE(U3,SI(X3=2,3,2)+4)),1,

SI(INDIRECT(ADRESSE(U3,X3+4))>INDIRECT(ADRESSE(U3,SI(X3=2,3,2)+4)),2,0))))

Et oui, en fait on a seulement 4 couleurs

Et 4 SI imbriqués pour faire les différents résultats :

défaite

victoire

défaite au tir au but

victoire au tir au but

En fait tu as encore une fois quasiment uniquement des fonctions INDIRECT et ADRESSE, tu peux remplacer cette longue formule par ça pour le cas où on est en ligne 8 :

=SI(D8<E8,0,

SI(D8>E8,3,

SI(F8<G8,1,

SI(F8>G8,2,0))))

La seule subtilité c'est pour les numéros de colonnes dans la fonction ADRESSE:

Pour les deux premiers tests, on regarde D8 et E8, on décale de 2 colonnes par rapport à celle où se trouve le club

Pour les deux derniers, on décale de 4 colonnes car on regarde F8 et G8

Dernière subtilité :

pour savoir si on doit faire D8<E8 ou E8<D8, on doit rajouter un petit test pour le deuxième terme afin de savoir si on met E8 ou D8:

SI(X3=2,3,2)

On va regarder si le premier terme du test et sur la première ou la deuxième colonne, et on s'adapte en fonction, pour la ligne 8 X3 = 2 donc le deuxième terme doit être E8

Si après ces explications des points t'échappent encore n'hésite pas à demander

Ah oui effectivement je suis comme toi, je comprends vite quand on m'explique longtemps

Je vais rajouter une feuille pour cacher tout ça que ça fasse un peu propre.

Si j'ose abuser il me reste encore un truc, pour faire le classement dans l'ordre.

Je peux utiliser une fonction rang qui ce fera par rapport au point, mais du coup mes chiffres de 1 à 4 peuvent être mélanger.

A mon avis il est un peu trop compliqué (si pas impossible) de laisser les chiffres dans l'ordre croissant et de faire bouger le reste des lignes avec les points, etc...

Par contre si je passe par une feuille de travail séparé, je peux faire mon tableau avec les chiffres mélangé et sur ma page principale est ce que je peux appeler les lignes correspondante à chaque classement peut importe l'évolution?

Est ce que je suis clair??? Mon esprit pense que oui (il est un peu dingue parfois) et le tien?

Oui je comprends ce que tu veux dire je vais voir pour faire ça

Quelque chose comme ça?

Alors c'est exactement ça!!!!

Sauf que ça gère pas les égalités

Il fait une petite erreur quand y a une égalité de points, essaie voir.

Le top serait au moins que les 2 équipes s'affiche, et on fera un check manuel de ces cas là.

Parce que la gestion par formule du classement serait trop difficile à faire à mon avis.

Car en cas d'égalité au classement final il faut tenir compte de ces points (dans l'ordre) :

- Goal-average particulier, ça veut dire rechercher dans tout le tableau la rencontre exacte et qui était le vainqueur

Si il y a match nul :

  • Le goal-average général, c'est à dire la différence de but
  • Les buts marqués
  • Les buts encaissés
et pour finir le fair play

Ca ferait une sacré usine à gaz

Si je peux juste avoir au moins le classement sans l'erreur en cas d'égalité je serai déjà très content et te remercierai beaucoup

Mais non pas une usine à gaz voyons, seulement une petite formule de rien du tout :

=SI(NB.SI($B$3:$B$6,B3)>1,SI(INDIRECT(ADRESSE(R3,S3+2,,,$Z$1))>INDIRECT(ADRESSE(R3,SI(S3=2,3,2)+2,,,$Z$1)),B3,SI(INDIRECT(ADRESSE(R3,S3+2,,,$Z$1))<INDIRECT(ADRESSE(R3,SI(S3=2,3,2)+2,,,$Z$1)),B3+1,SI(NB.SI.ENS($B$3:$B$6,B3,$I$3:$I$6,I3)>1,SI(NB.SI.ENS($B$3:$B$6,B3,$G$3:$G$6,G3)>1,SI(NB.SI.ENS($B$3:$B$6,B3,$H$3:$H$6,H3)>1,SI(NB.SI.ENS($B$3:$B$6,B3,$J$3:$J$6,J3)>1,"FAIT CHIER",SI(J3=MAX(SI($B$3:$B$6=B3,$J$3:$J$6,"")),B3,B3+1)),SI(H3=MAX(SI($B$3:$B$6=B3,$H$3:$H$6,"")),B3,B3+1)),SI(G3=MAX(SI($B$3:$B$6=B3,$G$3:$G$6,"")),B3,B3+1)),SI(I3=MAX(SI($B$3:$B$6=B3,$I$3:$I$6,"")),B3,B3+1)))),B3)

Avec les compliments du chef

Le fichier qui va avec :

Ah oui lol, une petite formule

Le jour ou j'en pond des pareils... ben il est pas encore arrivé

Par contre regarde ces 2 cas de figure :

Dans fair play tout est identique jusqu'au fair play qui devrait les départager, comme sierentz a plus de point ils devrait passer en tête.

Et dans différence, dès le goal-average général, sierentz devrait passer devant.

Dans le tab. de la page principale ça met toujours une erreur en cas d'égalité.

Et surtout merci pour le mot doux du classement bis

5difference.xlsx (22.60 Ko)
6fair-play.xlsx (22.64 Ko)

En effet petite erreure de ma part, en cas d'égalité je vais regarder si le club a gagné son dernier match, pas quel était le résultat du match entre les 2 clubs à égalité, je modifie ça si je trouve et je reviens vers toi, de rien pour le mot doux

Je viens de tombé sur un truc bizarre, si je continue le programme des matchs en rattachant les équipes de chaque groupe.

Dans la cellule B20 de la feuille match, je mets =Classement!C3 et le classement ce met à jours

Par contre si je mets C4 / C5 ou C6 rien de change...

Étrange non?

Et voilà, j'ai encore un peu compliqué les choses

Au fait le mot doux n'est censé se déclencher que pour ce cas : si il sont à égalité partout et que même le fair-play ne peut plus rien y faire

Pour ta demande suivante il faudra me passer la feuille pour que je comprennes

Merci c'est vraiment top

Transmet moi un peu de ton expérience excel

Ma demande n'a plus d'incidence maintenant c'était sur la version précédente.

Tu crois qu'on peut faire disparaître les N/A des cases avec des ""????

Si en B20, je veux afficher ce qui apparaîtra en L3 j'utilise une formule indirect du coup?

Oh je ne suis pas sûr qu'une expérience de quelques années te servirá à quelque chose tu sais

J'ai rajouté une formule sierreur pour faire disparaitre les N/A qu'on pouvait voir, c'est blanc, c'est beau, c'est vide

J'ai plutôt utilisé directement ce qui était affiché dans la cellule pour le nom du club

Par contre je dirais que ton fichier n'est pas terminé, tout ce qui dépasse la ligne 19 n'est calculé nul part, il faudra y traiter ailleurs

Du moins si c'est nécessaire hein! je vois que tu as déjà fait un classement final

En tout cas voici une nouvelle versión du fichier :

Ben si ça me servirai à pondre un tableau comme ça tout seul

Ah oui c'est mieux avec ça.

Mais tu as fait comment pour les noms des clubs, quand j'ai fait ça chez moi, il me mettait un gros message d'erreur que c'était pas possible parce qu'il y avait des boucles dans les formules

Ce qui dépasse de la ligne 19 c'est une phase à élimination directe, si tu gagne tu es qualifié pour jouer une place plus importante.

Faut que je mette une fonction si par rapport au score pour mettre les qualifiés.

Merci beaucoup de ton aide en tout cas

Si je cale pour finir, je te fais un petit message

Bon après midi

En fait j'ai modifié les plages des formules qui gênaient, pour les formules de classement j'allais cherché jusqu'à la ligne 27, j'ai remis jusqu'à la ligne 19 et pouf tout remarche

Ça marche bonne chance pour la suite

Hello Hello Ausecour, c'est encore moi

Du coup on était en train de tester le tableau et petite panne...

Regarde le classement du groupe bleu, si tu enlève le score de la ligne 19 c'est bon et si tu mets un score pour sierentz ça ne fonctionne plus.

Pourtant selon les règles établis ça ne devrait pas comme son adversaire à perdu contre eux.

En effet lors de la modification de formule j'ai dû oublié de fixer une référence, je l'ai fixé et tu as bien le bon résultat cette fois

Rechercher des sujets similaires à "fonction condition recherche"