Format TextBox, ComboBox... dynamique

Spitnolan08

XLDnaute Barbatruc
Hello !

Salut à tous les passionnés qui ne décrochent jamais, même pendant les fêtes!

Sur le forum on trouve plein de discussions sur les formats des textbox et autres mais uniquement dans le cas, ou alors je n’ai pas bien cherché, où on applique le format à une textbox déjà renseignée.

Après de nombreuses recherches je viens, avant de poser la question sur ce forum, de trouver la solution pour modifier le format d’une textbox en semidynamique. Je la livre donc à ceux que ça pourrait intéresser…

L’évènement textbox_change n’est d’aucune utilité car il ne prend en compte que le dernier caractère saisi.

Le code suivant ne fonctionne donc pas :

Private Sub TextBox1_Change()
TextBox1 = Format (TextBox1, "# ##0.00")
End Sub

Il faut utiliser l’évènement TextBox_Exit avec un code du type :

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
TextBox1 = Format(TextBox1, "# ##0.00")
End Sub

Ainsi dès que le focus change de contrôle le format est appliqué à la nouvelle saisie.
Ceci dit si quelqu’un sait le faire en dynamique total, c’est à dire de façon immédiate au fur et à mesure de la saisie ce serait encore mieux…

Un accroc a-t-il une ID ? Par exemple Thierry, sans vouloir vexer personne !


Par ailleurs, pour info, ce type de format (# ##0.00) fonctionne tant que les nombres concernés sont inférieurs à 999 999. Au-delà il faut saisir : # ### ##0.00 jusqu’à 999 999 999 et ainsi de suite…

Et toujours ma question préférée pour les pros de VBA :
https://www.excel-downloads.com/threads/listes-deroulantes-integrees-en-cascade.72509/


Bonne année à tous et un très bon réveillon
A ciao et à bientôt
 

jp14

XLDnaute Barbatruc
Re : Format TextBox, ComboBox... dynamique

Bonjour

Une piste :
Vérifier si le texte est numérique ( isnumeric)
ensuite calculer la longueur du nombre rentrée

si la longueur est égale à 1 on sort
si la à 2 on sort
si la longeur est égale à 4 on applique le format

et ainsi de suite
Bonne fêtes
JP
 

Spitnolan08

XLDnaute Barbatruc
Re : Format TextBox, ComboBox... dynamique

Merci jp14,

si j'ai bien compris ta propal : il faut connaître à l'avance la longueur de la chaine numérique : pas trop cool!?!

Je pencherais plus pour un code qui permette de mettre le focus en tête de chaine dans le textbox par exemple. Puisque manuellement on peut sélectionner un caractère plutôt qu'un autre. Mais c'est un truc pour les costauds genre Barbatruc : moi je n'ai que de petits bras et je fais avec les moyens du bord et là je sèche.

Mais toutes les idées sont bonnes à étudier...;)
Joyeux Noël!
euh non, c'est déjà passé...
 

Spitnolan08

XLDnaute Barbatruc
Re : Format TextBox, ComboBox... dynamique

Hi jp14, Bébère et le forum!

Super!
Désolé Bébère mais c'est jp14 qui a retenu mon attention : je suis parti de son code, certes un peu déroutant à première vue, et j'ai ajouté une deuxième TextBox à fond transparent sur la première. C'est celle ci qui recueille le nombre formaté et permet l'affichage en format dynamique.

Il s'agit là d'une astuce que d'autres réussiront probablement à améliorer pour éviter l'utilisation de 2 contrôles à la place d'un mais ça marche!!!!

Merci à tous les 2 et bravo!
Buena note!
 

Pièces jointes

  • Formatdynamique TB ou CB....xls
    33.5 KB · Affichages: 156

Spitnolan08

XLDnaute Barbatruc
Re : Format TextBox, ComboBox... dynamique

Salut à tous,

Il y a un hic! :cool: Si on souhaite corriger la saisie en cours le code ne fonctionne plus.

J'ai ajouté un complément de code dans le fichier joint mais celui ci ne fonctionne que si on supprime la totalité de la saisie pour repartir à zéro...

Il se fait tard, je me couche
 

Pièces jointes

  • Formatdynamique TB ou CB...2.xls
    33.5 KB · Affichages: 189

jp14

XLDnaute Barbatruc
Re : Format TextBox, ComboBox... dynamique

Bonjour

Quand on introduit un nombre dans un "texbox" les carractères sont ajoutés de la gauche vers la droite.
Si on formate le nombre au cours de la saisie on rajoute soit des espaces soit une virgule avec des zéros et de fait le nouveau chiffre introduit se trouvera après les zéros.

Pour résoudre ce problème il faut créer un programme identique à un éditeur de texte avec les fonctions d'insertion et de substitution.

Une solution qui serait beaucoup plus simple consisterait à mémoriser le nombre sans formatage et de rajouter un bouton pour modifier.
En cliquant sur le bouton on fait apparaître un "textbox" qui contient la valeur non formatée, l'opérateur pouvant alors la modifier.

Bonne année

JP
 

Discussions similaires

Réponses
15
Affichages
507
Réponses
3
Affichages
346

Statistiques des forums

Discussions
312 215
Messages
2 086 337
Membres
103 191
dernier inscrit
camiux