VBA : calculer 2 valeurs

ultra_v

XLDnaute Occasionnel
bonsoir ,

je voulais calculer deux valeurs text1 (numérique ) * text2 ( pourcentage ) , mais j'ai pas réussi ça me donne un message d'erreur je ne sais pas qu'est ce que j'ai raté

la valeur insérer par l'usager sur textbox doit étre impérativement en pourcentage

Exemple : si je mets 20 ça veut dire 20%

Merci d'avance
 

Pièces jointes

  • Ultra_v_v01.xlsm
    22 KB · Affichages: 60
  • Ultra_v_v01.xlsm
    22 KB · Affichages: 65
  • Ultra_v_v01.xlsm
    22 KB · Affichages: 64

job75

XLDnaute Barbatruc
Re : VBA : calculer 2 valeurs

Bonsoir ultra_v,

est ce que ma demande est difficile !!!

Bah... Virez le module de classe et autres macros et mettez dans l'USF :

Code:
Private Sub TextBox1_Change()
TextBox1 = IIf(Val(TextBox1), Val(TextBox1), "")
TextBox4 = Val(TextBox1) * Val(TextBox2) / 100
End Sub

Private Sub TextBox2_Change()
TextBox2 = IIf(Val(TextBox2), Val(TextBox2), "")
TextBox4 = Val(TextBox1) * Val(TextBox2) / 100
End Sub

Fichier joint.

A+
 

Pièces jointes

  • USF(1).xls
    38 KB · Affichages: 31
  • USF(1).xls
    38 KB · Affichages: 34
  • USF(1).xls
    38 KB · Affichages: 36
Dernière édition:

job75

XLDnaute Barbatruc
Re : VBA : calculer 2 valeurs

Re,

La version précédente ne permet d'entrer que des nombres entiers.

Pour pouvoir entrer des nombres décimaux utiliser :

Code:
Private Sub TextBox1_Change()
Dim t$
t = Replace(TextBox1, ",", ".")
TextBox1 = IIf(Val(t), Val(t), "") & IIf(Right(t, 1) = ".", ".", "")
TextBox4 = Val(t) * Val(Replace(TextBox2, ",", ".")) / 100
End Sub

Private Sub TextBox2_Change()
Dim t$
t = Replace(TextBox2, ",", ".")
TextBox2 = IIf(Val(t), Val(t), "") & IIf(Right(t, 1) = ".", ".", "")
TextBox4 = Val(Replace(TextBox1, ",", ".")) * Val(t) / 100
End Sub
On peut utiliser le point ou la virgule comme séparateur décimal.

Fichier (2).

A+
 

Pièces jointes

  • USF(2).xls
    40.5 KB · Affichages: 37
  • USF(2).xls
    40.5 KB · Affichages: 39
  • USF(2).xls
    40.5 KB · Affichages: 35

Docmarti

XLDnaute Occasionnel
Re : VBA : calculer 2 valeurs

Re Bonjour à tous.


J'ai modifié cette procédure pour qu'elle filtre les entrées du clavier
et permette les nombres décimaux et négatifs si désiré.

VB:
`
Private Sub tbn_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'à l'appui sur une touche du clavier
If KeyAscii = 27 Then Exit Sub 'permet l'usage de la touche [Échap]

'si tes textboxes ne comportent que des nombre entiers. AccepteNombreDecimal = False

AccepteNombreDecimal = True

'Accepte un point seulement ou une virgule seulement comme separateur decimal

If (KeyAscii = 46 Or KeyAscii = 44) And AccepteNombreDecimal = True Then
 If InStr(tbn.Text, ",") + InStr(tbn.Text, ".") = 0 Then
  Exit Sub
  Else
  KeyAscii = 0
  Exit Sub
 End If
End If

'Accepte le signe négatif si en position 0 seulement
 
 If KeyAscii = 45 Then
 If tbn.SelStart > 0 Then
  KeyAscii = 0
  Exit Sub
  Else
  'tbn.SelStart = 0 ' Donc ca va. le signe negatif est accepte
  Exit Sub
 End If
 End If
 
'Puis efface tout autre caractère que {0, 1, 2, 3, 4, 5, 6, 7, 8 et 9)

If (KeyAscii < 48 Or KeyAscii > 57) Then
KeyAscii = 0
End If
End Sub


Docmarti
 

Pièces jointes

  • Ultra_v_v01 (4Test).xlsm
    22.3 KB · Affichages: 44

job75

XLDnaute Barbatruc
Re : VBA : calculer 2 valeurs

Bonjour ultra_v, Docmarti, le forum,

Ma version (2) n'acceptait pas les nombres < 1 (0,123 ou négatifs).

Cette version (3) fonctionne pour tous les cas :

Code:
Private Sub TextBox1_Change()
Dim t$
t = Replace(TextBox1, ",", ".")
t = IIf(Val(t & 1), t, "")
TextBox4 = Val(t) * Val(Replace(TextBox2, ",", ".")) / 100
If IsNumeric(",1") Then t = Replace(t, ".", ",")
TextBox1 = t
End Sub

Private Sub TextBox2_Change()
Dim t$
t = Replace(TextBox2, ",", ".")
t = IIf(Val(t & 1), t, "")
TextBox4 = Val(Replace(TextBox1, ",", ".")) * Val(t) / 100
If IsNumeric(",1") Then t = Replace(t, ".", ",")
TextBox2 = t
End Sub
A+
 

Pièces jointes

  • USF(3).xls
    40 KB · Affichages: 42
  • USF(3).xls
    40 KB · Affichages: 45
  • USF(3).xls
    40 KB · Affichages: 45

Discussions similaires

Réponses
22
Affichages
608

Statistiques des forums

Discussions
312 115
Messages
2 085 453
Membres
102 890
dernier inscrit
selkis