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 :

[vba] probleme de conversion entre access et excel 7,8 = 7,80000019073486 ?


Sujet :

Access

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 14
    Par défaut [vba] probleme de conversion entre access et excel 7,8 = 7,80000019073486 ?
    bonjour tout le monde

    J'ai un probleme de transfert de réel entre access et excel

    Par exemple j'ai un champ heure dans une table session sur access

    heure = 7.8

    Je passe par vba


    J'utilise le type single

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dim heure_formation as single

    J'ai envie de mettre le resultat dans mes cellules excels

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    feuille.Cells(i, 2).Value =  heure
    Et la j'ai une conversion qui n'a aucun sens mathématiquement

    Par exemple alors que heure valait 7.8,
    la valeur affichée dans la cellule "feuille.Cells(i, 2).Value" est 7,80000019073486


    J'ai meme fait des vérifications avec des msgbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    feuille.Cells(i, 2).Value =  heure 
    msgbox feuille.Cells(i, 2).Value 
    msgbox heure
    Et bien sur ca m'afficher successivement 7,80000019073486 puis 7,8

    Et le probleme ne se pose pas non plus de Access -> Word

    Je sais que l'on pourrait contourner le probleme avec des format(a,"#0.0") mais j'aimerais quand meme savoir d'ou vient le problème donc si quelqu'un avait la solution ce sera sympa de la faire partager.

    Merci d'avance

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    dim heure_formation as double

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Les données de type float (single et double) ne peuvent stocker de valeur exacte. Si tu affectes 1 à un de ces types par exemple, tu auras une valeur très proches de 1 avec des décimales très loin derrière.

    Le type Currency (monétaire ou encore décimal) et fait pour stocker des valeurs exactes.

    Ceci vient de la manière selon laquelle les types float stockent l'information. Pour faire simple :

    On décide d'un nombre d'octets pour stocker notre valeur, 4 par exemple soit 32bits. Ceci nous donne un peu plus de 4 milliards de combinaisons possibles. Notre type a aussi un intervalle de définition qui représente la plage min/max des valeurs qu'il peut représenter, mettons -2 millions +2 millions. Si tu divises ton intervalle par le nombre de combinaisons possibles, tu as la précision de ton type. Comme ça ne tombe pas "juste" il y a de très fortes chances pour que la valeur que tu veuilles stocker ne soit pas dans les valeurs réellement stockées. Au moment où tu stocke ta valeur, il y a donc approximation à la valeur réelle la plus proche.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 14
    Par défaut
    bonjour

    J'ai essaye de declarer mon type en double
    -> pas de changement

    puis en currency
    -> ca resoud la solution, car elle me donne une valeur correct mais elle me rajoute un suffixe "€" derrière le resultat dans la cellule


    Sinon merci pour l'aide et les explications, mais je comprends toujours pas pourquoi j'ai ce problème pour les transferts de reel en access->excel mais pas en access->word?

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Le symbole euro vient du fait qu'excel doit voir le type currency qui est utilisé pour du monétaire. Il doit donc automatiquement formater la cellule en monétaire mais tu peux y mettre un format de nombre standard qui te laissera le nombre sans le symbole euro.

    Comme je te l'ai expliqué single et double fonctionnent de la même façon, i lest donc logique que le problème persiste. Pour la précision, le double n'apporte juste qu'une double précision par rapport au single (logique non ?).

    Pour la différence de comportement entre word et excel, comme ça c'est difficile à dire. Il faudrait savoir que font les deux application face à un type de données reçu. Excel le respecte d'après ce que tu as pu voir. Word peut très bien faire des conversions, approximations, arrondis sans rien demander. A tester.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 14
    Par défaut
    Je pense que je vais utiliser format(heure_formation,"#0.0")

    En tout cas merci pour les reponses

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

Discussions similaires

  1. Probleme de conversion entre . et , avec une macro excel
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/01/2007, 22h26
  2. Réponses: 3
    Dernier message: 20/05/2006, 00h28
  3. Réponses: 7
    Dernier message: 19/05/2006, 15h39
  4. [VBA-E]Ouvrir une BDD access sous Excel
    Par toniox dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/05/2006, 16h45
  5. Pb de lien entre Access et Excel pour des fonctions VBA
    Par favien dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/11/2005, 01h00

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