Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment obliger une textBox à renvoyer un nombre

5 réponses
Avatar
Zit
Bonjour à tous
Voila mon soucis, j'utilise des textbox pour rentrer des nombres dans ma
macro.
Le problème est que lorsque je rentre des nombres décimaux avec le pavé
numérique, le point (132.15) fait "planter" ma macro.
Je suis donc obligé de saisir les décimaux avec des virgules (132,15), pff
galère.
Comment obliger ma textbox à ne reconnaître que des nombres, ou de modifier
mon point en virgule ?
Y a t il une âme charitable qui aurait une (ou plusieurs) solutions à me
proposer

5 réponses

Avatar
anonymousA
Bonjour,

p.e
If IsNumeric(TextBox1) then range("A1")Íbl(Txtbox1)

A+


Bonjour à tous
Voila mon soucis, j'utilise des textbox pour rentrer des nombres dans ma
macro.
Le problème est que lorsque je rentre des nombres décimaux avec le pavé
numérique, le point (132.15) fait "planter" ma macro.
Je suis donc obligé de saisir les décimaux avec des virgules (132,15), pff
galère.
Comment obliger ma textbox à ne reconnaître que des nombres, ou de modifier
mon point en virgule ?
Y a t il une âme charitable qui aurait une (ou plusieurs) solutions à me
proposer




Avatar
Michel Gaboly
Bonjour

Private Sub TextBox1_Change()
Dim Sep$
Sep = Application.International(xlDecimalSeparator)
TextBox1 = Replace(TextBox1, ".", Sep)
TextBox1 = Replace(TextBox1, ",", Sep)
End Sub

Tu stockes dans une variable le séparateur décimal, et tu remplaces p oint ET virgule par le "bon" séparateur.

Ainsi cela marche même si tu changes de machine.

Bonjour à tous
Voila mon soucis, j'utilise des textbox pour rentrer des nombres dans m a
macro.
Le problème est que lorsque je rentre des nombres décimaux avec le pavé
numérique, le point (132.15) fait "planter" ma macro.
Je suis donc obligé de saisir les décimaux avec des virgules (132, 15), pff
galère.
Comment obliger ma textbox à ne reconnaître que des nombres, ou de modifier
mon point en virgule ?
Y a t il une âme charitable qui aurait une (ou plusieurs) solutions à me
proposer





--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
michdenis
Bonjour Zit,

La procédure suivante :

- Permet de saisir seulement UN séparateur décimale dans le textbox
- le séparateur utilisé la virgule ou le point ... le même utilisé dans la
feuille de calcul.
- Permet de saisir seulement des chiffres dans le textbox

Le résultat final est nécessaire un nombre. Pour ce faire tu dois
utliser une fonction de conversion du genre : Clng(textbox)
cdbl(textbox)... voir la rubrique dans l'aide sous Fonction de conversion
pour savoir celle qui convient à ton application.

la fonction Val() est à bannir si tu utilises ce qui précède car cette dernière
ne reconnaît que le point comme séparateur décimale alors que la procédure
peut très bien fonctionner avec les 2 séparateurs dicimales.


'--------------------------------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim Sep As String
Sep = Application.International(xlDecimalSeparator)
If (KeyAscii = 44 Or KeyAscii = 46) And _
InStr(1, TextBox1, Sep, vbTextCompare) = 0 Then
KeyAscii = Asc(Sep)
Exit Sub
End If
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
Exit Sub
End If
End Sub
'--------------------------------------


Salutations!



"Zit" a écrit dans le message de news:
Bonjour à tous
Voila mon soucis, j'utilise des textbox pour rentrer des nombres dans ma
macro.
Le problème est que lorsque je rentre des nombres décimaux avec le pavé
numérique, le point (132.15) fait "planter" ma macro.
Je suis donc obligé de saisir les décimaux avec des virgules (132,15), pff
galère.
Comment obliger ma textbox à ne reconnaître que des nombres, ou de modifier
mon point en virgule ?
Y a t il une âme charitable qui aurait une (ou plusieurs) solutions à me
proposer
Avatar
Zit
Merci à tous pour vos réponses, je vais en faire bon usage.
Il ne me reste plus qu'à les "digérer" ;-)

Zit
Avatar
thys1961
Le samedi 14 Janvier 2006 à 11:45 par Zit :
Bonjour à tous
Voila mon soucis, j'utilise des textbox pour rentrer des nombres dans ma
macro.
Le problème est que lorsque je rentre des nombres décimaux avec
le pavé
numérique, le point (132.15) fait "planter" ma macro.
Je suis donc obligé de saisir les décimaux avec des virgules
(132,15), pff
galère.
Comment obliger ma textbox à ne reconnaître que des nombres, ou de
modifier
mon point en virgule ?
Y a t il une âme charitable qui aurait une (ou plusieurs) solutions
à me
proposer


Bonjour à toutes et tous

Je fais revivre ce sujet, car j'ai la même problématique, mais une partie est de mon soucis est déjà résolu grâce au post de Michel Gaboly à savoir

Private Sub TextBox1_Change()
Dim Sep$
Sep = Application.International(xlDecimalSeparator)
TextBox1 = Replace(TextBox1, "e;."e;, Sep)
TextBox1 = Replace(TextBox1, "e;,"e;, Sep)
End Sub

en effet mon but est qu'a partir d'un useform, j'entre une donnée numerique avec décimale 2 après la virgule dans un textbox, (à partir du clavier numérique), et que cette donné saisie se positionne à la première ligne vide d'une colonne d'un tableau Excel, elle même formatée en (format cellule nombre décimale 2 et séparateur des milliers avec espace

donc actuellement et en suivant l'astuce de Michel, ma saisie dans le textbox me donne bien une valeur, par exemple 154,26

mais lorsque je la valide depuis le Useform, dans la feuilles Excel ce montant se positionne bien au bon endroit, mais se positionne à gauche dans la cellule et ne devient numérique que si (curseur sur la cellule du nombre) je fais F2 comme pour faire une modification puis entrer (retour chariot) et seulement à ce moment là elle devient numérique et formatée comme je le veux

Donc si vous avez des idées, je suis preneur

Merci d'avance

Sincères salutations