Calcul de rang – Gestion des décimales

Dans plusieurs articles précédents, il a été question de calculer des rangs pour classer des valeurs numériques. Mais dans certaines formules fournies, un problème peut se poser sur les valeurs non entières. Voici comment le résoudre.

Le problème

Voici un calcul de rang inspiré des articles précédents. L’une des moyennes d’élève a des chiffres après la virgule, ce qui provoque une erreur dans la requête. M’étonne pas, vu l’élève… 🙂

Erreur dans le calcul de rang

Le problème vient d’un mauvais enchaînement :

  1. La moyenne contient une virgule (ou des décimales).
  2. Cette moyenne est utilisée par concaténation pour créer le critère de comparaison, dans la requête.
  3. L’ordinateur est français, ou en tout cas a un séparateur décimal réglé sur la virgule.
  4. Et ce #!&? d’Access ne traduit pas le nombre en valeur anglo-saxonne. La virgule reste donc une virgule, au lieu d’être transformée en point.

Première solution

La première solution consiste tout simplement à modifier le séparateur décimal de votre ordinateur. Celui-ci est défini dans le Panneau de configuration de votre machine (l’option s’appelle selon les version « Paramètres régionaux » ou « Modifier les paramètres de date, d’heure et de nombre« ).

Windows - Séparateur décimal

Deuxième solution

Maintenant, si vous ne souhaitez ou ne pouvez pas modifier le séparateur décimal de votre ordinateur (parce que ça aurait un impact sur d’autres logiciels, par exemple), vous pouvez faire comme ceci :

  1. Recopiez le code VBA donné plus bas dans un module standard de votre base de données. Le code apporte deux nouvelles fonctions, dont DecimalSep() qui a déjà été traitée sur ce blog), et NumberUS() qui nous intéresse ici.
  2. Dans les requêtes qui posent problème, « embarquez » les valeurs décimales dans la fonction NumberUS(). Par exemple, cette formule :

… devient :

Le code VBA

Vous aimerez aussi...

4 réponses

  1. Béatrice dit :

    Bonjour et merci pour cet article qui me tire une sérieuse épine du pied 🙂
    Pourriez-vous donner une solution similaire pour la gestion des dates ?
    Merci d’avance!

  2. Faisal dit :

    Merci pour ce vrai bijou tu est tro fort et j’avous que j’ai eu beucoup d’expérience a traver le grenier access une fois de plus merci mais en ce qui concerne les rangs pourquoi les rangs font 1,2,2,4…en sautant la place qui suit les mêmes moyennes en cas de mêmes moyennes je pensai que ça allai continuer 1,2,3,4… meme si les 2 moyenne du milieu sont égaux? ou bien encor 1,2,2,3,…si tu pouvai nous trouver une solution a cela ce serai parfait merci je n’arive pas a m’ensortir fait pas attention aux fautes d’orthographe merci encor j’esper en toi tu es notre héro

    • Hervé Inisan dit :

      Faisal > Effectivement, pour les fautes, c’est un record ! (j’en ai compté 22, sans compter la ponctuation) 😉
      Sinon, pour ce qui est des rangs : la numérotation gère les ex-aequos (voir cet autre article).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *