VBA : calculer 2 valeurs

  • Initiateur de la discussion Initiateur de la discussion ultra_v
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

Dernière édition:
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

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

L
Réponses
1
Affichages
1 K
L
A
Réponses
7
Affichages
2 K
Compte Supprimé 979
C
P
  • Question Question
Réponses
1
Affichages
3 K
Patrosso
P
K
Réponses
38
Affichages
10 K
kinders59
K
I
Réponses
5
Affichages
2 K
I
Réponses
39
Affichages
6 K
Retour