Format imposé dans Textbox

Bonjour,

Je sais que plein de sujets ont déja été postés, mais je ne trouve pas la solution:

Je souhaite imposer un format lors du remplissage d'une textbox dans un formulaire,

j'ai tenté: TextBox_CoutRep.Value = Format(TextBox_CoutRep.Value, "#,##0.00 €")

dans l'évènement Private Sub UserForm_Initialize(),

mais ça n'empêche pas l'utilisateur de rentrer du texte ou n'importe quoi d'autre dans la textbox.

Comment faire?

Bonjour,

2 solutions

utilise

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' traitement ici des entrées
End sub

ou bien supprime ta userform et dédie un onglet à la saisie ... tu auras toutes les fonctionnalités d'une feuille excel pour contrôler les données

OK merci,

je vais étudier cela et voir ce que j'arrive à faire.

Bon, cette solution me semble compliquée:

j'ai plein de textbox différentes avec pour chaque des formats différents (date, téléphone, monnaie, code postal...), alors si rien que pour avoir un chiffre avec une virgule, il faut galérer à ce point, j'ai pas fini.

Je vais voir si je peux essayer de prendre le pb sous un autre angle.

PS: Supprimer l'userform et le remplacer par un onglet n'est pas non plus une solution valide dans ce contexte précis (j'ai en fait, 4 USF pour le moment, qui reprennent, complètent ou modifient des données se recoupant de plusieurs bases de données croisées).

Merci tout de même pour la réponse.

j'ai plein de textbox différentes avec pour chaque des formats différents (date, téléphone, monnaie, code postal...), alors si rien que pour avoir un chiffre avec une virgule, il faut galérer à ce point, j'ai pas fini.

Bon courage !

PS: Supprimer l'userform et le remplacer par un onglet n'est pas non plus une solution valide dans ce contexte précis (j'ai en fait, 4 USF pour le moment, qui reprennent, complètent ou modifient des données se recoupant de plusieurs bases de données croisées).

Je comprends que vu l'investissement que tu as déjà fait, prendre un virage à 180° n'est pas facile ! Je note une fois de plus la grande difficulté d'utiliser les userform qui n'ont pas les mêmes fonctionnalités qu'une feuille excel quant à la validation et la mise en forme des données (et cela m'incite à poursuivre en dehors des userform que je réserve à des cas très spécifiques).

bon j'ai trouvé une solution alternative qui consiste tout simplement à mettre:

Private Sub TextBox_CoutRep1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

TextBox_CoutRep1.Value = Format(TextBox_CoutRep1.Value, "#,##0.00 €")

End Sub

Cela n'impose pas de format, met applique le format déterminé dès que l'on quitte la textbox.

Es-tu sûre d'avoir une valeur à l'arrivée et non du texte ?

Je suis un peu déçu qu'on s'arrête en si bon chemin sur un sujet assez classique.

D'abord je ne suis pas certain, que la réponse soit la plus satisfaisante car pour moi cela va renvoyer une "valeur-textuelle".

Ensuite, je pense qu'il faudrait se pencher sur le sujet de faire une macro générique qui contrôlerait au fur et a mesure de la frappe que les caractères entrés soient conformes à un "pattern".

A moins que ceci existe déjà et que nous n'ayons pas assez cherché/fouillé dans ce que certains ont déjà produits.

En tous cas ce serait une belle amélioration des userform qui pour moi restent quand même assez fastidieuses dans leur mise en oeuvre.

par Steelson » 6 avril 2019, 17:50

Es-tu sûre d'avoir une valeur à l'arrivée et non du texte ?

Oui j'en suis certaine, je vient de vérifier (il faut savoir, que tout arrive dans des listobjects où les mises en formes sont préprogrammées, du coup c'est peu être pour ça que cela fonctionne coorectement).

Et pour inciter les utilisateurs à entrer le bon format je rajoute à l'initialisation du userform:

Textbox_date.value = "xx/xx/xxxx"

Puis lorsque l'on entre dans le textbox en question:

Private Sub TextBox_Date_Enter()

If TextBox_Date.Value = "xx/xx/xxxx" Then TextBox_Date.Value = ""

End Sub

Rechercher des sujets similaires à "format impose textbox"