Format d'une TextBox dans une UserForm

dgeo27

XLDnaute Junior
Bonjour,
J'ai un petit problème, j'ai réussis à crée un code pour que sa modifie le format en "euro" d'une TextBox.
Quand je clic sur la TextBox, je rentre un chiffre je fait "Enter" et ok le code fonctionne il change le format...

Mais le problème que j'ai c'est que j'ai aussi un second userform qui s'ouvre via un bouton sur le 1er userform.
Dans le second, j'ai une listbox avec donc la liste de mes produit. Une fois que je clic sur un d'entre eux il me le copie dans la textbox de l'userform1.
Et c'est ici que le format ne change pas ... le textbox reste en format classique...

Le code est placé dans l'userfom principal.

Private Sub TextBox19_AfterUpdate()
With TextBox19
If IsNumeric(TextBox19.Value) Then
.Value = format(.Value, "# ##0.00 EURO")
.ForeColor = IIf(.Value < 0, vbRed, vbRed)
Else
MsgBox "Erreur de saisie", 64, "Saisie incorrecte"
End If
End With
End Sub


Avez vous une idée ? merci
 

patricktoulon

XLDnaute Barbatruc
re
et oui le soucis avec les événement dont le"AfterUpdate()" c'est qu'il ont un mode de fonctionnement particulier
en ce qui concerne cet événement il se produit quand tu a tapé quelque chose dedans avec ton clavier il a donc pris le focus
(c'est donc le activecontrol) ET!!!! quand il perd le focus

maintenant si tu injecte par vba soit la valeur de ta listbox ou une valeur quelconque l’événement afterupdate n'est pas déclenché

pourquoi crois tu qu'il y a un événement change et un afterupdate() si les deux devaient faire la même chose dans toutes circonstances

le problème avec l’événement change c'est qu'il se produit a chaque touche tapée alors pour la listbox c'est ok on prend change pour le taper de touche on prend afterupdate

si tu utilise les deux mode d’écriture dans ton tbx , il te faudra astucer dans change en mettant une condition sur le focus pour qu'il te formate pas a chaque touche et qu'il le fasse que quand il perd le focus et inversement pour l’écriture a partir de la listebox
 

Lone-wolf

XLDnaute Barbatruc
Bonjour à tous

@dgeo27: si tu mettrais le fichier joint, ça serait beaucoup plus simple. Nous on ne sais pas comment est fait le formulaire et on est pas devins.

Un autre exemple

Dim rw

With Feuil1
rw = Application.Match(le texte à rechercher, .Columns(n° colonne de recherche), 0)

TextBox19 = Format(.Cells(rw, colonne montant), "# ##0.00 EURO")
End With

Et il y a encore cette ligne IIf(.Value < 0, vbRed, vbRed), donc si inférieur à zéro c'est rouge, sinon c'est rouge?! :confused:o_O

Et pour obligé la saisie de valeurs numériques, supprime else Msgbox xxxxxx

Private Sub TextBox19_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("1,2,3,4,5,6,7,8,9,0", Chr(KeyAscii)) = 0 Then
KeyAscii = 0
MsgBox "Veuillez saisir un nombre.", , "AVVERTISSEMENT"
End If
End Sub
 
Dernière édition:

Discussions similaires

Réponses
15
Affichages
484

Membres actuellement en ligne

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth