OVH Cloud OVH Cloud

Control TextBox

1 réponse
Avatar
Apitos
Bonjour,

Dans un UserForm ajout=E9 =E0 un document Word, j'aimerais mettre en
condition un groupe de mes contr=F4ls Texbox qui n'acceptent que des
valeurs positifs entiers, et d'autres n'acceptent que des nombres
fractionn=E9s positifs.

J'ai fait cette procedure, pour controler la saise dans un seul
TextBox, mais pas encore arriver :

Private Sub TextBox2_Change()
If Not IsNumeric(TextBox2) And Right(TextBox2, TextBox2.SelStart, 1)
<> "," Then
If Not IsEmpty(TextBox2) Then
TextBox2 =3D Left(TextBox2, Len(TextBox2) - 1)
End If
End If
End Sub

Ca veut dire que si le caractere tap=E9 n'est pas un num=E9ro ou une
virgule, alors rien n'est ecrit dans le TextBox2.

Pour le deuxieme point, j'aimerais d'une fa=E7on g=E9n=E9rale trouver une
solution pour controler mes deux groupes au lieu de taper chaque fois
une procedure =E0 chaque controle :

Groupe 1 : Entier positifs :

Private Sub TextBoxX_Change()
If Not IsNumeric(TextBoxX) Then
If Not IsEmpty(TextBoxX) Then
TextBox2 =3D Left(TextBoxX, Len(TextBoxX) - 1)
End If
End If
End Sub

Groupe 2 : Nombres Fraction=E9s :

Private Sub TextBoxX_Change()
If Not IsNumeric(TextBoxX) And Right(TextBoxX, TextBoxX.SelStart, 1)
<> "," Then
If Not IsEmpty(TextBoxX) Then
TextBox2 =3D Left(TextBoxX, Len(TextBoxX) - 1)
End If
End If
End Sub

merci de votre aide.

1 réponse

Avatar
Corona
Bonjour Apitos,
Pour ton cas, il me semble qu'il vaut mieux passer par un module de
classe.
Un exemple ici http://cjoint.com/?kpr1PowKBR
J'ai placé un "I" dans la propriété 'Tag' des 'textbox' dont je voulais
avoir un entier. Sans "I", il est possible d'ajouter un '.' pour la
décimale. (pour la virgule) il suffit d'adapter.
J'ajoute que cette macro est inspirée d'une intervention que Laurent
Longre a faite en son temps sur le forum "Excel".
Philippe

"Apitos" a écrit dans le message de news:

Bonjour,

Dans un UserForm ajouté à un document Word, j'aimerais mettre en
condition un groupe de mes contrôls Texbox qui n'acceptent que des
valeurs positifs entiers, et d'autres n'acceptent que des nombres
fractionnés positifs.

J'ai fait cette procedure, pour controler la saise dans un seul
TextBox, mais pas encore arriver :

Private Sub TextBox2_Change()
If Not IsNumeric(TextBox2) And Right(TextBox2, TextBox2.SelStart, 1)
<> "," Then
If Not IsEmpty(TextBox2) Then
TextBox2 = Left(TextBox2, Len(TextBox2) - 1)
End If
End If
End Sub

Ca veut dire que si le caractere tapé n'est pas un numéro ou une
virgule, alors rien n'est ecrit dans le TextBox2.

Pour le deuxieme point, j'aimerais d'une façon générale trouver une
solution pour controler mes deux groupes au lieu de taper chaque fois
une procedure à chaque controle :

Groupe 1 : Entier positifs :

Private Sub TextBoxX_Change()
If Not IsNumeric(TextBoxX) Then
If Not IsEmpty(TextBoxX) Then
TextBox2 = Left(TextBoxX, Len(TextBoxX) - 1)
End If
End If
End Sub

Groupe 2 : Nombres Fractionés :

Private Sub TextBoxX_Change()
If Not IsNumeric(TextBoxX) And Right(TextBoxX, TextBoxX.SelStart, 1)
<> "," Then
If Not IsEmpty(TextBoxX) Then
TextBox2 = Left(TextBoxX, Len(TextBoxX) - 1)
End If
End If
End Sub

merci de votre aide.