Gestion des variables decimales vb6

sid1549 -  
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   -
bonjour, voici mon code merci de m'aider, labeltotalliquideg.caption n'arrive pas a stocker le resultat de mon operation

Private Sub new_add_Click()
Dim user As String, ItemX As Variant
Dim deja As Boolean, i As Integer

deja = False

'On Error Resume Next

    If Trim(Comboproduit.Text) = "" Then
        MsgBox "Veuillez selectionner le Produit!", vbInformation + vbOKOnly, "Erreur"
        Comboproduit.SetFocus
    ElseIf Textqteliquide.Text = "" Then
        MsgBox "Veuillez saisir la Quantité!", vbInformation + vbOKOnly, "Erreur"
        Textqteliquide.SetFocus
    ElseIf (Textqteemballage.Text = "") Then
        MsgBox "Veuillez saisir la Quantité!", vbInformation + vbOKOnly, "Erreur"
        Textqteemballage.SetFocus
    ElseIf (Comboclient.Text = "") Then
        MsgBox "Veuillez selectionner le Client dans la liste!", vbInformation + vbOKOnly, "Erreur"
        Comboclient.SetFocus
    ElseIf (Labelpuclient.Caption = "") Then
        MsgBox "Veuillez cliquer sur ''PU CLIENT''!", vbInformation + vbOKOnly, "Erreur"
        Comboclient.SetFocus
    Else
'Tester si l'enregistrement est deja ajouter
    i = liste.ListItems.Count
    While (i > 0)
        If (liste.ListItems(i).Text = Labellibelle.Caption And liste.ListItems(i).SubItems(1) = Comboproduit.Text) Then
             deja = True
        End If
        i = i - 1
    Wend
    
    If (deja = False) Then
    Set ItemX = liste.ListItems.Add(, , Labellibelle.Caption)

            ItemX.SubItems(1) = Comboproduit.Text
            ItemX.SubItems(2) = CInt(Labelpuliquide.Caption)
            ItemX.SubItems(3) = CVar(Textqteliquide.Text)
            ItemX.SubItems(4) = Labeltotalliquide.Caption
            ItemX.SubItems(5) = CLng(Labelpuemballage.Caption)
            ItemX.SubItems(6) = CInt(Textqteemballage.Text)
            ItemX.SubItems(7) = Labeltotalemballage.Caption
            ItemX.SubItems(8) = Comboclient.Text
            ItemX.SubItems(9) = Labelstockactuel.Caption
            ItemX.SubItems(10) = CLng(Labelstockrestant.Caption)
            ItemX.SubItems(11) = Labelnom.Caption
            ItemX.SubItems(12) = Labelprenom.Caption
            ItemX.SubItems(13) = Labelcontact.Caption
            ItemX.SubItems(14) = Labelpuclient.Caption
            
'Mise à jour du stock
Call connect
Sql = "select * from ARTICLE where id_article='" & Comboproduit.Text & "'"
    Rs.Open Sql, Db, adOpenKeyset, adLockOptimistic
    If (Rs.RecordCount > 0) Then
        Rs.UpdateBatch
        Rs.Fields("stock") = Labelstockrestant.Caption
    Rs.Update
    End If
Call deconnect
LabeltotalliquideG.Caption = LabeltotalliquideG.Caption + (CVar(Textqteliquide.Text) * CLng(Labelpuclient.Caption)) 

(probleme : type incompatible) et la je suis bloquer depuis deux jours)

LabeltotalemballageG.Caption = LabeltotalemballageG.Caption + (CInt(Textqteemballage.Text) * CLng(Labelpuemballage.Caption))
Labeltotalttc.Caption = Val(LabeltotalliquideG.Caption) + Val(Labeltva.Caption) + Val(LabeltotalemballageG.Caption)

Call Option4_Click
 
 Else
    MsgBox "L'enregistrement est déjà ajouté", vbInformation + vbOKOnly, "Iformation"
    Comboproduit.SetFocus
End If
Call Effacer
End If
End Sub



A voir également:

4 réponses

sid1549
 
NB: le code marche tres bien avec les valeur entier sans virgule; mais des qu'on met un nombre a virgule, bug , type incompatible. merci de m'aider
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
Eternel.. éternel et encore.. problème de point / virgule.
quand tu veux mettre un nombre qui vient d'un texte.
Dim A as integer 
Dim Txt as String 
Txt = "23,32" 
A = val(replace(Txt,",",".")) 'Remplacer la virgule par un point.

Résultat = 23,32
A+

Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
sid1549
 
lermite222, merci de me répondre, mais en réalité le A = val(replace(Txt,",",".")) ne ramène pas le nombre avec la virgule mais plutôt la partie entière du nombre. ce qui fausse mes calcules au final. merci
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Là tu à a un ti problème
Si tu emploi des variables Integer .. forcément que ça te renvoi une partie sans décimale, faut savoir ce que tu veux, si tu veux des décimales faut employer des variables Single.
Faudrait alors dire..
Dim A as Single

Et ça marcherait.
Moi je ne fait que suivre ce que tu dis dans tes postes :-) !!!!
0