Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Comment obliger une textBox à renvoyer un nombre

803 views
Skip to first unread message

Zit

unread,
Jan 14, 2006, 5:45:44 AM1/14/06
to
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


anonymousA

unread,
Jan 14, 2006, 6:24:14 AM1/14/06
to
Bonjour,

p.e
If IsNumeric(TextBox1) then range("A1")=Cdbl(Txtbox1)

A+


Zit a écrit :

Michel Gaboly

unread,
Jan 14, 2006, 6:57:29 AM1/14/06
to
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 point ET virgule par le "bon" séparateur.

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

Zit a écrit :


--
Cordialement,

Michel Gaboly
www.gaboly.com

michdenis

unread,
Jan 14, 2006, 8:54:58 AM1/14/06
to
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" <nospam...@hotmail.com> a écrit dans le message de news: OZT0FePG...@TK2MSFTNGP11.phx.gbl...

Zit

unread,
Jan 14, 2006, 1:07:36 PM1/14/06
to
Merci à tous pour vos réponses, je vais en faire bon usage.
Il ne me reste plus qu'à les "digérer" ;-)

Zit


thys1961

unread,
Jun 19, 2013, 4:36:27 AM6/19/13
to
Le samedi 14 Janvier 2006 à 11:45 par Zit :
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

isabelle

unread,
Jun 19, 2013, 10:26:32 AM6/19/13
to
bonjour,

http://www.cpearson.com/excel/TextBox.htm

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc("-")
If InStr(1, Me.TextBox1.Text, "-") > 0 Or Me.TextBox1.SelStart
> 0 Then
KeyAscii = 0
End If
Case Asc(".")
If InStr(1, Me.TextBox1.Text, ".") > 0 Then
KeyAscii = 0
End If
Case Else
KeyAscii = 0
End Select
End Sub

isabelle

Le 2013-06-19 04:36, thys1961 a �crit :
> 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
>
0 new messages