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

Macros et VBA Excel Discussion :

Export variables VBA vers feuille Excel, valeur arrondi


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Par défaut Export variables VBA vers feuille Excel, valeur arrondi
    Bonjour tlm,

    J'ai un petit soucis dont j'aimerais bien connaitre l'explication, car je n'arrive pas à mettre la main sur la boulette.
    Je précise que je suis débutant en VBA-Excel et que c'est mon premier developpement sur Excel.

    Mon prog permet de calculer une épaisseur de tube a un diametre donné suivant des conditions de service définis.
    J'ai un UserForm principal, des tableaux stockés dans des modules, etc ... bref tous est exécuté en VBA avant d'être exporté dans un nouveau classeur a partir d'un des models stocké dans le classeur avec le code.

    Le problème c'est que dans le document final, les valeurs exportées du VBA qui ont une décimale sont arrondies et avec plus de décimales qu'à l'origine (voir capture). Les chiffre entier ne posent pas de problème

    la commande pour exporter est de type suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(nClas2).Worksheets(NomSht).Cells(22, 16) = NomVariable
    J'ai également testé avec un debug.print et un msgbox avant chaque ligne d'export et VBA me retourne les bonnes valeurs !
    De même, j'ai forcé le format et (re)converti les données au passage, essayé un export dans une nouvelle feuille vierge (plutot qu'un model) et le résultat est le même !




    le format de nombre de la cellule est standard




    la valeur de 219,1 est donnée par une liste déroulante, donc elle n'a subie aucune modification par calcul.




    je n'arrive pas a m'expliquer ce problème, je suppose que j'ai dû modifier un paramètre par inadvertance.
    Si quelqu'un a une idée ou une astuce, je le remerci d'avance car là je séche et vue que je souhaite réutiliser ces valeurs cela me plairait beaucoup mieu.

    merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Si ce n'est qu'un problème de format, formate ta colonne en nombre avec le nombre de décimales que tu désires. Format -> Cellule -> Nombre
    Si c'est un pb d'arrondi,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Valeur = 125.125698
    Cells(NoLigne, NoCol).value = Int(Valeur * 100)/100
    ou sinon, utilise les fonctions d'Excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(NoLigne, NoCol).value = Application.WorksheetFunction.RoundUp(125.2365, 2)
    Pour la syntaxe, regarde à Arrondi.sup dans l'aide d'Excel.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    salut.tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Workbooks(nClas2).Worksheets(NomSht).Cells(22, 16) =
    round(NomVariable,2)

  4. #4
    Nouveau candidat au Club
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Par défaut
    Merci pour vos réponses.

    Comme ça m'a pris un le choux ces d'arrondi, j'ai mis de coté puis j'ai fais des essais histoire d'y voir plus clair et de comprendre. Et j'ai enfin trouvé ma bourde !



    Donc j'ai fais une simple combobox, pour ecrire une valeur numérique dans des cellules et constater, les deux formats utilisés sont le Single et Double.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Option Explicit
        Dim variaB As Single
     
    Private Sub ComboBox1_Change()
        variaB = ComboBox1.Value
    End Sub
     
    Private Sub CommandButton1_Click()
        Cells(1, 1) = CSng(variaB)
    End Sub
     
    Private Sub CommandButton2_Click()
        Cells(2, 1) = CSng(variaB)
    End Sub
     
    Private Sub UserForm_Initialize()
        ComboBox1.AddItem (0.85)
        ComboBox1.AddItem (0.7)
    End Sub



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Option Explicit
        Dim variaB As Double
     
    Private Sub ComboBox1_Change()
        variaB = ComboBox1.Value
    End Sub
     
    Private Sub CommandButton1_Click()
        Cells(1, 1) = CDbl(variaB)
    End Sub
     
    Private Sub CommandButton2_Click()
        Cells(2, 1) = CDbl(variaB)
    End Sub
     
    Private Sub UserForm_Initialize()
        ComboBox1.AddItem (0.85)
        ComboBox1.AddItem (0.7)
    End Sub



    D'après ce que l'on ma expliqué, c'est lié à la manière dont la valeur numérique est codé en mémoire, et également au fait que les cellules d'une feuille Excel prennent un chiffre codé en Double de manière native et elles acceptent les numériques en Single moyenant une conversion de ce dernier (et la conversion donne les arrondis, parfois au dessus et parfois en dessous). Truc de fou, bref ça ressemble bien a l'erreur du débutant

Discussions similaires

  1. [XL-2007] exporter graphique owc vers feuille excel
    Par bob3333 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2011, 20h54
  2. [Access 2003] Export code SQL vers feuille Excel
    Par nicacc dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 20/07/2008, 09h56
  3. Exporter une variable dans une feuille excel
    Par adrien.gendre dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/07/2007, 20h36
  4. [VBA Excel] export/sauvegarde d'une feuille excel .csv
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/12/2006, 12h07
  5. envoyer le contenu de variables vba vers une feuille excel
    Par Sebastien_INR59 dans le forum Access
    Réponses: 1
    Dernier message: 21/06/2006, 19h58

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