Faire un calcul directement dans un textbox

Bonjour

Je voudrais faire un calcul directement dans une textbox (sans utiliser par d'autres textbox).

Exemple :

Taper le texte :123+20 dans le textbox et à la validation que cela donne le résultat.

D'avance merci

Bonjour,

Par exemple :

x = Evaluate(CStr(Me.TextBox1))

Peut-être?

Je débute !!!

Avec un code comme celui-ci ?

Private Sub TextBox1_AfterUpdate()

x = Evaluate(CStr(Me.TextBox1))

End Sub

le "x" sert à quoi?

Re-,

à rien, c'est juste pour l'exemple...

tu peux mettre directement le résultat dans un label, dans une cellule...

ou un msgbox :

Private Sub TextBox1_AfterUpdate()
MsgBox Evaluate(CStr(Me.TextBox1))
End Sub

Merci Cousinhub pour ton retour

Ce que je veux, c'est à la validation de l'opération par exemple 123+30 dans le textbox1, le résultat 153 s'affiche dans à la place toujours dans le textbox1

le code:

Private Sub TextBox1_AfterUpdate()

TextBox1.Text = Evaluate(CStr(Me.TextBox1))

End Sub

Ne marche pas

Merci

Bonjour

Bonjour à tous

Un essai à tester avec les 4 opérations de base : + - * /

C'est pour le fun ?

Bye !

21classeur1-v1.xlsm (20.95 Ko)

Bonjour GMB et merci

Votre code marche sur votre fichier

Par contre quand je fais un copier/coller sur mon fichier test pour ma Textbox 2 cela ne marche pas

Voir fichier joint

7test.xlsm (16.07 Ko)

Il faut que le focus du textbox passe sur un autre contrôle après la validation.

D'où la présence nécessaire d'un bouton de validation masqué qui ne sert à rien d'autre !

Curieux non ?

Bye !

15test-v2.xlsm (23.65 Ko)

Merci GMB

je testerai cela demain sur mon fichier principal

Est ce que ce serait trop demander de m'expliquer ce codage ligne par ligne svp? je débute et je suis loin d'avoir cerné la philosophie du VBA

Merci en tout cas

Slts

Option Explicit

Dim sg$, i&, t1!, t2!

Private Sub TextBox2_AfterUpdate()

sg = ""

For i = 1 To Len(TextBox2)

If Mid(TextBox2, i, 1) = "+" Then

sg = "+"

ElseIf Mid(TextBox2, i, 1) = "-" Then

sg = "-"

ElseIf Mid(TextBox2, i, 1) = "*" Then

sg = "*"

ElseIf Mid(TextBox2, i, 1) = "/" Then

sg = "/"

End If

If sg <> "" Then

t1 = Split(TextBox2, sg)(0)

t2 = Split(TextBox2, sg)(1)

TextBox2 = Evaluate(t1 & sg & t2)

Exit Sub

End If

Next i

End Sub

Bonjour au forum!

Curieux non ?

Pas si curieux...

After = après UpDate "mise à jour"

Donc si on est en cours de saisie dans la textbox c'est qu'on a pas fini de mettre à jour...

On a fini de mettre à jour quand on sort, du coup il faut bien donner le focus à un autre Control... Sinon AfterUpdate n'est pas déclencher...

De mon coté je faisait juste : Textbox1.value = Evaluate(textbox1.value)... mais avec un deuxième TextBox sur le USF

@ bientôt

LouReeD

@LouReeD

Merci de l'explication.

Je me sens un peu moins bête.

Bye !

Merci Loo Reed

Curieux bien sure, j'aime comprendre et avec le VBA je crois qu'il va y avoir du boulot

ton code Textbox1.value = Evaluate(textbox1.value) fonctionne aussi s'il y a une 2° textbox sur le user et ça je ne l'avais pas compris

Ton code je l'avais compris

c'est celui de GMB qui m'intéresse

Slts

Bonjour toutes et tous

merci à toutes et tous les participant(es) pour ce(s) code(s)

vraiment pour le fun,! je me suis cru à l'école, pendant un cours instant lol

ci-joint

tous à vos craies !!!

note: des petits corrections s'imposent dessus encore

crdlt,

André

ztestcalcul2

Le problème c'est qu'un de vos élèves a fait une plaisanterie !

Il a effacé le tableau et point de code en vue !

@ bientôt

LouReeD

Rapide ! Andre13 !

@ bientôt

LouReeD

Le problème c'est que vous obtenez une erreur avec : 5+10-6/3 !

Avec seulement EVALUATE le résultat est de 13...

Alors que (5+10-6)/3 = 3

Donc EVALUATE l'emporte, non ?

Bravo à cusinhub pour Evaluate !

@ bientôt

LouReeD

Re,

Arf dommage

j'essaierai avec Evaluate AfterUpdate de la textbox, donc les signes ne correspondront plus sauf avec plusieurs concaténations de labels pour les signes je vais y réfléchir

bon il reste du taf

mercis en tout cas

crdlt,

André

Rechercher des sujets similaires à "calcul directement textbox"