Excel VBA Textbox
Bonjour,
Autant que débutante en VBA, j'ai besoin de votre aide
Comment je fais pour définir le format d'un textbox en numérique ?
Merci d'avance
Salut
peut être comme ca
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57, 8, 46
Case Else
KeyAscii = 0
End Select
End SubBonjour,
Tu ne définis pas le format d'une TextBox en numérique !
Comme tous les contrôles MS.Forms qui acceptent des valeurs, ces valeurs sont de types texte. Si le nom de TextBox l'indique directement, il en est de même pour les ListBox, ComboBox, les libellés de Label... C'est ainsi par définition.
La TextBox (comme les autres contrôles) ne prend pas un format numérique, toute valeur qui lui est affectée est nécessairement de type String. Mais cette valeur texte peut être mise en forme selon un format numérique, et la TextBox l'accepte parce que c'est du texte. Mieux même, toute valeur affectée à la TextBox devient du texte (elle est automatiquement convertie... sinon serait rejetée pour incompatibilité de type).
Tu mets en forme une chaîne texte au moyen de la fonction Format (elle fonctionne à peut près comme la fonction TEXTE dans le tableur). Il faut savoir que toute valeur renvoyée par la fonction Format est nécessairement du texte.
Cela peut rester transparent, si tu affectes un nombre brut (8, 26, 164...) : ce sera du texte tant qu'il est dans la TextBox, mais que tu l'en sortes pour l'affecter à une cellule, Excel se chargera de la conversion inverse... Mais cela ne fonctionne pas ainsi à tous les coups ! Tu mets un format monétaire, ou un format avec séparateur de milliers, là elle ne se fera pas, ce sera à toi d'opérer la conversion. Il en est souvent de même pour les dates, qu'il faut convertir en dates (alors que tu as l'impression que cela en est déjà, mais si tu laisses VBA le faire automatiquement, s'il reconnaît une date, il la convertira au format américain en substituant mois et jour si leur valeur le permet, convertir force ici VBA à le faire selon les paramètres régionaux du système).
Tu pourras en principe à peut près toujours mettre en forme comme tu le souhaites les valeurs affichées dans une TextBox. Mais il ne faut jamais perdre de vue, lorsque tu les en sors qu'il s'agit de texte, et qu'il conviendra éventuellement le traiter pour retrouver la valeur initiale.
Cordialement.
Merci beaucoup MFerrand pour tes explications !