Trier des données plusieurs critères google sheet
Bonjour,
je souhaiterais que quelqu'un m’éclaire sur la marche a suivre pour faire une recherche d données selon plusieurs critères.
je fais un import de données d'un site il s'agit de l'ensemble des matchs de NHL de la saison avec au fur et mesure les résultats
je me retrouve avec un tableau a plusieurs colonnes
A dates
B équipe 1
C score équipe 1
D équipe 2
E score équipe 2
cela va de la ligne2 a la ligne 1313... jusque la tous va bien les résultats se rajoutent chaque jour a chaque fois que la mise a jour est faite sur le site de référence...
la ou je sèche j'ai beau retourner la situations je ne vois pas comment m'y prendre
je souhaiterais pouvoir récupérer les scores pour les 3 derniers matchs de chaque franchise et en faire un total but pour but contre j'ai tente des somme si ens, recherche v nb si mais peut être pas dans le bon ordre...
je peux fournir plus d'informations si besoin, je voudrais pas spécialement la formule clé en main mais comment y arriver pour comprendre le fonctionnement de la formule
merci par avance de vos retours.
(Re)Bonjour,
Une copie du fichier est toujours pratique pour comprendre vos données et votre objectif, d'ailleurs ce dernier est encore à clarifier pour moi "franchise" => vous n'en parlez pas dans vos données…
Puisque vous écrivez
je peux fournir plus d'informations si besoin, je voudrais pas spécialement la formule clé en main mais comment y arriver pour comprendre le fonctionnement de la formule
Ce qui est selon moi une excellente chose, voici le lien de quelques pages d'aide pour vous aider :
SORT : https://support.google.com/docs/answer/3093150?hl=fr
SORTN : https://support.google.com/docs/answer/7354624?hl=fr
FILTER : https://support.google.com/docs/answer/3093197?hl=fr
LARGE : https://support.google.com/docs/answer/3094008?hl=fr
SMALL : https://support.google.com/docs/answer/3094050?hl=fr
INDEX: https://support.google.com/docs/answer/3098242?hl=fr
XLOOKUP / RECHERCHEX: https://support.google.com/docs/answer/12405947?hl=fr
QUERY (utile si vous connaissez déjà le SQL) : https://support.google.com/docs/answer/3093343?hl=fr
bonjour,
suite à votre message merci pour vos retours je ne manquerais pas de regarder les liens
franchise c'est une autre appellation d'équipe, dans les sport US les équipes sont des franchises.
je cherche a récupérer les buts inscrit en encaissés sur les 3 dernières rencontres de chaque équipes pour en faire une moyenne et l'intégrer a une moyenne pondérée des buts marqués pour chaque équipe et je souhaiterais que la récupération des 3 derniers matchs se fasse automatiquement et se décale dans le temps au fur et a mesure que le calendrier avance...
https://docs.google.com/spreadsheets/d/1tv0_b6siQEKBm_122hFHJ-RRdzbQrsxsgV-fPqVAXX0/edit?usp=sharing
dans le lien fourni je prend en exemple chicago ses 3 derniers matchs
ligne 382 28/11 nashville 4-chicago 3
ligne 404 30/11 anaheim 3 - chicago 5
ligne 421 2/12 chicago 3-vegas 4
ca me donne 11 buts pour 11 buts contre
lors de prochaine mise a jour Chicago cela intégrerai
ligne 433 Chicago- los angeles et la ligne 381 ne serait plus prise en compte dans le calcul.
est ce que ma demande semble plus clair?
je peux fournir l'ensemble du fichier avec les onglets si besoin
merci de votre retour.
cordialement
Bonjour,
Il y a diverses manières de procéder, voici une proposition :
On va définir une fonction nommée (Données > Fonctions nommées > Nouvelle) :
Etape 1 :
Formule :
=LET(
_filtTeams; BYROW(_tbl; LAMBDA(r; INDEX(r; 3) & "|" & INDEX(r; 5)));
_tbFiltTeam; FILTER(_tbl; ISNUMBER(SEARCH(_team; _filtTeams)) * (INDEX(_tbl; ; 1) <= TODAY()));
_tbNMatchs; SORTN(_tbFiltTeam; _nbM; ; 1; 0);
_goals1; SUM(IFERROR(FILTER(INDEX(_tbNMatchs;;4);ISNUMBER(SEARCH(_team;INDEX(_tbNMatchs;;3))));0));
_goals2; SUM(IFERROR(FILTER(INDEX(_tbNMatchs;;6);ISNUMBER(SEARCH(_team;INDEX(_tbNMatchs;;5))));0));
_teamGoals; _goals1 + _goals2;
_extGoals; SUM(CHOOSECOLS(_tbNMatchs; 4; 6)) - _teamGoals;
HSTACK(_team; _teamGoals; _extGoals)
)Etape 2 :
Etape 3 : Valider.
Ensuite, dans le classeur il vous suffit d'écrire :
=LASTGOALS(A1:J1313;"Chicago Blackhawks";3)
Pour récupérer les goals marqués et reçus sur les 3 dernier matchs des Chicago Blackhawks.
Pour synthétiser les résultats de toutes les équipes dans un tableau on peut écrire :
=LET(
_tbl; A1:J1313;
_teams; SORT(UNIQUE(INDEX(_tbl; ; 3)));
_res1; MAP(_teams; LAMBDA(_t; LASTGOALS(_tbl; _t; P2)));
_res2; FILTER(_res1; ISNUMBER(INDEX(_res1; ; 3)));
VSTACK(HSTACK("Team"; "Scored"; "Conceded"); _res2)
)Voilà, ci-après un exemple du résultat : https://docs.google.com/spreadsheets/d/1O9lw06OTmILdDBSaZ15Ym-CUirQaPtj9QU8swmmPma0/edit?usp=sharing
cela semble complétement répondre a ma recherche, vous avez crée une fonction spécifique?
totalement en delà de mes compétences....
si je change le nom de l’équipe dans le lien a coller last goal cela va s'adapter a chaque équipe et au fur a mesure
je vous remercie c'est génial je faisais ça a la main pour les 32 franchises....
je regarde la mise a jour des prochains matchs avant de passer en résolu.
Oui c'est ça, l'intérêt de créer une fonction c'est qu'on peut la réutiliser plus facilement (cellule M6) sans avoir à tout recopier à chaque fois (formule en cellule M4 à titre d'exemple).
Juste un point que nous n'avons pas évoqué qui me semble important :
Vous pouvez voir dans la formule utilisée la ligne suivante
_tbFiltTeam; FILTER(_tbl; ISNUMBER(SEARCH(_team; _filtTeams)) * (INDEX(_tbl; ; 1) <= TODAY()));J'ai ajouté la partie (INDEX(_tbl; ; 1) <= TODAY()) pour ne récupérer du grand tableau QUE les matchs ayant déjà eu lieu (colonne A<=aujourdhui). En effet autrement, en faisant le tri par dates et en prenant les 3 dernières, puisque le site de hockey vous renvoie aussi les futurs matches… bah on se retrouvait avec des scores vides.
Si jamais vous vouliez quelque chose de plus personnalisé ou plus générique, on pourrait faire un autre filtrage sur la colonne D ou F (les scores) pour s'assurer qu'elles ne sont pas vides. On pourrait aussi ajouter une date buttoir personnalisée autre que "TODAY".
Mais bon, a priori vous cherchiez "les 3 derniers matchs" donc la méthode que j'ai employée y répond bien.
Quand tout sera bon pour vous, n'oubliez pas de clôturer le fil.
Bonne journée.
je viens d'essayer en manuel pour certaines équipes cela ressort en erreur 4 sur 12 saisies, la formule qui permettrait de synthétiser les résultats dans un tableau je me retrouve avec #N/A
aucune correspondance trouve lors de l’évaluation FILTER
ceci dit c'est bie nplus de résultats que ce que j'avais tenté de faire....
Vous avez raison, il y avait une erreur dans la formule au niveau du calcul des goals (lignes _goals1 et _goals2) que j'ai corrigé. Je vous laisse mettre a jour la formule dans votre fichier en utilisant celle de mon message ci-dessus que j'ai édité.
La revoici si jamais :
=LET(
_filtTeams;BYROW(_tbl;LAMBDA(r;INDEX(r;3)&"|"&INDEX(r;5)));
_tbFiltTeam; FILTER(_tbl;ISNUMBER(SEARCH(_team;_filtTeams))*(INDEX(_tbl;;1)<=TODAY()));
_tbNMatchs;SORTN(_tbFiltTeam;_nbM;;1;0);
_goals1; SUM(IFERROR(FILTER(INDEX(_tbNMatchs;;4);ISNUMBER(SEARCH(_team;INDEX(_tbNMatchs;;3))));0));
_goals2; SUM(IFERROR(FILTER(INDEX(_tbNMatchs;;6);ISNUMBER(SEARCH(_team;INDEX(_tbNMatchs;;5))));0));
_teamGoals;_goals1+_goals2;
_extGoals;SUM(CHOOSECOLS(_tbNMatchs;4;6))-_teamGoals;
HSTACK(_team;_teamGoals;_extGoals))Enfin, pour ne pas inclure les 2 en-tetes "visitor" et "home" comme des équipes, on peut modifier la formule de synthèse comme ceci :
=LET(_tbl;A1:J1313;_teams;SORT(UNIQUE(INDEX(_tbl;;3)));
_res1;MAP(_teams;LAMBDA(_t; LASTGOALS(_tbl;_t;P2)));
_res2;FILTER(_res1;ISNUMBER(INDEX(_res1;;3)));
VSTACK(HSTACK("Team";"Scored";"Conceded");_res2))avec la modification de la formule cela fonctionne parfaitement pour l'ensemble des équipes
j’attends de voir avec les matchs de cette nuit comment la mise a jour se fait.
pour ce qui est de la formule de synthèse dans un tableau peut être que je me débrouille mal.
dois je la coller dans une cellule particulière?
encore une fois je vous remercie pour votre aide.
cordialement
bonjour ,
la mise a jour semble se faire pour certaines équipes je n'ai pas vérifié l’ensemble juste quelques unes, Vegas s'est mis à jour,
chicago, rangers, Islanders et dallas ne sont a jour que sur les deux dernières rencontres,
pour le tableau synthétisation cela me donne une erreur lorsque je colle la formule
voila le retour que je peux vous faire.
cordialement
Après pour les mises à jour ça va dépendre de la fonction =IMPORTHTML("https://www.hockey-reference.com/leagues/NHL_2026_games.html#";"table";1) et donc du site hockey-reference, pas des formules.
Pour coller correctement la formule il ne faut pas "juste" sélectionner la cellule. Cliquez d'abord (gauche) dans la barre de formule, puis collez là (via CTRL+V ou clic droit > coller).
Si ça ne fonctionne toujours pas, c'est peut être que vous avez les formules en français ou un autre séparateur de décimales. Auquel cas partagez un fichier en modification à toute personne disposant du lien. Je vous y mettrai les formules et vous n'aurez plus qu'à arranger cela comme vous le souhaitez.
je veux bien vous envoyer le fichier mais comment je fais je vous le donne en perso?
Le plus simple c'est de partager ici un lien (temporaire) d'accès en écriture à une COPIE de votre fichier. Ainsi cela me permet (à moi ou d'autres personnes pouvant vous aider) de le modifier facilement sans passer par les autorisations d'accès etc. Enfin, quand le sujet sera résolu il vous suffira soit de retirer l'accès au fichier, soit d'en recopier les cellules dans votre original (et supprimer le fichier temporaire).
très bien j'ai fait une copie pour vous permettre d’accéder au sheet c'est sous l'onglet "3 derniers match moy" que nous avons la page en question je récupère les données pour les exporter vers l'onglet "modele nhl..." pour la petite histoire...
https://docs.google.com/spreadsheets/d/1ZucwHpuMMBjpdn2acApQHW-ZNCqFAXEwlUml81MqhXQ/edit?usp=sharing
Bien, j'ai un peu adapté la formule pour qu'elle fonctionne qu'importe le nombre de lignes en A:J.
Je vous ai mis la formule dans la feuille "3 derniers match moy" en cellule S2 afin de ne pas écraser vos données. Il suffit de COUPER(-COPIER)/COLLER la cellule pour la déplacez où vous en avez besoin.
En tout cas vous leurs faites un paquet de statistiques à vos équipes