Arrondir valeur supérieure avce sql access

Bonjour, je voudrais savoir si dans une requête SQL on pouvait arrondir une valeur à sa valeur entière supérieure.
Il y a la fonction Int(Nombre) qui arrondi juste à l'entier le plus proche.(0,3 devient 0)
Je voudrais arrondir 0,3 à 1.

6 réponses

  1. Modérateur
    Salut,

    la fonction ROUND n'existe pas en ACCESS...

    Mais on peut ruser, il faut voir si le nombre est à virgule (on regarde donc le résultat du nombre moins sa partie entière), dans ce cas, on isole la partie entière et on lui ajoute un, c'est l'objet de la requête ci-dessous :
    SELECT TABTEST.[champ], IIf([champ]-Int([champ])=0,[champ],int([champ])+1) AS Resu
    FROM TABTEST;
    
    champ	Resu
    0,024	1
    0,5	1
    1	1
    14,5	15
    2,3	3
    0,1	1
    0,3	1
    1	1
    2	2
    3	3
    1245	1245
    45	45
    1256	1256
    4584,256	4585
    2	2
    6	6
    7	7
    8	8
    95	95
    0,0003	1
    Et hop !
    2
    1. Merci Blux, mais il me semble qu'il y a un petit probleme.
      0,2 donne 1 OK
      1,4 donne 2 OK
      mais 1,6 donne 3 or il faut que 1,6 donne 2
      Y'a un petit truc à modifier dans la formule, je pense.
      0
    2. Modérateur
      Re-testé chez moi, ça fonctionne bien...

      Problème avec int ? avec le calcul de la différence ? Champs décrits en réels ?
      Quelle version d'access ? (97 chez moi...)

      essaye d'afficher uniquement le résultat de la différence :
      SELECT TABTEST.[champ], ([champ]-Int([champ])=0) AS Resu
      FROM TABTEST;
      Pour voir...
      0
    3. @bluxOk c'est bon, ca marche, merci Blux. A++
      0
    4. Modérateur
      @bluxCa m'intéresse de savoir d'où venait l'erreur...
      0
  2. et 2 ca donnerait pas 3 avec cette méthode ?
    1
    1. en fait, la fonction int() ne renvoie pas le nombre le plus proche mais l'entier inférieur (0,3==>0 mais 0,8==>0)

      c'est pour ça que int(nb+1) ça arrondi vers l'entier le plus haut.
      1
      1. Salut

        Je crois que la fonction ROUND arrondi à l'entier le plus proche. Ce que tu peux faire, c'est arrondir et faire +1 sur l'arrondi...

        A+
        0
        1. en fait, la fonction int() ne renvoie pas le nombre le plus proche mais l'entier inférieur (0,3==>0 mais 0,8==>0)

          c'est pour ça que int(nb+1) ça arrondi vers l'entier le plus haut.
          0
          1. faux: int(1+1) = 2
            alors que 1 arrondi nous donne 1

            pas encore la bonne solution
            0
            1. Modérateur
              La question initiale était d'arrondir à l'entier supérieur, la formule que j'ai donnée en son temps marche parfaitement.

              1 arrondi nous donne 1 La fonction d'arrondi n'existe pas sous ACCESS...
              0
            2. @bluxPour Info si ca peut aider quelqu'un

              Fonction arrondi supérieur dans tous les cas dans l'expression d'une requête access

              x est un réel

              iif(int(x)=x;x;int(x+1))

              x=1

              int(1) est égal à 1 donc donne 1

              x=1.1

              int(1.1) n'est pas égal à 1 donc donne 1+1=2

              Biensur on peut remplacer x par la valeur d'un champ mais dans ce cas n'oubliez pas les crochez

              x est un champ

              iif(int([x])=[x];[x];int([x]+1))

              Cordialement

              b747fred
              0
            3. @b747fredJe cherchais sur Internet à faire l'arrondi sup d'un réel sous Access. Je suis tombée sur votre message qui m'a grandement aidée.
              Merci.
              0