Recherche valeur avec ecart type

juliette -  
via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaite rechercher une valeur d'une base de donnée en fonction d'un écart type. Par exemple, j'ai plusieurs caractéristiques sur un test, en fonction de ma donnée d'entrée, ca trouve un ou des tests et les ressort parmis plusieurs. Pour faire le tri, le but est de majorer la valeur de 3% entrée par l'utilisateur : si je met 10, ca cherche dans la base de données entre 10 et 10.3 et m'indique les tests correspondants.

Mieux expliqué avec ce fichier : http://cjoint.com/?3CFoORFWWzL

Merci d'avance !

17 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Un début de réponse via vba
    https://www.cjoint.com/?3CFrGrWqbQr

    Cdlmnt
    0
    1. juliette
       
      Merci pour votre réponse.
      N'existe t il pas une solution avec des formules type rechercheV ou Index ?
      En enlevant l'écart type et en cherchant les 3 valeurs au dessus du résultat recherché ?
      0
      1. Juliette > juliette
         
        Personne ne peut m'aider?
        0
      2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > Juliette
         
        Bonjour Juliette
        Hello ccm81

        Une possibilité avec INDEX EQUIV, en rajoutant une colonne décompte au tableau :
        https://www.cjoint.com/?0DboEHsU9kA

        Cdlmnt
        Via
        0
  2. juliette
     
    Merci via55 !

    Je viens de réfléchir, si on indique les 3 résultats qui suivent la valeur que l'on indique (on supprime l'hypothèse avec l'écart type 3%).
    C'est plus simple non ?
    0
  3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Re,

    Je rentre seulement et je découvre ton message.
    Plus simple peut être mais il faut alors que le tableau soit trié car si tu mets simplement comme condition SI >25 dans la colonne dénombrement les 3 premières valeurs rencontrées seront celles retenues et cela peut être 28, 30 et 34 si des valeurs entre 25 et 28 existent mais sont après
    0
    1. juliette
       
      Merci de votre réponse.

      Avez vous un exemple à me donner svp?
      0
      1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > juliette
         
        Bonjour juliette

        Je viens de trouver la solution sans colonne supplémentaire ni liste triée, en combinant INDEX EQUIV avec PETITE.VALEUR
        https://www.cjoint.com/?0DclYOEEEtV
        Dans les formules le PETITE.VALEUR($B$17:$B$27;NB.SI($B$17:$B$27;"<"&$B$3)+1 renvoie la 1ere petite valeur supérieure ou égale à B3, PETITE.VALEUR($B$17:$B$27;NB.SI($B$17:$B$27;"<"&$B$3)+1 la 2eme, etc

        Cdlmnt
        Via
        0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Salut via55

    ça fait un moment que je n'étais pas revenu sur le sujet.
    Une remarque pour ta formule, si deux prénoms ont la même mesure, par exemple Manu et Michel tous les deux à 25.3, le deuxième n'est pas renvoyé, enfin du moins je crois

    Cdlmnt
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Salut ccm81

      Tu as raison, la 2eme est bien prise en compte mais la fonction INDEX renvoie le 1er nom qui est donc indiqué 2 fois; je ne vois pas pour l'instant comment contourner le problème sauf à en revenir à ma 1ere solution avec colonne de comptage ajoutée, mais je continue à chercher..

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

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Alors qu'avec une petite macro sans colonne supplémentaire ...
    https://www.cjoint.com/?3DcwH72u5D5

    Cordialement
    0
    1. juliette
       
      Merci !
      Oui j'ai vu l'erreur pour l'affichage du meme nom pour des valeurs identiques...
      Avez vous trouvé comment résoudre ce soucis ?
      0
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    La macro ci-dessus résout ce souci, mais si tu es toujours allergique aux macros .... il ne reste plus qu'à attendre la réponse (certainement positive) de via55
    Cdlmnt
    0
    1. juliette
       
      Merci de ta réponse ccm81, je vais attendre la réponse de via55, car je n'arrive pas à adapter ta macro à ma feuille excel.
      0
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bon, via55 doit encore être à la sieste et comme je m'en voudrai de le réveiller, je te propose ceci sans macro (dommage)
    https://www.cjoint.com/?3Ddrk7KogeL
    RQ. Pour les formules "résultats", tu peux remplacer LIGNE()-5 par 1, puis 2, puis 3
    =INDEX($A$17:$A$27;EQUIV(LIGNE()-5;$E$17:$E$27;0))
    =INDEX($A$17:$A$27;EQUIV(2;$E$17:$E$27;0))

    Cdlmnt
    0
  9. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonsoir juliette
    Bonsoir ccm ;)

    Eh non je n'étais pas à la sieste mais au boulot!

    Pas moyen de trouver par formule sans rajouter de formules supplémentaires la manière de prendre en compte les doublons (on devrait pourvoir avec une matricielle mais je bute sur sa mise en oeuvre)

    En l'état actuel les propositions de ccm (avec ou sans macro) sont les plus pertinentes

    Cdlmnt
    Via
    0
  10. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour à tous,

    Je n'étais pas loin pour une formule unique mais index() ne supporte pas la validation matricielle ici.

    Colonne supp, en D6 :
    =MOD(GRANDE.VALEUR(($B$17:$B$27>=$B$3)*($B$17:$B$27<$B$3*1.03)*($B$17:$B$27+LIGNE($B$17:$B$27)/10000);LIGNE()-5)*100;1)*100
    formule matricielle à valider avec shift+ctrl+entrée
    5 : nombre de lignes au-dessus de la 1ère formule

    En B6 : =INDEX(A:A;D6)
    En C6 : =INDEX(C:C;D6)

    Résultat affiché de la plus grande mesure en décroissant.
    https://www.cjoint.com/c/EDdsIz3ySYE

    eric
    0
  11. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Salut Eric

    Chapeau pour ta formule, tordue à souhait ;-)
    Mais elle n'est plus d'actualité, la demande a peut être changé (post #5) pour les trois premières valeurs >= $B$3. Et c'est encore bien casse tête, du moins pour moi. Je n'ai trouvé qu'avec deux colonnes supp ou une macro

    Bon weekend

    Cordialement
    0
  12. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour à tous

    Gestion des triplons avec une seule colonne supplémentaire pour déterminer le rang :
    https://www.cjoint.com/?0DenJBjRvGu
    Eric va peut être nous trouver une autre formule magique !

    Bon week-end pascal

    Bien cdlmnt
    Via
    0
  13. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour à tous,

    Je l'avais vu ce post #5, mais zappé :-)
    Je l'ai pris pour une tentative de simplifier le problème, pas comme un impératif.
    Sinon ma proposition du #17 n'est pas gênée par les triplets normalement.

    Et finalement sans colonne supplémentaire, decaler() n'est pas gêné par la validation matricielle contrairement à index() :-)
    En B6:
    =DECALER($A$1;ARRONDI(MOD(GRANDE.VALEUR(($B$17:$B$27>=$B$3)*($B$17:$B$27<$B$3*1.03)*($B$17:$B$27)*10+LIGNE($B$17:$B$27)/1000;LIGNE()-5);1)*1000;0)-1;)

    En B7 : idem mais
    =DECALER($C$1;...)

    Avec donc les mesures comprises dans la fourchette à partir de la plus élevée (et pas de soucis avec les doublons, triplets, etc).
    https://www.cjoint.com/c/EDepDbfb7WH

    eric
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Re Eric

      Bravo pour ta formule elle gère les exæquos mais ne prend pas en compte Michel qui avec 25,2 es t plus près pourtant de 25 que Manu avec 25,3.
      Comment adapter ta formule pour ressortir les noms correspondant aux 3 plus petites valeurs, dans ton exemple ce serait Michel, puis Manu puis Jêrome ?

      Bien cdlmnt
      Via
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Ah oui, comme précisé fournit le résultat à partir de la plus grande mesure acceptée, en décroissant.
      Dans l'ordre croissant à partir de la plus petite mesure il y a la tienne. Une colonne supp ce n'est pas la mer à boire ;-)
      En une formule unique je crains qu'elle ne soit un peu longuette et difficile à maintenir. Mais bon, c'était plus pour le sport. S'il y en a plus de 3 on ne sait pas les préférences du demandeur (les plus petites ? Les plus grandes ? Indifférent ?).
      eric
      0
  14. Juliette
     
    Je vois que ca bosse dur ici !

    On va y arrivé !
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Hello juliette

      Pour gérer les doublons et surtout les éventuels triplets dans l'ordre croissant il n'y a pour l'instant que ma proposition message n°20, pour ma part, je ne peux rien de plus

      Bien crdlmnt
      Via
      0
  15. juliette
     
    Merci via55, c'est impec avec la colonne pour le tri croissant.

    Dernière question, si je rajoute un critère c'est à dire on garde ce que l'on a jusqu'à maintenant on ajoute le critère : "inférieur à 30ans" c'est faisable ?

    Voilà (anciennes formules sur le fichier) : http://cjoint.com/?3Dimf2opMpe
    0
  16. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour juliette

    Pas de souci, si tu veux par contre comme tu l'indiques dans le fichier un classement du plus jeune au plus vieux il faut rajouter une colonne :
    https://www.cjoint.com/?0DinSwSNto6

    Cdlmnt
    Via
    0
    1. juliette
       
      Yes pas mal mais si je met l'age de 16ans à Manu, j'ai deux fois le 2e rang. Petit bug, figer la plage non ?
      0
      1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > juliette
         
        Oui, désolé,oubli de ma part, bien sûr il faut figer la plage :
        =SI(D22="";"";RANG(D22;$D$22:$D$33;1))
        0
  17. juliette
     
    Yes je l'avais fait, merci!
    J'ai réussis à rajouter un critère mais je souhaite que ce dernier soit lié à une case à cocher (case verte dans le fichier).

    Fichier : http://cjoint.com/?3Djr1PrX2Hi

    Difficile ?
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Bonsoir Juliette

      Difficile non, mais ce sont des boutons d'option liés tous à la même cellule B9 qu'il faut employer, si le 1er bouton est coché il renvoie 1 en B9, le 2eme , 2 etc
      https://www.cjoint.com/?0DjvyFETFXF

      Cdlmnt
      Via
      0
    2. juliette
       
      Parfait, merci.

      Pour info , si je souhaite avoir 2 niveaux d'options. C'est à dire que j'ai déjà choisi un choix (2par exemple) et souhaite ensuite faire un choix : 2B (parmi 2A - 2B - 2C). Car quand je rajoute des cases options, il sélectionne 1 seule option.

      Je choisis 2 puis après je choisis 2B.
      0
      1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > juliette
         
        Bonjour juliette

        Tu tiens à faire plusieurs choix successifs ? Il vaudrait mieux peut-être alors passer pas des listes déroulantes de choix plus simple de manipulation. Néanmoins avec 2 séries de boutons Controle ActiveX c'est possible :
        https://www.cjoint.com/?0DkpRBV7eoJ

        Cdlmnt
        Via
        0