Fonction IIF de Excel à Access

Résolu
gabrielforex Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
gabrielforex Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

2 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Le separateur d'argument est une , pas un ;
0
gabrielforex Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
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
Tessel75
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   > gabrielforex Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
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