IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Nombre avec décimales


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Points : 21
    Points
    21
    Par défaut Nombre avec décimales
    Bonjour,

    Je dois récupérer dans une requête un nombre, par exemple : 12,5 et le formater en vba sous la forme 00000 (un nombre composé des 3 chiffres avant la virgule et deux après, avec l'exemple ci dessus : 01250)..
    J'ai essayé avec la fonction "Format" mais le résultat est bizarre, du genre 000 12

    Y aurait il une fonction plus facile à mettre en œuvre ?

    sinon, je pense que je pourrais récupérer le nombre avant la virgule, et le nombre après la virgule, puis écrire quelque chose sous la forme :
    var = "0" & nbA & nbB

    Mais je ne retrouves plus la fonction qui permet de prendre tous les caractères présent avant un caractère particulier (ici la virgule), et idem avec les caractères présents après la virgules

    Pourriez vous m'aiguiller?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    peut-être en multipliant par 100 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format([NomDuChamp]*100; "00000")
    A+

  3. #3
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Sinon il existe la fonction ROUND()

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 549
    Points : 556
    Points
    556
    Par défaut
    Tu convertis ton numérique en string et tu utilises la fonction Instr pour retrouver la position de ta virgule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    InStr(1, "12,5", ",")
    Ensuite, avec le fonction Left and right, tu pourras extraire facilement ta partie entière et décimales pour pouvoirformater tout çà comme çà t'arrange

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 256
    Points
    34 256
    Par défaut
    salut,
    helios, ta solution est envisageable, mais quelque peu compliquée pas rapport à ce qu'ont proposé Chtulus et LedZepII
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 549
    Points : 556
    Points
    556
    Par défaut
    Bonjour,
    Imaginons un nombre du type 12.5368

    La méthode du * 100 ne marche que si l'on est sûr qu'il n'y aura qu'au maximum 2 chiffres après la virgule
    La méthode du Round(), je ne vois pas ce que çà va apporter

    C'est pour cela que j'ai proposé ma version ....

  7. #7
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    effectivement j'avais mal lu le post
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  8. #8
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    La méthode du * 100 ne marche que si l'on est sûr qu'il n'y aura qu'au maximum 2 chiffres après la virgule
    Moi, je crois que ça marche

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT UnChamp, Format([UnChamp]*100,"00000") AS Centiemes
    FROM MaTable;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UnChamp    Centiemes
    3,8          00380
    10           01000
    105          10500
    3,18962      00319
    568,35499    56835
    Et Format() arrondit correctement.

    A+

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 549
    Points : 556
    Points
    556
    Par défaut
    Je suis d'accord que çà fonctionne si le résultat ne doit comporter que 2 chiffres après la virgule... Je me suis mal exprimé dans mon post précédent.... Je voulais dire, si le résultat doit être avec 3 chiffres après la virgule, la méthode n'est plus valide car elle ferait un arrondi à tort

    Il n'y pas de règles précises d'après l'énoncé et peut être que flamby6969 a besoin que :
    5.547 donne 05547
    ce qui fonctionne avec ma méthode mais pas avec la tienne car la tienne donnerait : 00555 au lieu de 05547

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Points : 21
    Points
    21
    Par défaut [Résolu] :)
    Un grand merci à hélios77 et LedZeppII,

    La méthode de hélios77 est celle à laquelle je pensais quand j'ai écris le post, mais je ne retrouvais plus cette fonction qui recherche un caractère particulier..

    Mais en fait, la solution de LedZeppII est vraiment plus simple, je cherchais vraiment à faire compliqué alors qu'il n'y avait qu'à multiplier par 100.

    Je n'ais pas de problèmes d'arrondis car je n'ai jamais de centièmes dans les données que j'utilise pour ce champ.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 08/10/2014, 14h17
  2. InputBox nombre avec décimal
    Par Baba75AB dans le forum IHM
    Réponses: 2
    Dernier message: 19/06/2008, 17h09
  3. Réponses: 3
    Dernier message: 21/12/2007, 15h13
  4. Afficher un nombre avec 2 décimales.
    Par Higestromm dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/02/2006, 16h12
  5. round avec nombre de décimale spécifiée
    Par bilb0t dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 14/04/2005, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo