Aide pour formule requête
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 ;-)
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
-
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+
-
-
@LucasineBonjour,
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.
-
-
Pour le cas qui te concerne, un SELECT CASE fera l'affaire.
Si tu veux + d'infos, n'hésites pas.
A+
-
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 -
Bonne initiative !
Regardes pour ton problème du coté de SELECT CASE.
a+
-
-
-
@Utilisateur anonymeJ'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+ -
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 -
-
-
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+
-
-
@LucasineAlors ?
-
-
-
ContributeurJe suggère ceci, à utiliser comme formule dans la requête :
Int(1 + Log([Sosa] + 0.5) / Log(2))