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

VB 6 et antérieur Discussion :

Chiffre après la virgule après plusieurs calculs


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué

    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 189
    Points
    189
    Par défaut Chiffre après la virgule après plusieurs calculs
    Bonjour à tous,

    me revoilà

    voici mon problème, je n'arrive pas à avoir les centimes sur mes deux dernières textbox "couttotal" et "total" (voir à la fin du code) j'ai essayé format et round, round fonctionne très bien sur les autres textbox mais pas sur les totaux..

    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 Calucler_Click()
     
     
         z = nbmensualité
       If Val(taux.Text) <> 0 Then
       taux.Text = Replace(taux.Text, ".", ",")
         t = (taux / 100)
         a = montantprêt * t / 12
         b = 1 - (1 + t / 12) ^ (-z)
         v = Round(a / b, 2)
       If Val(assu1.Text) <> 0 Then
       assu1.Text = Replace(assu1.Text, ".", ",")
         H = (assu1 / 100)
         E = (montantprêt * H) / 12
         F = (E * nbmensulité)
    End If
     
     mensualité2 = v
     
     
    mensualitéassu = Round((mensualité2) + Val(assuf) + (E), 2)
    couttotal = ((Val(mensualitéassu * Val(z)) + Val(fraisdossier) + (F)) - Val(montantprêt))
    total = (Val(montantprêt) + Val(couttotal))
     
     
    End If
     
     
    End Sub
    Merci
    Seb
    Si tienes una pistola puedes robar un banco, pero si tienes un banco puedes robar a todo el mundo.... ¡DESPIERTA!

  2. #2
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Tu fais des trucs à la limite de la légalité !
    assu1.Text est une variable de type string
    Et tu la considères comme une variable de type nombre en la divisant par 100 !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     H = val(assu1.text) / 100

  3. #3
    Membre habitué

    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 189
    Points
    189
    Par défaut
    euh.... je sais pas, je fais comme je peux, mon programme fonctionne bien mis à part le soucie des totaux.
    Si tienes una pistola puedes robar un banco, pero si tienes un banco puedes robar a todo el mundo.... ¡DESPIERTA!

  4. #4
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Règle de base : On ne mélange pas les pommes et les poires !
    • Donc, si tu as une variable qui contient une chaine de caractères, tu passes par Val pour en extraire la valeur numérique
    • Donc, si tu as une variable qui contient une valeur numérique, tu passes par Format$ pour la mettre dans une variable String


    A mon avis, ça résoudra tes problèmes .

  5. #5
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Salut

    @ DAUDET78 de bonnes habitudes à prendre dés le depart.

    @ trentks95

    Dans le bout de code que tu nous fais voir, aucune de tes variables ne sont typées, donc elle sont considérées comme variant, VB6 choisit le type qui lui semble le mieux adapté, donc pas forcement le plus performant tant qu'a la précision que tu souhaites.
    Pour avoir une très bonne précision finale dans une suite de calcul, il faut typer tes variables en Single.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par trentks95 Voir le message
    voici mon problème, je n'arrive pas à avoir les centimes sur mes deux dernières textbox
    C'est simple ... tu dimensionnes tes variables comme des Entiers Longs et tu fais tous tes calculs en centimes ( tu peux aller de -2147483648 à +2147483647 ) et, pour afficher, tu divises par 100

  7. #7
    Membre habitué

    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 189
    Points
    189
    Par défaut
    Désolé du temps de réponse mais j’essaie toujours et j'arrive pas, je vous tiens au courant.

    Merci
    Séb
    Si tienes una pistola puedes robar un banco, pero si tienes un banco puedes robar a todo el mundo.... ¡DESPIERTA!

  8. #8
    Membre habitué

    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 189
    Points
    189
    Par défaut
    Alors, c'est bien comme ça qu'il faut déclarer "Dim ... As Long" ? voir l'exemple au début du code.

    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
    Private Sub Calucler_Click()
     
    Dim e, t, a, b, v As Long ' c'est bien comme ça ?
     
     
     
         z = nbmensualité
       If Val(taux.Text) <> 0 Then
       taux.Text = Replace(taux.Text, ".", ",")
         t = (taux / 100)
         a = montantprêt * t / 12
         b = 1 - (1 + t / 12) ^ (-z)
         v = Round(a / b, 2)
       If Val(assu1.Text) <> 0 Then
       assu1.Text = Replace(assu1.Text, ".", ",")
         H = (assu1 / 100)
         E = (montantprêt * H) / 12
         F = (E * nbmensulité)
    End If
    Merci
    Seb
    Si tienes una pistola puedes robar un banco, pero si tienes un banco puedes robar a todo el mundo.... ¡DESPIERTA!

  9. #9
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim e, t, a, b, v As Long ' c'est bien comme ça ?
    seul v est typé, Dim e As Long, t As Long, a As Long, b As Long, v As Long
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  10. #10
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    NON .....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim e As Long
    Dim t As Long
    Dim a As Long
    Dim b As Long
    Dim v As Long
    Je n'ai pas vérifié ton code

  11. #11
    Membre habitué

    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 189
    Points
    189
    Par défaut
    Bonjour,

    alors voici ce que j'ai fait et ça fonctionne :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Private Sub Calucler_Click()
     
    Dim m As Single
    Dim z As Single
    Dim t As Single
    Dim a As Single
    Dim b As Single
    Dim v As Single
    Dim H As Single
    Dim E As Single
    Dim F As Single
    Dim L As Single
    Dim D As Single
    Dim K As Single
    Dim Q As Single
    Dim C As Single
     
         m = montantprêt
         z = nbmensualité
       If Val(taux.Text) <> 0 Then
       taux.Text = Replace(taux.Text, ".", ",")
         t = (taux / 100)
         a = m * t / 12
         b = 1 - (1 + t / 12) ^ (-z)
         v = Round(a / b, 2)
       If Val(assu1.Text) <> 0 Then
       assu1.Text = Replace(assu1.Text, ".", ",")
         H = (assu1 / 100)
         E = (m * H) / 12
         F = (E * z)
     
     
    End If
     
         L = assuf
     
         D = fraisdossier
     mensualité2 = v
     
         K = Round((v) + (L) + (E), 2)
         Q = Round(((K * (z)) + (D) + (F)) - (m), 2)
         C = Round((m) + (Q), 2)
     
    mensualitéassu = K
     
    couttotal = Q
     
    total = C
     
     
    End If
     
     
    End Sub
    maintenant il me reste à trouver pour le format de total et couttotal car il me l'affiche comme ceci : 123456,78 et je souhaiterais ceci : 123 456,78, j'ai essayé total = format (x, "### ###,##") ça fonctionne mais il m'enlève les centimes.

    J'ai un autre problème si je ne met rien dans les textbox L et D il me met une erreur, j'ai essayé de régler ce problème avec If Val(assuf.Text) <> 0 Then par exemple il me met aussi une erreur.

    Merci pour votre aide.

    Séb
    Si tienes una pistola puedes robar un banco, pero si tienes un banco puedes robar a todo el mundo.... ¡DESPIERTA!

  12. #12
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Not IsNumeric(assuf.Text) Then
        MsgBox "entrée non conforme", vbCritical
        Else
        'c'est bon
    End If
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  13. #13
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    I#=12345678
    S$=Format$(I#)
    J%=Len(S$)
    Select case J%
        case <2 
           Machin.text = "0," & S$
        case <5
           Machin.text = Left$(S$, J%- 2) & "," & Right$(S$,2)
        case else
           Machin.text = Left$(S$, J%- 5) & " " & Mid$(S$,J%-2,3) & "," & Right$(S$,2)
    End Select
    Pas testé ... mais pas idiot !

  14. #14
    Membre habitué

    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 189
    Points
    189
    Par défaut
    Alors pour ce qui est du format voila ce que j'ai utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    couttotal = FormatNumber(Q, 2, True)
    maintenant j'arrive pas à régler le problème des textbox vide qui me fait des erreur mismatch.
    Si tienes una pistola puedes robar un banco, pero si tienes un banco puedes robar a todo el mundo.... ¡DESPIERTA!

  15. #15
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Il est où ton programme qui plante ?

  16. #16
    Membre habitué

    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 189
    Points
    189
    Par défaut
    Bonjour à tous,

    voila tout fonctionne, voici ce que j'ai fait :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Private Sub Calucler_Click()
     
     
     
    Dim m As Single
    Dim z As Single
    Dim t As Single
    Dim a As Single
    Dim b As Single
    Dim v As Single
    Dim H As Single
    Dim E As Single
    Dim F As Single
    Dim L As Single
    Dim D As Single
    Dim K As Single
    Dim Q As Single
    Dim C As Single
     
    If montantprêt.Text = "" Then
                            montantprêt.Text = 0
                      End If
         m = montantprêt
    If nbmensualité.Text = "" Then
                            nbmensualité.Text = 0
                      End If
         z = nbmensualité
       If Val(taux.Text) <> 0 Then
       taux.Text = Replace(taux.Text, ".", ",")
         t = (taux / 100)
         a = m * t / 12
         b = 1 - (1 + t / 12) ^ (-z)
         v = Round(a / b, 2)
       If Val(assu1.Text) <> 0 Then
       assu1.Text = Replace(assu1.Text, ".", ",")
         H = (assu1 / 100)
         E = (m * H) / 12
         F = (E * z)
     
     
    End If
     
         L = assuf
     
         D = fraisdossier
     mensualité2 = v
     
         K = Round((v) + (L) + (E), 2)
         Q = Round(((K * (z)) + (D) + (F)) - (m), 2)
         C = Round((m) + (Q), 2)
     
    mensualitéassu = K
     
    couttotal = FormatNumber(Q, 2, True)
     
    total = FormatNumber(C, 2, True)
     
     
    End If
     
     
    End Sub
    J'espère ne pas avoir mélangé trop de pommes et de poires

    Merci pour votre aide.

    Séb
    Si tienes una pistola puedes robar un banco, pero si tienes un banco puedes robar a todo el mundo.... ¡DESPIERTA!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/05/2009, 15h13
  2. Réponses: 2
    Dernier message: 31/03/2008, 11h27
  3. plusieur chiffre aprés la virgule
    Par jawed dans le forum VBA Word
    Réponses: 1
    Dernier message: 20/11/2007, 22h05
  4. calcule de PI avec nombre préci de chiffres aprés la virgule!
    Par do_key_120 dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 17/10/2007, 22h58
  5. Nb de chiffres après la virgule ?
    Par Thcan dans le forum C
    Réponses: 10
    Dernier message: 17/09/2003, 21h49

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