J'ai de nouveau un problème qui va vous sembler simplissime mais tant pis pour mon ego.
Dans un userform avec plusieurs textbox, je voudrais qu'à la fin de la saisie, le format du nombre saisie soit :
- pour certaines textbox : un nombre avec séparateur de milliers et 2 décimales.
- pour d'autres : un pourcentage (l'utilisateur saisie 4.3, il apparaît 4.30 %)
Pour cela, j'ai fait respectivement :
Private Sub Text_B_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Text_B.Text = Format(Text_B.Text, "#,##0.00")
End Sub
et :
Private Sub Text_taux_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Text_taux.Text = Format(Text_taux.Text, "0.00")
Text_taux.Value = Text_taux.Value / 100 'pour que n'apparaisse pas 430 % au lieu de 4.30 %
Text_taux.Text = Format(Text_taux.Text, "0.00%")
End Sub
Mon problème est que ça ne marche pas quand j'utilise le point du pavé numérique et non la virgule. Or, les utilsateurs auront le reflexe d'utiliser le pavé numérique et non celui de mettre une virgule.
Merci pour ta réactivité.
Je vais encore un peu abuser mais comment peut-on faire ça simplement ?
Je pensais me lancer dans des boucles et if mais ca me paâît bien compliqué...
Merci à tous pour votre aide. JNP, ta solution marche parfaitement.
Je manque d'expérience en vba, d'où le fait que certaines évidences ne me sautent pas aux yeux !!
Maintenant, je veux récupérer cette donnée sous Excel. En faisant : ActiveCell.Value = TextBox1.Value
La valeur s'affiche correctement mais Excel la considère comme du texte et non comme un nombre. (Si je sélectionne cette cellule avec d'autres cellules voisines, la somme ne s'affiche pas dans la barre en bas à droite ; de même, l'alignement par défaut est à gauche). Cela est vrai même si au préalable, je définis le format de ma cellule comme "Nombre".
Comment s'explique cela et comment peut-on y remédier ?
Désolé, quand j'ai dit bêtement, ce n'était pas à ton encontre, mais plutôt que ma réponse pouvait paraître bête ...
En ce qui concerne ton nouveau problème, logiquement c'est l'inverse, il faut que tu fasses un Replace de la virgule par le point, car VBA raisonne en anglais et non en préférences locales ...
Bon courage