Aide pour corriger code textbox

bonjour,

besoin d'aide pour corriger le code suivant :

With .TxtB_Quantite_ES

VarQte_Compare= if CLng(.Value) + VarQte_Stock <= Lbl_Volume_Stock then CLng(.Value)

Else Lbl_Volume_Stock - VarQte_Stock, CLng(.Value))

End If

ce que je cherche à faire,

valeur du textbox = si valeur saisie + quantité en stock est inférieur ou égal au volume déclaré du stock alors la valeur saisie reste sinon la valeur est corrigée de la façon suivante : volume stock - quantité en stock.

merci d'avance.

Moutchec.

Bonjour,

Une piste,avec IIf() :

With .TxtB_Quantite_ES
    VarQte_Compare = IIf((CLng(.Value) + VarQte_Stock) <= Lbl_Volume_Stock, CLng(.Value), Lbl_Volume_Stock - VarQte_Stock)
End With

avec If Then Else :

With .TxtB_Quantite_ES
    If (CLng(.Value) + VarQte_Stock) <= Lbl_Volume_Stock Then
        VarQte_Compare = CLng(.Value)
    Else
        VarQte_Compare = Lbl_Volume_Stock - VarQte_Stock
    End If
End With

Il est préférable d'utiliser le second code car la fonction IIf() teste les deux valeurs de retour (True et False)

Bonjour,

les deux marchent bien et honnêtement, je préfère avec iif!!!

je vois pourquoi mon code plantait et restait en rouge.

sincères remerciements.

Moutchec.

Re,

Afin de bien comprendre la différence entre ces deux codes qui retournent pour ainsi dire la même valeur.

Avec IIf() les deux valeurs de retours sont évaluées même si ce n'est que la première qui sera retournée par la fonction dans l'exemple ci-dessous et comme il y a évaluation des deux, le code est légèrement plus lent, si il n'y a que quelques IIf() ça va mais il ne faut pas en utiliser de trop dans le code si on cherche la rapidité :

Sub TestIIf()

    Dim Valeur1 As Integer
    Dim Valeur2 As Integer

    Valeur1 = 10
    Valeur2 = 20

    'ici, une erreur sera produite car les deux valeurs de retour sont évaluées !
    MsgBox IIf(Valeur1 < Valeur2, Valeur2 - Valeur1, Valeur1 / 0)

End Sub

Sub TestIFThenElse()

    Dim Valeur1 As Integer
    Dim Valeur2 As Integer

    Valeur1 = 10
    Valeur2 = 20

    'ici, l'erreur n'est pas relevée car seule la 1ère valeur est évaluée et retournée !
    If Valeur1 < Valeur2 Then
        MsgBox Valeur2 - Valeur1
    Else
        MsgBox Valeur1 / 0
    End If

End Sub

merci pour ces explication.

très instructif!.

Rechercher des sujets similaires à "aide corriger code textbox"