Problème de division VBA

Bonjour à tous

je souhaite diviser des valeurs qui sont dans des textbox et les afficher dans un label. Mais quand je saisie la valeur 0 dans une textbox, l'erreur 11 apparaît (Normale, on ne peut pas diviser par zéro). le problème, c'est que je voudrais diviser par 0.5 ou autre. le message pop avant que j'ai terminer la saisie. voici mon code :

Dim A As Variant
A = Replace(txtbx3, ".", ",")

Dim B As Variant
B = Replace(txtbx6, ".", ",")

If A <> "" And B <> "" Then
lb20.Caption = Format(A / B, "0.00")

If lb20.Caption >= 1 Then
lb17.ForeColor = RGB(0, 250, 0)

ElseIf lb20.Caption < 1 Then
lb17.ForeColor = RGB(250, 0, 0)

End If
End If

Merci

Bonjour, je ne comprends pas le pourquoi du remplacement du point par la virgule ?

Calculs entre textbox :

lb20.Caption = Format(Cdbl(txtbx3.value) / Cdbl(txtbx6.value), "0.00")

Bonjour,

je viens d'essayer, ce que tu m'as conseillé et j'ai toujours le message d'erreur

Merci

Bonjour

Bonjour AxAxA, Xmenpl, BrunoM45,

Une proposition avec fonds colorés des TextBox validant ou non les saisies effectuées.

Private Sub Txtbx3_Change()
If IsNumeric(Txtbx3.Value) And Txtbx3 > "" Then Txtbx3.BackColor = vbGreen Else Txtbx3.BackColor = vbYellow
If Txtbx3.BackColor = vbGreen And Txtbx6.BackColor = vbGreen Then Calcul (1) Else Calcul (2)
End Sub

Private Sub Txtbx6_Change()
If IsNumeric(Txtbx6.Value) And (Txtbx6.Value > 0 And Txtbx6 > "") Then Txtbx6.BackColor = vbGreen Else Txtbx6.BackColor = vbYellow
If Txtbx6.BackColor = vbGreen And Txtbx6.BackColor = vbGreen Then Calcul (1) Else Calcul (2)
End Sub

Private Sub UserForm_Initialize()
Txtbx3.BackColor = vbYellow: Txtbx6.BackColor = vbYellow
End Sub

Private Sub Calcul(F As Integer)
If F = 1 Then Lb20.Caption = Format(CDbl(Txtbx3.Value) / CDbl(Txtbx6.Value), "0.00")
If F = 2 Then Lb20.Caption = "Valeurs non numériques, vides ou division par zéro"
End Sub

Merci à tous de m'avoir répondu. Concernant le fichier effectivement cela serait le mieux mais je ne pourrais en joindre un car je ne veux pas modifier le valeur on nom de variable car cela demanderai trop de temps. Pour réponde aux autres commentaires, j'utilise replce car je trouve plus pratique d'utiliser le point sur la pavé numérique que la virgule. j'ai l'imprssion d'étre plus bloqué avec CDbl (ou alors je l'utilise mal). Je vais donner plus d'explications sur mon code donc voici mon code

Private Sub txtbx3_AfterUpdate()

Dim A As Variant
A = Replace(txtbx3, ".", ",")

Dim B As Variant
B = Replace(txtbx6, ".", ",")

If A <> "" And B <> "" Then
lb20.Caption = Format(A/ B, "0.00")

If lb20.Caption >= 1 Then
lb17.ForeColor = RGB(0, 250, 0)

ElseIf lb20.Caption < 1Then
lb17.ForeColor = RGB(250, 0, 0)

End If
End If

End sub

Private Sub txtbx6_Change()

Dim A As Variant
A = Replace(txtbx3, ".", ",")

Dim B As Variant
B = Replace(txtbx6, ".", ",")

If A <> "" And B <> "" Then
lb20.Caption = Format(A / B, "0.00")

If lb20.Caption >= 1 Then
lb17.ForeColor = RGB(0, 250, 0)

ElseIf lb20.Caption < 1 Then
lb17.ForeColor = RGB(250, 0, 0)

End If
End If

End sub

j'ai le message d'erreur 11 quand je veux saisir une valeur décimale de type 0.5 sur la deuxième txtbox sinon aucun problème avec la txtbox 1. j'ai egalement aucun problème avec les valeurs décimales du type 1.2 ou 10.2 qui ne commence pas par 0 sur la txtbox 2

Merci

A nouveau,

Tu peux toujours passer par Replace dans mon code proposé.

Si c'est plus facile pour toi avec le pavé numérique.

Il suffit de changer le début du code.

Bonjour

AxAxA, merci de mettre les codes donnés entre balises SVP
vous pouvez le faire avec le bouton

image

Merci d'y faire attention

Très je ferai plus attention. j'ai essayer plus code et j'ai trouvé une solution pour mon programme meme si cela n'est pas très propre. Je rentrais comme ligne de code ça : on error resume next ce qui me permet de faire des division par 0. ... Sinon, j'ai également essayé de faire un code pour une division avec CDbl et je pense de le problème vient de moi, je ne sais pas utiliser cette fonction voici le code :

Private Sub txtbx3_AfterUpdate()

Dim A As Variant
A = CDbl(txtbx3.Value)  => erreur de type 13

Dim B As Variant
B = CDbl(txtbx6.Value)

If A <> "" And B <> "" Then
lb20.Caption = A / B
End If

End Sub

Private Sub txtbx6_Change()
Dim A As Variant
A = CDbl(txtbx3.Value)

Dim B As Variant
B = CDbl(txtbx6.Value)

If A <> "" And B <> "" Then
lb20.Caption = A / B
End If

End Sub

En tout cas merce de votre aide , je pense que je vais reste sur on error resume, ça fonctionne et je comprends mon code.

Rechercher des sujets similaires à "probleme division vba"