VBA : Finir la saisie d'une tbox avant que Tbox_change s'active

Résolu/Fermé
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 - 28 mai 2013 à 14:10
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 - 7 juin 2013 à 13:01
Bonjour,

J'espère que vous allez bien!
Petite question : J'ai une macro sur un tbox_change mais quand j'entre la donnée dans la tbox, il ne me laisse pas terminer ma saisie qu'il lance la macro..

ça doit être un truc de débutant mais je ne vois pas.. Quelqu'un à une idée?

 Sub checkbox_Tàfacturer_change()

If CheckBox_Tàfacturer.Value = True And CheckBox1.Value = True Then
TBox_Tàfacturer.Visible = True
If Tbox_Tinclus = "" Then
Tbox_Tinclus.Value = 0
End If
TBox_Tàfacturer.Value = ((Tbox_Tcouttotal.Value) - (Tbox_Tinclus.Value))
End If
If CheckBox_Tàfacturer.Value = True And CheckBox2.Value = True Then
TBox_Tàfacturermpmp.Visible = True
If Tbox_Tinclusmpmp = "" Then
Tbox_Tinclusmpmp.Value = 0
TBox_Tàfacturermpmp.Value = Tbox_Tcoutmpmp.Value - Tbox_Tinclusmpmp.Value
End If
If Tbox_Tcouttotal.Value - Tbox_Tinclus.Value - TBox_Tàfacturer.Value > 0 Then
MsgBox " BALANCE DE " & Tbox_Tcouttotal.Value - Tbox_Tinclus.Value - TBox_Tàfacturer.Value & " " & "$" & " " & "À FACTURER"

End If
End If
End Sub





Exemple : je veux écrire 450.00 dans ma tbox..quand je commence à taper à 45 la msgbox apparait.. je dois faire ok et finir ma saisie..

merci à l'avance de votre précieuse aide
Mélanie

4 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
29 mai 2013 à 09:47
Bonjour,

Si VBA excel : Sub Tbox_Tcouttotal_LostFocus() n'existe pas


saisie a valider par enter:
Private Sub Tbox_Tcouttota_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

End Sub

a voir
1
.Grincheux. Messages postés 211 Date d'inscription vendredi 10 mai 2013 Statut Membre Dernière intervention 22 octobre 2016 84
Modifié par .Grincheux. le 28/05/2013 à 16:45
Bonjour Mélanie,

Et si tu adaptais ta macro pour qu'elle se lance sur TextBox_LostFocus() au lieu de TextBox_Change() ?

Si tu as besoin que la macro ne s'exécute que lorsque le contenu de la textbox a été modifié, tu peux ajouter un test au début du TextBox_LostFocus().

Exemple :

Dim change As Boolean

Private Sub TextBox1_Change()
    change = True  'Tu notes dans une variable que le contenu a changé
End Sub

Private Sub TextBox1_LostFocus()
    If change Then 
        MsgBox TextBox1.Value
        'Mets ici ta macro
        change = False   'Tu remets la variable à FAUX 
    End If
End Sub


Bonne journée !
0
.Grincheux. Messages postés 211 Date d'inscription vendredi 10 mai 2013 Statut Membre Dernière intervention 22 octobre 2016 84
Modifié par .Grincheux. le 29/05/2013 à 10:13
Précision : cette macro ne fonctionne qu'avec une TextBox ActiveX.
Pour une TextBox de formulaire, il faut utiliser la fonction TextBox_AfterUpdate(...)
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
28 mai 2013 à 20:01
Bonjour Grincheux

Je te remercie pour ta réponse bien gentil à toi de vouloir m'aider j'apprécie beaucoup.

ça ne fonctionne pas.. peut-être aie-je mal fais quelque chose..
J,ai mis dans option explicit
Dim change As Boolean


Ensuite j'ai mis la macro suivante :


Sub Tbox_Tcouttotal_change()
change = True
End Sub

Sub Tbox_Tcouttotal_LostFocus()
If change Then
Tbox_Tcoutmpmp.Visible = True
Label5.Visible = True
Tbox_Tcoutmpmp.Value = CDbl(Tbox_Tcouttotal.Value) * totalpmpbabv / 1000
change = False
End If
End Sub

as-tu une idée de ce que j'ai fait de mal?
il ne semble pas voir le lostFocus ..dans le pas à pas.. il arrête avant cette macro

merci encore
Mélanie
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
7 juin 2013 à 13:01
Bonjour F894009 et Grincheux

Merci pour vos solutions elles fonctionnent toutes les deux



Mélanie
0