Condition sur calcul

Bonjour à tous,

je dois faire un calcul en VBA, via des textbox, jusque la pas trop de probléme,

    TextBox125.Value = CDbl(TextBox1.Value) + CDbl(TextBox3.Value) + CDbl(TextBox37.Value) + CDbl(TextBox39.Value) + CDbl(TextBox73.Value) + CDbl(TextBox75.Value)

sauf qu il est possible que dans une textbox ce ne soit pas un chiffre mais la lettre A, donc je pensais mettre une condition

if textbox1 = "A" then
textbox1 = 0
end if

sauf qu'il faudrais que je mette cette condition à une 20aine de textbox... donc je me disais que l'un d entre vous pourrait éventuellement avoir une solutiuon B pour moi.

Et si je peux abuser... le calcul en question est sur plusieurs textbox évidement...

    TextBox125.Value = CDbl(TextBox1.Value) + CDbl(TextBox3.Value) + CDbl(TextBox37.Value) + CDbl(TextBox39.Value) + CDbl(TextBox73.Value) + CDbl(TextBox75.Value)
    TextBox129.Value = CDbl(TextBox5.Value) + CDbl(TextBox7.Value) + CDbl(TextBox41.Value) + CDbl(TextBox43.Value) + CDbl(TextBox77.Value) + CDbl(TextBox79.Value)
    TextBox133.Value = CDbl(TextBox9.Value) + CDbl(TextBox11.Value) + CDbl(TextBox45.Value) + CDbl(TextBox47.Value) + CDbl(TextBox81.Value) + CDbl(TextBox83.Value)
    TextBox137.Value = CDbl(TextBox13.Value) + CDbl(TextBox15.Value) + CDbl(TextBox49.Value) + CDbl(TextBox51.Value) + CDbl(TextBox85.Value) + CDbl(TextBox87.Value)

y aurait il aussi une solution pour raccourcir le code?

merci beaucoup

Bonjour,

Le mieux est d'interdire toutes lettres ou caractères non numérique.

Une piste avec une Sub de contrôle appelée par tous les TextBox (pour l'exemple ici, avec deux TextBox) :

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    Numerique TextBox1, KeyCode 'KeyCode passé par référence (par défaut dans VB)

End Sub

Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    Numerique TextBox2, KeyCode 'KeyCode passé par référence (par défaut dans VB)

End Sub

Sub Numerique(Txt As MSForms.TextBox, CodeCle As MSForms.ReturnInteger)

    Select Case CodeCle

        Case 9, 96 To 105
            'tabulations et chiffres donc ne rien faire...

        Case 110, 188
            'séparateur décimal
            If InStr(Txt, ",") > 1 Or InStr(Txt, ".") > 1 Then
                CodeCle = 0
                Exit Sub
            End If

            If Chr(46) <> Format(0, ".") Then
                CodeCle = 188
            End If

            If Chr(44) <> Format(0, ".") Then
                CodeCle = 110
            End If

        Case Else
            CodeCle = 0

    End Select

End Sub

Bonjour svbb,

sauf qu'il faudrais que je mette cette condition à une 20aine de textbox...

Disons que tu souhaite agir sur textbox 1 à 20:

For i = 1 to 20
 If Me.Controls("TextBox" & i) = "" Or (Not (IsNumeric("TextBox" & i)))Then
 Me.Controls("TextBox" & i) =Me.Controls("TextBox" & i)
 Else
 Me.Controls("TextBox" & i) = 0
 End If
Next i

Un exemple ci-joint,

6classeur1.xlsm (17.40 Ko)

Cordialement,

Edit: Bonjour Theze, , désolé, nos messages se sont croisés.

Merci beaucoup pour vos réponse, c est parfait

Rechercher des sujets similaires à "condition calcul"