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 :

forcer le chiffres a virgule dans une box


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut forcer le chiffres a virgule dans une box
    bonjour a tous

    je bloque sur le moyen d'obtenir un chiffre a virgule dans une box d'un formulaire

    voici le code que j'ai mis

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Private Sub UserForm_Initialize()
    Dim totalvalue As Variant
    totalvalue = Round(Range("h65536").End(xlUp).Value, 2)
    totalbox.Value = totalvalue
    np.Value = Round(Range("h65536").End(xlUp).Value, 2)
    especes.Value = 0
    chqkdo.Value = 0
    par.Value = 0
    cheques.Value = 0
    End Sub
     
     
    Private Sub cheques_Change()
    On Error Resume Next
    np.Value = Val(totalbox) - Val(especes) - Val(chqkdo) - Val(par) - Val(cheques)
    End Sub
    Private Sub chqkdo_Change()
    On Error Resume Next
    np.Value = Val(totalbox) - Val(especes) - Val(chqkdo) - Val(par) - Val(cheques)
    End Sub
    Private Sub especes_Change()
    On Error Resume Next
    np.Value = Val(totalbox) - Val(especes) - Val(chqkdo) - Val(par) - Val(cheques)
    End Sub
    Private Sub par_Change()
    On Error Resume Next
    np.Value = Val(totalbox) - Val(especes) - Val(chqkdo) - Val(par) - Val(cheques)
    End Sub

    su la box np, j'obtien un chiffre sans virgule

    en fais je sais que le probleme provient de la série :
    np.Value = Val(totalbox) - Val(especes) - Val(chqkdo) - Val(par) - Val(cheques)

    car si je suprime toutes ces opérations, le montant dans la box est conforme
    par exemple sans toutes ces opération, si le chiffres de totalvalue est 180.60, alors dans la box np, il apparait correctement à 180.60

    si je laisse les opérations j'obtient 180.60 pour la box totalvalue, mais pour la box np, elle indique 180

    résultat, le solde qui est calculé dans la box np se trouve faussé de 0.60

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Vous avez essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    np.Value = Format(Val(totalbox) - Val(especes) - Val(chqkdo) - Val(par) - Val(cheques), "# ##0.00")

  3. #3
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    merci pour ton aide

    ton code force le montant a avoir 2 chiffre après la virgule

    mais etrangement il est de valeur 180.00

    mais j'ai trouvé la source du probleme

    il viens de cette partie de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub UserForm_Initialize()
    Dim totalvalue As Variant
    totalvalue = Round(Range("h65536").End(xlUp).Value, 2)
    totalbox.Value = totalvalue
    np.Value = Round(Range("h65536").End(xlUp).Value, 2)
    especes.Value = 0
    chqkdo.Value = 0
    par.Value = 0
    cheques.Value = 0
    End Sub
    en fait précisement
    especes.Value = 0
    chqkdo.Value = 0
    par.Value = 0
    cheques.Value = 0

    en les suprime, le probleme disparait
    comme c'est 0 ne sont pas obligatoire
    je peux les suprimer, il ne servait que pour l'esthetique du formulaire
    mais malgré tout
    c'est bizare que la formulation d'une box en "0" fausse à l'ouverture du formulaire la somme d'une formule dans une combobox

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Personnellement, même en laissant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    especes.Value = 0
    chqkdo.Value = 0
    par.Value = 0
    cheques.Value = 0
    j'ai bien le résultat pour np.value avec 2 décimales.
    Mais selon la valeur affectée au départ avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    np.Value = Round(Range("h65536").End(xlUp).Value, 2)
    le résultat peut être faux (si la valeur dans la cellule n'est pas un entier et avec la virgule comme séparateur décimal).

    Quel est le séparateur décimal défini en ce qui vous concerne ?
    Avez-vous vérifié votre résultat avec différentes valeurs (avec ou sans décimales affectées à np.value) ?

  5. #5
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    la valeur obtenue dans totalvalue est le resultat d'une opération
    simpliste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     ActiveCell.FormulaR1C1 = "=(RC[-3]+RC[-2])*1.196"
        Selection.NumberFormat = "#,##0.00"
    totalvalue ne fait que reprendre la valeur de cette opération

    np lui est obtenue tout d'abord par la meme souce que totalvalue
    mais aussi par une série de Private Sub box_Change() qui a chaque changement dans la valeur d'une des box, vienne modifier le montant final de np

    donc avec des "0" au demarage du formulaire, le montant de np est faussé, alors quand les retirant je n'ai aucun probleme de cohérence sur les centimes

    avec votre code, j'avait bien 2 décimales, mais c'était 2 zero, je n'obtenait pas la valeur réelle

    peux etre falait il mettre la serie de box au format "0.00" au lieu de 0

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

Discussions similaires

  1. affecter le premier chiffre apres la virgule dans une variable
    Par kroma23 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/05/2011, 09h09
  2. Chiffre a virgule dans une requete SQL
    Par bolloche dans le forum VBA Access
    Réponses: 4
    Dernier message: 12/05/2010, 16h56
  3. Réponses: 3
    Dernier message: 03/05/2008, 16h44
  4. PROBLEME : chiffre avec virgule dans MySQL
    Par cedre22 dans le forum Requêtes
    Réponses: 11
    Dernier message: 15/12/2005, 16h41
  5. forcer le curseur à ce positionner dans une zone texte
    Par caton dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/04/2005, 14h17

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