Additionner plusieurs textbox dans une autre

CHAVASSET

XLDnaute Nouveau
Bonjour,

Je suis nouveau sur le forum et assez novice en vba. Je suis en train de créer un formulaire assez simple en vba dans lequel je souhaite qu'une textbox ( Texttbox40)affiche la somme de 4 autres textbox (11+13+14+15)
Et je ne comprend pas le résultat ressemble plus à une concaténation irrationnelle...

Merci d'avance:

Voici mon code :
'Je déclare qu'on ne peux saisir qu'un nombre dans la textbox11
Private Sub TextBox11_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 46 And KeyAscii < 58)) Then
KeyAscii = 0
End If
Call GetSumofTbs
End Sub

'Je déclare qu'on ne peux saisir qu'un nombre dans la textbox13
Private Sub TextBox13_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 46 And KeyAscii < 58)) Then
KeyAscii = 0
End If
Call GetSumofTbs
End Sub

'Je déclare qu'on ne peux saisir qu'un nombre dans la textbox14
Private Sub TextBox14_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 46 And KeyAscii < 58)) Then
KeyAscii = 0
End If
Call GetSumofTbs
End Sub

'Je déclare qu'on ne peux saisir qu'un nombre dans la textbox15
Private Sub TextBox15_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 46 And KeyAscii < 58)) Then
KeyAscii = 0
End If
Call GetSumofTbs
End Sub

'Je veux que la somme s'affiche dans la textbox40
Sub GetSumofTbs()
On Error Resume Next
Me.TextBox40.Value = (Me.TextBox11.Value * 1) + (Me.TextBox13.Value * 1) + (Me.TextBox14.Value * 1) + (Me.TextBox15.Value * 1)
End Sub
 

patricktoulon

XLDnaute Barbatruc
Bonjour
le probleme avec les evenement keypress et keydown des textboxs c'est que la valeur est vraiment pris en compte que lors du key up
autrement dit je tape 1 puis 2 puis 3 quand je taperais 2 j'aurais 1 quand je taperais 3 j'aurais 12

parti de la, on peut changer son fusil d'epaule et utiliser l'evenement change dont avec lui on a la valeur
seul petit bemol pour interdire les autre touches que numeric on a pas le retour il faut alors astucer
comment ?
touit simplement en testant si le textbox est numeric ou pas
si c'est non on enleve le dernier caractere

pour la somme on va pas chercher bien loin "Sum"
de la meme facon que tu lance ton calcul dans ton code (une fonction commune ) je fait la meme chose pour le control isnumeric
du coup je fait le tout dans une seule fonction commune ( control et calcul)
du coup ca donne des grands coup de scalpel dans le code et il n'en reste plus beaucoup ( l'essentiel)
resultat
'------------------------------------------------------------------------------------------
Private Sub TextBox11_Change(): only_numeric TextBox11: End Sub
Private Sub TextBox13_Change(): only_numeric TextBox13: End Sub
Private Sub TextBox14_Change(): only_numeric TextBox14: End Sub
Private Sub TextBox15_Change(): only_numeric TextBox15: End Sub

Private Sub only_numeric(txt)
If Not IsNumeric(txt.Value) Then txt.Value = Left(txt.Value, Len(txt.Value) - 1)
TextBox40 = WorksheetFunction.Sum(Val(TextBox11.Value), Val(TextBox13.Value), Val(TextBox14.Value), Val(TextBox15.Value))
End Sub
'--------------------------------------------------------------------------------------------

conclusion a chaque fois que tu modifie un des textboxs le calcul se met a jours en meme temps
 

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 769
Membres
101 816
dernier inscrit
Jfrcs