Fonction IIF de Excel à Access

Résolu/Fermé
gabrielforex Messages postés 17 Date d'inscription lundi 16 mai 2016 Statut Membre Dernière intervention 3 mai 2018 - Modifié par gabrielforex le 25/05/2016 à 20:20
gabrielforex Messages postés 17 Date d'inscription lundi 16 mai 2016 Statut Membre Dernière intervention 3 mai 2018 - 27 mai 2016 à 16:40
Bonjour,

je suis entrain de travailler sur access. Mon problème est la fonction if. en effet j'ai réussis a faire mon calcul sous excel de cette forme

=SI(H40="";"";H40*SI(ARRONDI($AB40;0)<$C$3;$B$5;SI(ARRONDI($AB40;0)>$C$3;$D$5;$C$5)))


ce qui me donnerais avec mes champs de Access

iif([Pro_phyF1MOE]="";"";[Pro_phyF1MOE]*iif([moy%h]<"8.0";"0.99";iif([moy%h]>"8.0";"1.05";"1.0")))


mais ce code ne fonctionne pas. je ne sais pas où se situe le problème. est ce que "" pose problème ? même en le remplaçant par 0 rien n'y fait

pour résumer je cherche a modifier ma valeur de Pro_phyF1MOE en fonction de %h, par exemple si j'ai mon %h <8.0 je vais venir multiplier ma valeur de Pro_phyF1MOE par 0.99 .

je vous remercie de votre aide et de votre temps

Gabriel

2 réponses

f894009 Messages postés 17190 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 16 mai 2024 1 705
26 mai 2016 à 07:59
Bonjour,

Le separateur d'argument est une , pas un ;
0
gabrielforex Messages postés 17 Date d'inscription lundi 16 mai 2016 Statut Membre Dernière intervention 3 mai 2018
26 mai 2016 à 13:37
allo , j'ai essayé , je n'ai plus de problème dans l'execution mais par contre dans mon champ sa affiche simplement error sans me donner de raison
voici mon sql

SELECT Pro_phy.seq, Pro_phy.Date, Pro_phy.#pre, Pro_phy.grad, Pro_phy.Rass, Pro_phy.plis, Pro_phy.f1ep, Pro_phy.f1moe, Pro_phy.f1mor, Pro_phy.t1uts, Pro_phy.dryout, Pro_phy.f4moe, Pro_phy.f4mor, Pro_phy.t4uts, Pro_phy.#eta, [Pro_phy.f1moe]*1000 AS Pro_phyF1MOE, 1960 AS [limmoe2,0], 7710 AS [limmor2,0], 5300 AS [limuts2,0], Pro_phy.[moy%h],
iif([Pro_phyF1MOE]="","",[Pro_phyF1MOE]*iif([moy%h]<"8.0","0.99",iif([moy%h]>"8.0","1.05","1.0")))
FROM Pro_phy


merci de ton aide
0
Bonjour, en espérant que la réponse n'arrive pas trop tard,
Il vaut mieux ne pas trop emmêler les boucles Iif(), et faire des calculs intermédiaires dans ta requête. Je ne peux pas trop te réécrire la requête parce que je ne maitrise pas trop SQL en direct, je passe par le mode graphique. Mais il te faut des champs
Inter1 = iif([moy%h] > 8.0 , 1.05 , 1.0)
Inter2 = iif([moy%h] <8.0 , 0.99 , Inter1 )
Inter3 = iif([Pro_phyF1MOE]="","",[Pro_phyF1MOE]*Inter2 )
A replacer dans le requête
De plus si tes valeurs sont des nombres, il ne faut pas mettre de guillemets; les guillemets sont seulement pour les valeurs alpha.
Bonne suite
0
gabrielforex Messages postés 17 Date d'inscription lundi 16 mai 2016 Statut Membre Dernière intervention 3 mai 2018
27 mai 2016 à 16:25
Allo,
jamais trop tard pour moi =)
merci de ta réponse
donc l'exécution et le sql est correct.
Seul problème par exemple j'ai un cas où je suis supérieur a 8.0
donc ma valeur Pro_phyF1MOE se multiplie par 1.05 avec Inter1
le problème est qu'elle se re multiplie par 1.05 dans l'inter2.
je pense que sa fait une boucle. il faudrait que je divise mon inter3 par 1.05 pour avoir la bonne valeur(pour mon exemple)
je bosse dessus et je te reviens si j'ai trouvé une solution
en tout cas merci de ton aide =) et si tu trouve une solution à mon nouveau problème encore merci de ton temps haha

merci
0
gabrielforex Messages postés 17 Date d'inscription lundi 16 mai 2016 Statut Membre Dernière intervention 3 mai 2018 > gabrielforex Messages postés 17 Date d'inscription lundi 16 mai 2016 Statut Membre Dernière intervention 3 mai 2018
27 mai 2016 à 16:40
Allo ,
J'ai juste mis un autre champ Inter3/Inter2 et cela fonctionne bien pour toutes les moy%h.
Merci beaucoup de ton aide
0