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

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Le separateur d'argument est une , pas un ;
    0
    1. 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
  2. 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
    1. 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
      1. 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