Chercher une valeur lorsque le nom des colonnes diffèrent?

Résolu
biagjibs Messages postés 70 Statut Membre -  
biagjibs Messages postés 70 Statut Membre -
Bonsoir,

J'ai visioné les tutoriels (Index/Match/Lookup) pour chercher une valeur mais le probleme dans mon cas est que les colonnes (2eme feuille) ou je veux retourner les valeurs ont un nom different de celles ou sont présentent les valeurs (1ère feuille)..du coup je n'ai pas pu utiliser les méthodes proposés.

voici le fichier avec quelques données non réels: https://www.cjoint.com/c/EDovBVTMiM1

Ce que j'essaye de réaliser c'est: dans la feuille "Results" une fois que je sélectionne la classe, je sélectionne le nom (EngFirstName) puis dans la colonne C je récupére la valeur associé a mon choix dans la feuille: "StudentsData" dans les colonnes D, H, L,..etc De meme, associé a mon choix le nom du Teacher (colonne I )

Merci pour votre aide.

8 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    voyez si ce modèle peut vous aider, la cellule B2 est seule équipée de la proposition, à défaut de savoir ce que vous voulez placer dans les colonnes de Results
    https://www.cjoint.com/c/EDpiQXy0yZK
    les explications sont dans le modèle
    pour ce qui est de la validation en B, elle ne peut pas fonctionner com
    me vous l'avez placée car tous les champs nommés ont les mêmes limites.
    Voyez comment est fait ce modèle

    Par ailleurs, ces solutions fonctionnent avec les deux premières lettres du code classe, mais certains codes ont le même début et une troisième lettre. Ils seront pour l'instant groupés sans tenir comte de la lettre.
    S'il faut les différencier,voyez pour passer à trois lettres en plaçant par exemple un tiret entre le code et le nom dans tous les cas
    ex Y1-Names ou Y6G-Name
    s
    Il faudra alors dans les formules, dans les items GAUCHE(B2;2) écrire GAUCHE(B2;3)
    (sur le tableau et dans le nom de Liste)

    et si ça ne suffit toujours pas, revenez, on complètera
    crdlmnt
    1
  2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Re
    je n'avais pas percuté" sur l'organisation de votre base de données et surtout, j'avais pensé que vous cherchiez les noms en colonne C alors que chaque catégorie Y a sa liste

    Mais dans tous les cas, il faut que dans la ligne 1 de Students, le titre correspondant à Yxx_name soit écrit de la même façon qu'en colonne A

    voila ,donc une nouvelle version du fichier peut être mieux adapté si j'ai bien compris
    https://www.cjoint.com/c/EDpnuDXtXkO
    pour info:
    le champ de la base de données de A1 à AK30 est nommé Champ
    Les titres de A1à AK1 sont nommés titre
    Le champ où doit être cherché le nom de résults est appelé Cherche, la formule affectée au nom permet de choisir le champ selon la valeur de résults en colonne B
    Les formules sont placées dans les zones en gris. Pour Teatcher, la formule s'adresse au nom indiqué en ligne 2 de Students qui, je suppose est valable pour toutes la colonne correspondantes
    j'ai placé en colonne A de Résults un menu déroulant qui fait référence à la colonne A de students nommée Liste_Y
    revenez si besoin de complément où si ce n'est toujours pas ça.

    crdlmnt

    .... ps: et finalement, après réflexion dans ce contexte,avec cette version les formules peuvent se passer du code GAUCHE(cell;3) puisque dans tous les cas, le titre complet va se trouver à la fois en A de Results et en ligne 1 de Students
    par exemple en C2 de Results, vous pouvez écrire:
    =SI($A2="";"";SIERREUR(INDEX(Champ;EQUIV($B2;Cherche;0);EQUIV$A2;Titres;0)+2);""))

    Errare humanum est, perseverare diabolicum
    1
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      ... suite
      voyez plutôt ce fichier qui résume tout ce que j'ai écris plus haut:
      https://www.cjoint.com/c/EDpnNcMp3jE
      la validation en colonne B fait maintenant référence au champ nommé Cherche, évolutif selon le nom placé en A dans résults
      vous pouvez supprimer tous les autres champs nommés qui n'ont d'utilité pas pour ce système.
      crdlmnt
      0
    2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      .... décalage dans les références. Avec mes excuses
      prenez ce fichier V5_(ou corriger le votre, il suffit de faire démarrer l'adresse du nom Champ en A2 au lieu de A1
      https://www.cjoint.com/c/EDpoKM6AV3t
      crdlmnt
      0
  3. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
     
    Bonjour,

    Maintenant que j'ai compris le but de la manoeuvre, j'ai persévéré dans mes décalages ......
    Moins élégant que Vaucluse mais parfaitement fonctionnel.
    Je le mets quand même.

    https://www.cjoint.com/c/EDpq1f0pLYj

    On ne répétera jamais assez que tout est dans le premier post qui doit être impérativement exhaustif et avec le plus d'explications possible. Y a des rapides, y a des lents !!
    1
  4. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Ca n'était pas une mauvaise idée de créer une colonne avec les correspondance, en ligne avec la colonne A de Students... elle était même bonne.(en plaçant ça par exemple en AL et en agrandissant la plage nommée champ jusqu'à A)
    Mais compte tenu qu'il n'y a que deux variables et qu'on peut facilement identifier ou elles sont, vous pouvez écrire:
    =SI(A2="";"";SI(OU($A2="Y2_Names";$A2="Y3_Names";NB.SI(A2;"*B*"));"M";"F"))

    qui donnera M pour Y2_Names, Y3_Names et tous les autres qui contiennent la lettre B, le F étant affecté aux autres, à condition qu'il y ait une valeur en A

    crdlmnt

    Errare humanum est, perseverare diabolicum
    1
    1. biagjibs Messages postés 70 Statut Membre
       
      c'est parfait!!

      un grand merci
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. biagjibs Messages postés 70 Statut Membre
     
    Merci pour ton aide,

    Il y'a cependant 2 ou 3 petits problèmes:

    la formule:
    =IFERROR(OFFSET(INDEX(Y1Names,MATCH(Results!$B6,$B$2:$B$27,0)),0,1),"")


    recherche la valeur associé dans Y1Names seulement...
    mais si j'ai sélectionné Y2Names, Y3Names ...comment faire l'index pour rechercher dans les bonnes colonnes?

    Puis j'ai remarqué que si j'essaye de changer ma sélection, les valeurs ne sont pas mises à jour?? D'autant plus que les valeur retournées ne sont pas correctes

    voici le fichier à nouveau (j'ai mis des nombres Dans Y1ArNames, Y2ArNames..à la place des noms en langue étrangere) pour plus de clarité

    https://www.cjoint.com/c/EDpiwuhWc01

    Merci pour toute suggestion.
    0
  7. biagjibs Messages postés 70 Statut Membre
     
    Merci beaucoup

    Donc j'ai changé les noms comme suggéré: (Y1_Names,....,Y6B_Names)

    dans le Colonne C, j'ai fait le changement (GAUCHE(B2;3)

    =IFERROR(INDEX(StudentsData!$A$1:$AK$30,MATCH(B2,StudentsData!$C$1:$C$30,0),MATCH(LEFT($A2,3)&"*",StudentsData!$A$1:$AK$1,0)+1),"")


    donc pour Y1_Names tout marche parfaitement, j'ai réussi a faire les bon décallages etc.., sauf que si je choisis une autre classe (Y2_Names, Y3_Names etc..) ça ne marche plus??

    voici le fichier:

    https://www.cjoint.com/c/EDpmPJWdbGm

    Merci encore pour votre aide
    0
  8. biagjibs Messages postés 70 Statut Membre
     
    Merci infiniment à tout les deux..j'apprécie votre aide.

    les deux méthodes marchent trés bien
    0
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      OK, alors on passe le sujet en résolu
      Bonne route
      crdlmnt
      0
    2. biagjibs Messages postés 70 Statut Membre
       
      il y'a une colonne ou j'aimerai retourner une valeur precise selon la sélection:
      si sélection est Y1_Names retourner F
      Y2_Names => M
      Y3_Names => M
      Y4B_Names => M
      Y4G_Names => F
      Y5B_Names => M
      Y5G_Names => F
      Y6B_Names => M
      Y6G_Names => F
      Pouvez-vous m'aider sur cette derniere étape?

      j'étais sur le point de créer une colonne dans la premiere feuille et rechercher ces valeurs (F,M), je pense pouvoir le faire, mais peut etre qu'il y'a une meilleur méthode étant donné que les valeurs sont fixes.

      merci
      0