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

Access Discussion :

Problème Format Numérique lors d'import txt


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Points : 31
    Points
    31
    Par défaut Problème Format Numérique lors d'import txt
    Bonjour, j'ai des problèmes de format avec des champs numériques.
    J'ai déjà exposé mes pb, mais je suis toujours bloqué

    Principe de renseignement des tables :
    Je reçois un fichier txt à partir duquel je récupère mes chaînes de caractères afin de remplir mes tables. J'ai essayer beaucoup de traitement sur le format des données du genre :
    RBD_Temp!TEMTBFBD = Format(CDec(Val(Trim(Mid$(Rtemp!Data, 90, 10)))), String(10, "0000000000"))

    Mais ça n'empêche pas que je me retrouve avec des résultats délirants !
    exemple :

    1er champ : Réel simple, Fixe, 6 décimales
    Valeur rentrée (dump de chargement) : 99,999999 Valeur Affichée : 100,000000

    2ème champ : Réel simple, , Décimale en Auto
    Valeur rentrée (dump de chargement) : 999999999 Valeur Affichée : 10000000000

    3ème champ : Réel simple, , Décimale en Auto
    Valeur rentrée (dump de chargement) : 108.798343
    Valeur Affichée dans la cellule : 108,7983
    Valeur Stockée (reprise par VBA) : 108,79833984375 ???

    Quelqu'un a-t-il une solution ?
    MAIS SURTOUT JE NE PEUX PAS TOUCHER AUX CARACTERISTIQUES DE MES CHAMPS DANS LES TABLES !

    Merci d'avance pour toute aide de votre part.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Citation Envoyé par clemasson
    3ème champ : Réel simple, , Décimale en Auto
    Valeur rentrée (dump de chargement) : 108.798343
    Valeur Affichée dans la cellule : 108,7983
    Valeur Stockée (reprise par VBA) : 108,79833984375 ???
    MAIS SURTOUT JE NE PEUX PAS TOUCHER AUX CARACTERISTIQUES DE MES CHAMPS DANS LES TABLES !
    Mauvaise nouvelle les Réels dans tous système informatique sont toujours des approximations. Les ordinateurs contrairement au cerveau humain n'est pas capable d'une précision absolue. Le système cherche la valeur la plus proche qu'il est capable de coder d'où tes erreurs.

    Si tu ne veux pas changer tes champs et que tu ne peux pas prendre des valeurs arrondies alors il n'y a pas de solution.

    Si tu veux éviter ces pb tu peux :

    - définir ces champs en Decimal ou Réel double. Les réels doubles ont aussi des érreurs mais elles sont situées sur les quelques dernière décimales.

    - gérer tes nombres comme des chaines de caractères et redéfinir les oppérations mathématiques chiffre par chiffre. C'est faisable, dans les années 90, mon père a fait c'est fait une calculatrice qui acceptaiet des nombres de 25 chiffres sur notre ZX81. Ça marche mais c'est assez long et fastidieux.

    1er champ : Réel simple, Fixe, 6 décimales
    Valeur rentrée (dump de chargement) : 99,999999 Valeur Affichée : 100,000000
    Mathématiquement il est admi que 99,999999 est suffisement proche de 100 pour y être égale.

    2ème champ : Réel simple, , Décimale en Auto
    Valeur rentrée (dump de chargement) : 999999999 Valeur Affichée : 10000000000
    Même chose.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Un autre truc quand tu as des pb avec les décimal force le nombre à 10 et définit un masque d'affichage qui affiche force access à afficher TOUS les chiffres ... sinon il t'affiche ceux qu'il juge pertinent mais je n'ai jamais pu comprendre la logique qui régit sa 'pertinence' .

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Points : 31
    Points
    31
    Par défaut
    Pour conclure, je me heurte à 2 cas :

    « 0,000001 » à « 99,999999 » avec un format fixe de type 00,000000
    Et
    « 0,00000001 » à « 9999999999 » avec un format en décimale auto.


    > Pour le premier, cas j’ai fait des tests et OUI, je peux écrire 99,999999 dans ma cellule ;-) avec ces caractéristiques :
    Type : numérique
    Taille : décimale
    Format :
    Précision : 18
    Echelle : 6
    Décimales : 6

    Par contre lors de l’extraction de mon dump de chargement vers le champ numérique, Access ou VBA trouve encore le moyen d’arrondir à 100. Voici ma ligne de commande :
    RBD_Temp!ACHAVABD = Val(Trim(Mid$(Rtemp!Data, 33, 2))) & "," & Val(Trim(Mid$(Rtemp!Data, 35, 6)))


    > Idem pour le deuxième cas, je peux saisir ma valeur dans le champs avec :
    Type : numérique
    Taille : décimale
    Format :
    Précision : 28
    Echelle : 10
    Décimales : Auto

    Mais là aussi, j’utilise ce code
    RBD_Temp!OMTBMABD = Val(Trim(Mid$(Rtemp!Data, 101, 10)))
    Et je me retrouve encore avec 10000000000 au lieu de 9999999999.

    Maintenant, je me demande s’il ne faut pas améliorer le code ? En tout cas, une fois encore je suis égaré !

Discussions similaires

  1. [Access 97]Problème format numérique export Excel
    Par waici dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 03/04/2008, 09h52
  2. Problème format numérique
    Par freyliss dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 06/08/2007, 15h16
  3. Problème de caractères lors d'importation de bdd
    Par ferdi67 dans le forum Outils
    Réponses: 1
    Dernier message: 28/08/2006, 22h28
  4. [VBA-E]Problème de date lors d'importation
    Par illight dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/04/2006, 11h38

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