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,
Cordialement,
Edit: Bonjour Theze,
Merci beaucoup pour vos réponse, c est parfait