opération dans textbox

wrap food

XLDnaute Occasionnel
Bonjour

J'ai récupère un code, que j'ai adapter, pour pouvoir effectuer des opération simple dans un textbox ( le nom du textbox est CONSIGNE)

Private Sub CONSIGNE_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
CONSIGNE.Value = Evaluate(CONSIGNE.Text)
'On Error Resume Next
'Range("BN45").Value = DENREE2.Value
End Sub

Mais cela ne fonction qu'avec les chiffres entiers.

Auriez-vous un solution pour que cela fonction avec des chiffres avec virgules..

par avance merci
 

wrap food

XLDnaute Occasionnel
Re : opération dans textbox

Bonjour
et merci pour vos réponses qui m'ont bien aidé....

Mais je me retrouve avec un autre problème maintenant.

Mes textbox fonctionnent bien à la première utilisation.

Mais lorsque je re-ouvre userform contenant les texbox , il y a bien les nombres correspondant aux cellules de chaque textbox
Mais l'opérateur ne peux pas faire de nouveau opération en partant des chiffres qui sont les texbox.

je mets en pièces jointes le début de mon fichier


Je continus a chercher, mais si vous aviez un debut de piste cela m'arrangerais.

Par avance merci de votre aide
 

Pièces jointes

  • Opération dans TEXTBOX'.xls
    59.5 KB · Affichages: 77
  • Opération dans TEXTBOX'.xls
    59.5 KB · Affichages: 76

laetitia90

XLDnaute Barbatruc
Re : opération dans textbox

re tous:):)

une classe sert seulement a simplifier .......beaucoup moins de lignes de code a ecrire

j'utilise egalement la proprietee TAG dans ton cas adresse de la cellule

comme je pense comprendre dans ton user tu as 15 box & non 5

je te refais un exemple avec 15 box pas plus de lignes de codes
attention je considere uniquement expression numerique dans toutes les boxs + point a la place de virgule

Code:
Private Sub cbx_KeyPress(ByVal k As MSForms.ReturnInteger)
  If k = 44 Then k = 46: If InStr("0123456789,.", Chr(k)) = 0 Then k = 0
 If Not IsNumeric(Mid(cbx, 1, SelStart) & Chr(k) & Mid(cbx, SelStart + 1)) Then k = 0
End Sub
 

Pièces jointes

  • class1.xls
    59.5 KB · Affichages: 113
  • class1.xls
    59.5 KB · Affichages: 108

wrap food

XLDnaute Occasionnel
Re : opération dans textbox

re bonjour
je suis désolé mais en faite , quand je veux mettre "+2.25 " dans n'importe quelle textbox, je n'ais que "+2" qui s'affiche.
impossible de mettre autre chose.
Si je valide avec la touche entré, je passe au textbox suivant.
Dans la cellule correspondant, j'ai l'ancien chiffre + 2 ( 2.75+2) .

Ai je oublier de faire quelque chose ou dois je modifier le code

Cdt
 

laetitia90

XLDnaute Barbatruc
Re : opération dans textbox

re tous :):)

je pense comprendre ce que tu veus faire sans passer par une textbox inter ....
assez "lourd a realiser sans passer par une usine a gaz!!!

bon!!! une approche brute sans trop simplifier si tu tapes + dans ta box apres le contenant tu rentres une valeur & valide par entrée cela devrait le faire

change le code de la classe par celui la ...on verra apres pour simplifier & optimiser

Code:
Public WithEvents cbx As MSForms.TextBox, x As Boolean, z
Private Sub cbx_Change()
On Error Resume Next
 If x = False Then Range(cbx.Tag) = cbx.Value Else Range(cbx.Tag) = CDbl(z) + CDbl(Right(cbx.Value, Len(cbx.Value) - 1))
End Sub

Private Sub cbx_KeyDown(ByVal k As MSForms.ReturnInteger, ByVal Shift As Integer)
 If k = 13 Then cbx = Range(cbx.Tag).Value: Range(cbx.Tag) = cbx.Value: cbx = Format(cbx, "0.00"): k = 0
 If k = 107 Then x = True: z = cbx.Value: cbx = ""
End Sub

Private Sub cbx_KeyPress(ByVal k As MSForms.ReturnInteger)
 If k = 44 Then k = 46: If InStr("0123456789,.+", Chr(k)) = 0 Then k = 0
End Sub

Private Sub cbx_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
x = False
End Sub
 

wrap food

XLDnaute Occasionnel
Re : opération dans textbox

Bonjour et merci de passer du temps sur mon problème.

cela fonctionne avec les chiffre entier mais pas avec les chiffres avec décimal, ce qui risque d'arriver très fréquemment

Mai si il y a une solution plus simple en passant par un textbox intermédiaire .
je suis preneur.

j'ai bien comprendre les codes que je mets en place et ce n'ai pas trop le cas là.....

encore merci de votre aide

cdt
 

laetitia90

XLDnaute Barbatruc
Re : opération dans textbox

re tous :):)
change le code classe par celui la



Code:
Public WithEvents cbx As MSForms.TextBox, x As Boolean, z
Private Sub cbx_Change()
 On Error Resume Next
 If x = False Then
 Range(cbx.Tag) = cbx.Value
 Else
 If cbx Like "*" & "-" & "*" Then Range(cbx.Tag) = CDbl(z) - CDbl(Right(cbx.Value, Len(cbx.Value) - 1))
 If cbx Like "*" & "+" & "*" Then Range(cbx.Tag) = CDbl(z) + CDbl(Right(cbx.Value, Len(cbx.Value) - 1))
 End If
End Sub

Private Sub cbx_KeyDown(ByVal k As MSForms.ReturnInteger, ByVal Shift As Integer)
 If k = 13 Then cbx = Format(Range(cbx.Tag).Value, "0.00"): Range(cbx.Tag) = cbx.Value: k = 0
 If k = 107 Or k = 109 Then x = True: z = cbx.Value: cbx = ""
End Sub

Private Sub cbx_KeyPress(ByVal k As MSForms.ReturnInteger)
 If k = 44 Then k = 46: If InStr("0123456789,.+-", Chr(k)) = 0 Then k = 0
End Sub

Private Sub cbx_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
x = False
End Sub

passer par une box inter plus simple egalement a mon avis!!!! regarderais vendredi pas le temps demain
 

Marc L

XLDnaute Occasionnel
Bonjour !


quand je veux mettre "+2.25 " dans n'importe quelle textbox, je n'ais que "+2" qui s'affiche.
En fait la puissante fonction Evaluate ne connait que le point comme séparateur décimal,
version US native oblige …

Donc il suffit d'alimenter les TextBox avec un point au lieu d'une virgule, démonstration :


VB:
Sub Demo()
    Const LF2 = vbLf & vbLf
    S$ = [TEXT(BN42,"0.00")]
    MsgBox [BN42].Value & LF2 & S & LF2 & [BN42].Value + 2.25 & LF2 & Evaluate(S & "+2.25")
End Sub
La variable S contenant la valeur de la cellule BN42 convertit au format natif avec un point …

_______________________________________________________________________________
Merci de cliquer sur J'aime ce post en bas à gauche de chaque message ayant aidé …

_______________________________________________________________________________
Je suis Paris, Charlie, Bruxelles, …


 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 259
Membres
103 167
dernier inscrit
miriame