Chercher des données dans un autre tableau

Steph_giraud

Membre enregistré
20 Mars 2023
9
1
50
Bonjour à tous,
Je bute sur un sujet que je vais tenté de vous expliquer. J'ai un tableau (qui se complète au cours d'une année) avec des noms de compétiteurs, leur club, leur catégories,…. Je dois reporter ces compétiteurs dans un autre tableau qui reprend leurs performances lors de diverses compétitions. Je dois par ailleurs établir un classement des club (selon une règle que je vous épargne).
Pour éviter les erreurs je souhaite donc pouvoir, dans mon tableau des performances, faire appel à la liste des compétiteurs. Or, hormis le fait de les saisir un par un dans le menu local je ne trouve pas de formule qui me permettrait de le faire.
Est ce que vous connaissez une solution sur Numbers ?
Merci d'avance pour vos éventuelles réponses
 
Dans Numbers, tu peux avoir plusieurs tableaux sur une feuille et plusieurs feuilles dans un même fichier. Les recherches ou références à des données sont possibles dans tout ça.

Par contre, il n'est pas possible de lier des feuilles ou tableaux contenus dans un autre fichier.
 
Dans Numbers, tu peux avoir plusieurs tableaux sur une feuille et plusieurs feuilles dans un même fichier. Les recherches ou références à des données sont possibles dans tout ça.

Par contre, il n'est pas possible de lier des feuilles ou tableaux contenus dans un autre fichier.
Ma difficulté c'est que oui je sais lier des tableaux entre eux mais je n'arrive pas à avoir une case qui si je tape "thi" va me chercher dans la colonne qui va bien dans l'autre tableau tous les noms qui contiennent "thi" (genre Thierry Henri, Thierry Duchmol,…)
 
  • J’aime
Réactions: baron
Ça ne m'a pas l'air tout simple…
Je pense que tu devrais t'intéresser à la fonction RECHERCHEX.

L'idée serait de créer une colonne A dans laquelle tu introduis ton critère de recherche (Thi) et dans ta formule en colonne B, tu fais référence à cette colonne A comme critère de recherche, en ajoutant une astérisque (qui représente des caractères génériques) devant et derrière, pour trouver Thi**** p.ex.
Il faudrait aussi ajouter un traitement des erreurs…
Mais je n'arrive pas encore à quelque chose de complètement probant…

Ensuite, il faudrait trouver aussi quelque chose pour afficher plus que le 1er résultat…

— Mais il y a par ici des gars autrement plus aguerris que moi dans la manipulation des tableurs. Ils auront peut-être des idées plus commodes… ;)
 
  • J’aime
Réactions: Steph_giraud
Pour répondre à ton autre question :
Je rencontre une difficulté que j'espère arriver à régler grâce à votre aide à tous.
Je dois établir le classement de compétiteur sur une saison.
Pour ce faire j'ai un tableau avec tous les noms, prénom, age, catégorie etc puis j'ai un second tableau dans lequel je dois reporter, pour chaque compétiteur, les résultats sur les différentes compétitions.
J'aimerais que la case du nom prénom soit uniquement issue de la liste initiale (un peu comme les menus déroulants mais sans devoir saisir les compétiteur un par un dans le menu déroulant).
Quelqu'un aurait-il une solution (ou me dire que c'est pas faisable pour pas que je cherche pour rien).
Tu peux créer très aisément une liste de menu déroulant :
(Tu peux faire tout ceci directement dans ton tableau mais pour ne pas tout désorganiser en transformant toutes ses entrées au format Menu local, je te propose de passer par un tableau intermédiaire qu'il suffira de supprimer ensuite…)

• Tu sélectionnes tous tes noms et prénoms (à supposer qu'ils soient dans une même cellule, sinon tu les concatènes dans une colonne "Nom" & "Prénom").
• Tu cliques en dehors de ton tableau et tu colles : ça crée un nouveau tableau avec une seule colonne.
• Tu la sélectionnes, tu tries si nécessaire, et dans Format > Cellule, tu choisis "Menu local".
=> Tu auras ainsi un menu local avec une seule occurrence de tous tes noms et prénoms, dans l'ordre que tu auras choisi.
• Tu copies une des cellules de ton tableau et tu la colles dans le tableau où tu dois l'utiliser. Elle « contiendra » le menu local au complet.

• (Tu supprimes le tableau qui a servi à créer le menu local.)

++++++++++++++++++++++++

Autre possibilité, qui n'a rien à voir (tu diras ce qui te convient, le cas échéant) :

Si tu veux reproduire dans ton tableau 2 la colonne A du 1er tableau, tu peux aussi faire une formule élémentaire en tapant = dans la première cellule du tableau2 puis en cliquant dans la cellule correspondante du tableau1. Tu valides la formule par Enter et tu étends la formule sur toute ta colonne.
Tu retrouveras simplement dans ton tableau2 le contenu du 1er.
 
Dernière édition:
Bonjour,
Pour compléter les réponses de @baron , il y a la possibilité de simuler le menu local avec un applescript.

le script initialiserai une liste avec tous les noms des compétiteurs du tableau 1, puis te présenterai cette liste dans laquelle tu pourrais choisir le nom que tu désires et il remplirai la cellule sélectionnée avec le nom choisi.

Pour écrire ce script il faut connaître le nom des tableaux (celui contenant les noms et celui à remplir), le nom des feuilles concernées dans chaque tableau et dans quelle colonne sont renseigné les noms des compétiteurs.

Ce script se mettrai dans le dossier script de la bibliothèque utilisateur et pourrai apparaître dans un menu de la barre des menu en haut à droite.

Si tu es intéressé fourni moi les éléments !
 
Dernière édition:
Merci à vous pour vos réponses. Je pousse le bouchon un cran plus loin. Les propositions que vous me faites rendent, si j'ai bien compris, mon tableau contenant les noms-prénoms statique. Cela veut dire que si j'ai un compétiteur en cours d'année (ce qui est el cas en faite, à chaque nouvelle compétition j'ai des nouveaux) qui se rajoute il faut que je refasse la manipulation ? Je ne peux pas avoir cela en dynamique ? (oui je sais je suis exigeant ;-) )
 
Ma proposition avec un script, ne pose pas ce problème, puisque à chaque fois elle initialise le liste avec les noms qui sont dans le tableau 1, donc la liste qui t'est présentée pour choisir ton entrée est complète et à jour.

Fournis moi les éléments demandés ou met ton tableau en chargement sur un site et donne le lien, je te ferais ce script que tu pourras tester .
 
  • J’aime
Réactions: Steph_giraud
Ma proposition avec un script, ne pose pas ce problème, puisque à chaque fois elle initialise le liste avec les noms qui sont dans le tableau 1, donc la liste qui t'est présentée pour choisir ton entrée est complète et à jour.

Fournis moi les éléments demandés ou met ton tableau en chargement sur un site et donne le lien, je te ferais ce script que tu pourras tester .
https://drive.proton.me/urls/EN1NCZA374#InTZGTpOoP1f voici un lien vers le fichier. Premier onglet la liste actuelle et second onglet le tableau que je dois renseigner (pour l'heure j'avais commencé à saisir les nom à la main…).
Colonne A : nom prénom
Colonne B : Club (faudra que je fasse pareil avec les club sans doute d'ailleurs)
Colonne C Résultat compet 1
Colonne D : calcul point compet 1
etc

Merci beaucoup pour ton aide !!!
 
Bien reçu ton fichier.

Je sais faire un script pour mettre le nom dans 1 tableau, mais là il y a 7 tableaux possibles pour la réception du nom !

Donc il faudrait avoir 7 scripts...
Je cherche une solution, mais c'est pas simple.

Je te mets une ébauche pour pour voir ce que cela fait . Elle ne fonctionne que sur le tableau U18 Hommes.

pour utiliser en provisoire (test)
  • Ouvrir l’application éditeur de script qui se trouve dans application—> utilitaires.
  • Faire un copier coller du script dans une fenêtre de l’application
  • Enregistrer sous : (exemple : pour "U18 Hommes") sur le bureau

Ton fichier Numbers étant ouvert, tu sélectionnes une cellule dans le tableau "U18 Hommes" ou tu veux entrer un nom.
Tu lances le script en cliquant sur la flèche en haut a gauche.

Je continu de chercher une solution qui fonctionnerait sur tous les tableaux ou il faudra faire 7 script .

Peut être sur ton tableau avec la liste, ajouter une colonne avec le nom du tableau dans lequel il sera affecté ? dis moi si c'est envisageable ?
Autre possibilité avoir chaque tableau sur une feuille différente (un seul tableau par feuille) , Me semble plus simple...

Bloc de code:
tell application "Numbers"
  
    activate
    --tell the first table of the active sheet of front document
    tell table "jeunes" of the sheet "Liste ompétiteur" of front document
        set lacol to "E"
        set laliste to {}
      
        repeat with i from 2 to (count of rows in column 1)
            set lacell to value of cell (lacol & i)
            --display dialog lacell
            if lacell is not missing value then set end of laliste to lacell
        end repeat
      
        --trier
        set maximum to length of laliste
        repeat while maximum > 0
            set maximumTemp to 0
            repeat with i from 2 to maximum
                if item (i - 1) of laliste > item i of laliste then
                    set tmp to item i of laliste
                    set item i of laliste to item (i - 1) of laliste
                    set item (i - 1) of laliste to tmp
                    set maximumTemp to i
                end if
            end repeat
            set maximum to maximumTemp
        end repeat
      
      
      
        set choix to (choose from list the laliste with prompt "Sélectionner : " with title "Choix") as string
    end tell
  
    if choix is not "false" then
        tell table "Tableau 1-1" of the sheet "données base" of front document
          
            try
                set LaSelection to selection range --récupère dans la variable "lasélection" les cellules sélectionnees dans numbers
                set Lacellule to name of cell 1 of LaSelection
                set value of cell Lacellule to choix
            on error
                display dialog "pas trouvé de cellule sélectionnée dans le tableau U18 Hommes"
            end try
        end tell
    end if
end tell
 
Dernière édition:
Une remarque en passant, le tableau 1 mélange des données quasi invariables et des données variables, ce qui pourrait poser problème :
  • on peut changer de club en cours d’année (variable "pure")
  • on peut changer de catégorie en cours d’année (variable calculée)
Après, ça ne pose peut-être pas de problème…
 
J'ai édité mon message !
Peut être sur ton tableau avec la liste, ajouter une colonne avec le nom du tableau dans lequel il sera affecté ? dis moi si c'est envisageable ?
Autre possibilité avoir chaque tableau sur une feuille différente (un seul tableau par feuille) , Me semble plus simple...

Que penses tu d'un seul tableau par feuille ?
 
Voila les fichiers pour essai
dis moi si c'est ce que tu attendais ...
 
Voila les fichiers pour essai
dis moi si c'est ce que tu attendais ...
Merci !!!! c'est cool ca va sans doute me faciliter la vie. Je vais l'utiliser un peu pour voir à l'usage. Merci pour al réactivité et le boulot !
 
si çà fonctionne et que c'est ce que tu voulais... alors content pour toi!

Edit: attention si tu modifies le nom de la feuille du premier tableau cela ne fonctionnera plus , d'autant que je viens de voir que tu l'a nommée "liste ompétiteur".
Si tu modifies il faudra modifier dans le script !! sur la troisième ligne !! :D
 
Dernière édition:
  • J’aime
Réactions: Steph_giraud
On dirait que Zeltron54 a une bonne proposition… Je te laisse l'explorer et tant mieux si ça fait l'affaire.

J'expose néanmoins quelques réflexions que je me suis faites à la vue de tes tableaux, ça pourra toujours servir.
Si tu veux expérimenter, ne le fais pas en même temps que le script de notre ami : ça risque de le rendre caduc. Fais-le plutôt sur une copie… ;) Tu pourras toujours adapter le script après…

• De manière générale, concernant l'organisation des tableaux, il est commode de nommer les éléments :
1) Quand on fait référence à des tableaux externes, la numérotation par défaut Tableau 1-1, etc. est peu claire.​
Donner un nom explicite à ses tableaux (Format > Tableau > cocher Titre et compléter au dessus du tableau) peut rendre les formules plus lisibles.​
— On peut ensuite décocher la case si on ne veut pas afficher le titre sur la feuille.​
Ex. (même si tu verras après que ce n'est peut-être pas nécessaire…)​
Nommer les tableaux.png
2) Dans le même esprit, quand on utilise plusieurs colonnes d'en-tête, plutôt que des coordonnées du type A1, les références aux cellules vont utiliser la valeur de la cellule d'en-tête la plus à l'intérieur.​
Pour avoir des références parlantes, ça vaut donc la peine de placer les éléments du général au particulier, de gauche à droite pour les colonnes et de haut en bas pour les rangs d'en-tête.​
Ex. dans le tableau ci-dessous :​
Colonne A (masquée) = Catégorie, colonne B = Club, colonne C = Nom_Prénom.​
— Ainsi Nom_Prénom est utilisé comme référence dans la formule…​
PNG50 - Capture d’écran 2023-03-21 à 23.59.15.png
C'est mieux que d'avoir le nom du club :​
PNG50 - Capture d’écran 2023-03-22 à 00.14.04.png

• Puisqu'on parle des formules :
1) Plutôt que des SI imbriqués, il est parfois plus simple d'utiliser la fonction SIS (conditions multiples, examinées les unes après les autres) – ça évite toutes les parenthèses fermantes à la fin ;)))))))))), difficiles à compter.​
Mais dans ton cas, il y a encore bien mieux !​
2) Pour calculer les points relatifs au classement lors d'une compétition, tu pourrais utiliser la recherche horizontale RECHERCHEH, comme j'ai fait dans la capture d'écran ci-dessus.​
Dans l'exemple illustré, pour la cellule D3, la formule va rechercher​
(la place au classement de Pierre Dubois lors de la compétition Territorial Alsace,
c.-à-d. la cellule C3 ; dans le premier rang de l'intervalle de cellules $B$1:$AE$2 du tableau Barème des points ; renvoyer le contenu correspondant du 2e rang de cet intervalle de cellules ; sinon rien)
Ce qui se traduit par la formule — avec gestion de l'erreur, si la valeur n'est pas trouvée, ça vaut 0 :​
SI.ERREUR (
RECHERCHEH (Territorial Alsace DUBOIS Pierre ; Barème des points::$B$1:$AE$2 ; 2 ; correspondance exacte)
; 0)

3) Tu peux faire de même pour d'autres données comme le nom du club, cette fois avec la recherche verticale, RECHERCHEV, puisque là ce sont des colonnes successives :​
RECHERCHEV ($C3 ; Jeunes::$E$3:$M$100 ; 9 ; correspondance-proche)

Là, ça va rechercher dans le tableau Jeunes le nom figurant en C3 et en retour, ça affiche la valeur trouvée dans la 9e colonne (= Club), comptée à partir de la colonne E (= Nom Prénom).​
Référence générale :​
+++++++++++++++

Dernière chose, je ne vois pas non plus l'intérêt d'avoir sept tableaux pour les catégories d'âge.

Personnellement, voici comment je procéderais au total pour avoir quelque chose toujours à jour :

Dans la 1e feuille sont encodés au fur et à mesure de la saison tous les inscrits, comme tu fais.
Ça va servir de source au reste.
Je fais d'emblée le tableau un peu plus grand que le nombre total d'inscrits prévus pour l'année (toutes catégories d'âge confondues) — donc je laisse assez de lignes vides en bas pour ne plus devoir en rajouter.

Dans la 2e feuille – qui sert à indiquer les résultats à chaque compétition –, je fais un seul tableau, et je lui donne le même nombre de rangs qu'au tableau de la feuille 1.

Je mets dans la dernière des colonnes d'en-tête une formule =Tableau Jeunes::E1 pour y retrouver tous les Nom et prénom, tels qu'ils sont encodés dans la 1e feuille.

Ensuite, j'utiliserais la fonction de recherche ci-dessus pour y rapatrier les autres données nécessaires pour chaque participant (club, sexe et catégorie d'âge).
Ainsi tout est toujours à jour selon ce qui est encodé en feuille 1.

Maintenant que j'ai toutes les données voulues dans le tableau des compétitions, reste à les organiser. Ça tombe bien, il y a un bouton pour ça.

Dans Organiser > Catégories, il suffit de choisir de regrouper ses données par catégorie d'âge (U20, U18, etc.) puis par sexe et tu pourras avoir dans chacun de ces sous-groupes, p.ex, un tri alphabétique ou le nombre de participants. Un seul tableau suffit… Les fonctions de tri s'appliquent aux catégories déployées.
(Et avec Filtrer, tu peux masquer les rangs vides…)
Ensuite, tu complètes les résultats, compétition après compétition.

Capture d’écran 2023-03-22 à 01.57.59.png
Dans ce tableau, les seuls éléments à compléter sont la place de chacun lors de chaque compétition.Tout le reste est calculé automatiquement ou est mis à jour depuis la feuille avec les coordonnées de chacun.
À côté de chaque étiquette de groupe, j'ai ajouté, à titre d'exemple, un compte du nombre de valeurs distinctes (ainsi on voit qu'il y a 21 U18, dont 12 dames).
On observera aussi que la colonne B "Sexe" est masquée mais sert quand même à catégoriser les rangs.

Seule précaution : mieux vaut désactiver les fonctions d'organisation quand on modifie les formules dans tout le tableau. C'est plus facile.
Ensuite, si on fait à nouveau glisser le curseur d'activation des fonctions d'organisation, on retrouve ses réglages de tri, catégories, etc.

Détails :
 
Dernière édition:
Au vu de tes tableaux, il me semble donc que ce conseil convenait mieux :
Autre possibilité, qui n'a rien à voir (tu diras ce qui te convient, le cas échéant) :

Si tu veux reproduire dans ton tableau 2 la colonne A du 1er tableau, tu peux aussi faire une formule élémentaire en tapant = dans la première cellule du tableau2 puis en cliquant dans la cellule correspondante du tableau1. Tu valides la formule par Enter et tu étends la formule sur toute ta colonne.
Tu retrouveras simplement dans ton tableau2 le contenu du 1er.

Comme tu l'auras constaté, une telle solution permet ensuite d'extraire les données voulues, puis de les enrichir d'autres informations et les présenter de manière variée selon les besoins.

P.ex. par catégorie d'âge et par ordre alphabétique, afin d'introduire les résultats ;​
puis d'un clic, tu changes la colonne de tri et tu as le classement par compétition,​
« Qui fut 3e chez les hommes en U18 dans la compétition de dimanche ? » ou « Qui est en tête au classement final ? »​
Capture d’écran 2023-03-22 à 03.25.17.png
Le lecteur le plus curieux aura remarqué la formule utilisée ci-dessus en colonne B pour améliorer la présentation des catégories : remplacer M / F par Hommes / Dames.
 
Dernière édition:
@baron
Bonjour,
Je vois que tu as pris le temps de regarder le fonctionnement des tableaux de notre amis, et de lui donner des conseils, solutions, pour avoir quelque chose de plus productif. :up:

Perso, par manque de temps, je n'ai même pas regardé ce qu'il y a dans les tableaux, je me suis contenté de chercher une réponse à sa question.

Ta proposition est certainement meilleure et mieux adaptée au suivi de ses tableaux.... :up:

@Steph_giraud aura des solutions à ses problèmes... et du boulot pour mettre tout s'équerre ! :D
:coucou:
 
  • J’aime
Réactions: baron
@baron
Bonjour,
Je vois que tu as pris le temps de regarder le fonctionnement des tableaux de notre amis, et de lui donner des conseils, solutions, pour avoir quelque chose de plus productif. :up:

Perso, par manque de temps, je n'ai même pas regardé ce qu'il y a dans les tableaux, je me suis contenté de chercher une réponse à sa question.

Ta proposition est certainement meilleure et mieux adaptée au suivi de ses tableaux.... :up:

@Steph_giraud aura des solutions à ses problèmes... et du boulot pour mettre tout s'équerre ! :D
:coucou:
Merci pour tous ces développements. J'entends avec intéret les propositions de Baron. Le fait d'avoir initialement plusieurs tableaux est lié au fait que je dois pouvoir transmettre les résultats à des gens qui sont sous PC. Or, le système de tri (que j'utilise régulièrement pour mes tableaux perso lors de compétitions par ex) est très bien mais en export il renvoi un tableau unique et cela oblige à rouvrir sous excel et faire le tri des différentes catégories (voire supprimer celles qui ne concernent pas l'interlocuteur à qui je l'envoi).
Bref je prendrais le temps, sur al base de vos bon conseils, de faire le tri dans toutes ces propositions et de bâtir THE tableau qui claque ;-)
Merci à vous deux pour votre aide et votre réactivité