Aide pour formule requête

Lucasine Messages postés 166 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonsoir,

J'aurai besoin de vos connaissances en access, pour une formule surement très simple qui me pose un souci.

Voila j'ai une colonne comportant un numéro nommé "SOSA", j'aimerai que figure dans une autre Colonne nommé "Degré" le degré du Sosa. Compliqué a comprendre, j'avoue !!

j'ai une Table "Génération" qui comprend 3 colonnes
1. le Degré
2.Numéro minimum
3.Numéro maximum

exemple : Degré
4 = nombre entre 8 et 15 comprit
5= nombre entre 16 et 31 comprit
6= nombre entre 32 et 63 comprit
.....
j'entre le sosa "20" J'aimerai dans la colonne Degré il me met "5"

Que je passe par une table n'est pas obligatoire, il n'a que +/- 15 degrés différent donc j'avait pensé faire une formule dans ma requête
IIF ([Sosa]>32;"6";IIF([Sosa]>16;"5";IIF.....
Mais comme vous vous douter il me met Erreur dans la colonne.

Quel serai pour vous la meilleurs façon d'avoir un bon résultat ? Passant par la table "Génération" ou il fait une recherche OU avec une formule qui pourrais être un peu longue ???

Je vous remercie d'avance pour vos lumières ;-)

6 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    si tu peux passer via un formulaire, en vba, cela serait simple.

    Mais dans ce cas, ta table "generation" sera inutile, tout sera géré via vba.

    A+
    0
    1. Lucasine Messages postés 166 Statut Membre
       
      Bonjour HDU,

      Je te remercie pour ta réponse, le petit souci (si je peu dire) sait que je ne connait rien en VBA
      0
      1. Utilisateur anonyme > Lucasine Messages postés 166 Statut Membre
         
        Bonjour,

        peut-être que le temps est venu de t'y mettre...

        Si tu veux exploiter un peu Access, tu vas devoir y passer, tôt ou tard.
        0
  2. Utilisateur anonyme
     
    Pour le cas qui te concerne, un SELECT CASE fera l'affaire.

    Si tu veux + d'infos, n'hésites pas.

    A+
    0
  3. Utilisateur anonyme
     
    Si tu veux faire ceci sans vba,

    il faut le faire dans une requête, pas direct dans la table.

    Là, ce que tu mets :

    IIF ([Sosa]>32;"6";IIF([Sosa]>16;"5";IIF..... 
    


    Tu as forcémént une erreur, car si SOSA = 33, il répond aux 2 premiers critères.

    Il faudrait mettre :

    IIF (SOSA >= 8 AND SOSA <=15;"4";IIF (SOSA >=16 AND SOSA <=31;"5";(........................
    

    A+
    --
    Quand Jimmy dit What'd I say 
    I love you baby 
    C'est comme qui dirait 
    Toute la province qui chante en anglais
    0
    1. Lucasine Messages postés 166 Statut Membre
       
      Merci HDU

      Je vais voir pour me lancer dans le VBA car je voit que beaucoup passe par là pour Access, j'en avait eu un vague aperçu avec une fichier Excel, ca ne doit pas être bien compliquer vu le monde qui travail en VBA ;-). En tout cas, un grand merci pour tes conseils
      0
  4. Utilisateur anonyme
     
    Bonne initiative !

    Regardes pour ton problème du coté de SELECT CASE.

    a+
    0
    1. Lucasine Messages postés 166 Statut Membre
       
      Merci, je vais chercher après ca ;-) de plus la formule par requête, ma prit 10min à tapé pour me dire au final que la formule est trop complexe pour être exécuter MDR

      je comprend pourquoi il existe le VBA maintenant lol
      Merci pour tes précieux conseils.

      A bientôt
      0
    2. Utilisateur anonyme > Lucasine Messages postés 166 Statut Membre
       
      C'est étonnant.

      Tu peux copier / coller ta formule ici ?

      A+
      0
    3. Utilisateur anonyme > Utilisateur anonyme
       
      J'ai en mémoire ta base concernant les locataires, si je ne me trompes pas.

      C'est la même ??

      Renvoies ici un lien de ta base en te servant de cjoint.com si tu veux.

      A+
      0
    4. Lucasine Messages postés 166 Statut Membre
       
      Bonjour HDU, la base des locataires, je l'ai donné à ma collègue, pour qu'elle la continue car je ne m'en sortais pas et qu'elle ai plus caler en access que moi, celle-ci est pour un cousin, qui fait des recherches généalogique est qui vu le nombre de personnes, aimerai une base qui l'aide a géré les recherches a effectuer.

      la formule est IIF([Sosa]>="16384" ET<=[Sosa]<="32767";"15";IIF([Sosa]>="8192" ET<=[Sosa]<="16383";"14";IIF([Sosa]>="4096" ET<=[Sosa]<="8191";"13";IIF([Sosa]>="2048" ET<=[Sosa]<="4095";"12";IIF([Sosa]>="1024" ET<=[Sosa]<="2047";"11";IIF([Sosa]>="512" ET<=[Sosa]<="1023";"10";IIF([Sosa]>="256" ET<=[Sosa]<="511";"9";IIF([Sosa]>="128" ET<=[Sosa]<="255";"8";IIF([Sosa]>="64" ET<=[Sosa]<="127";"7";IIF([Sosa]>="32" ET<=[Sosa]<="63";"6";IIF([Sosa]>="16" ET<=[Sosa]<="31";"5";IIF([Sosa]>="8" ET<=[Sosa]<="15";"4";IIF([Sosa]>="4" ET<=[Sosa]<="7";"3";IIF([Sosa]>="2" ET<=[Sosa]<="3";"2";IIF([Sosa]="1";"1";"0"))))))))))))))

      Comme je disait il a minimum 15 génération, donc quand une 16eme arrivera il sera embété, j'avait pensé a faire passé par une table, mais dur dur, et je ne suis pas encore au point en VBA
      0
    5. Utilisateur anonyme > Lucasine Messages postés 166 Statut Membre
       
      Re,

      et cette formule te renvoie une erreur ou pas du coup ?

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

    Posez votre question
  6. Utilisateur anonyme
     
    Bon, j'ai anticipé.

    Voici une table, avec le formulaire, et un code SELECT CASE.

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

    Elle fonctionne, à priori.

    Tiens moi au jus, mais le code vba est facilement compréhensible.

    A+
    0
    1. Lucasine Messages postés 166 Statut Membre
       
      Ah Cool, merci HDU, ca ma l'air très simple en effet ;-) je teste ca cette après-midi et je passerai le lien Cjoint avec mon fichier des que c fait ;-)
      0
      1. Utilisateur anonyme > Lucasine Messages postés 166 Statut Membre
         
        Alors ?
        0
    2. Lucasine Messages postés 166 Statut Membre
       
      Bonjour HDU, je suis désolé, je n'ai pas encore eu beaucoup de temps pour m'y mettre à font, mais je ne manquerai pas de venir te donner le résultat
      0
  7. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    Je suggère ceci, à utiliser comme formule dans la requête :

    Int(1 + Log([Sosa] + 0.5) / Log(2))
    0