Arrondir valeur supérieure avce sql access

donlefou Messages postés 44 Statut Membre -  
 buffon74 -
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. blux Messages postés 5039 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    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. donlefou Messages postés 44 Statut Membre
       
      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. blux Messages postés 5039 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      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
      1. donlefou Messages postés 44 Statut Membre > blux Messages postés 5039 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Ok c'est bon, ca marche, merci Blux. A++
        0
      2. blux Messages postés 5039 Date d'inscription   Statut Modérateur Dernière intervention   3 455 > blux Messages postés 5039 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Ca m'intéresse de savoir d'où venait l'erreur...
        0
  2. random Messages postés 1612 Statut Membre 155
     
    et 2 ca donnerait pas 3 avec cette méthode ?
    1
  3. no_pain
     
    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
  4. _Agnes
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. no_pain
     
    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
  7. aquaman
     
    faux: int(1+1) = 2
    alors que 1 arrondi nous donne 1

    pas encore la bonne solution
    0
    1. blux Messages postés 5039 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      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
      1. b747fred > blux Messages postés 5039 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Pour 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
      2. buffon74 > b747fred
         
        Je 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