Les plaisirs du TextBox

Le
Péhemme
Bonjour à Tous,

Étant un garçon obéissant, je suis les préceptes de notre ami Denis en
matière de saisies de valeurs via des textboxes à savoir :
1°) dans un module standard :
Option Explicit
Public SepDec
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
SepDec = Format(0, ".")
If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If
End Function
2°) dans le UserForm, pour chaque TextBox (exemple pour la TextBox4) :
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox4, KeyAscii)
End Sub

Tout fonctionne parfaitement depuis des lustres.
J'observe cependant que je ne peux saisir que des nombres positifs.
Je n'arrive pas à saisir : -45.63 (exemple)
C'est normal car "-" est le caractère 45 (sauf erreur de ma part) qui est
donc exclu par l'utilisation de la fonction.
Malgré mes tâtonnements, je n'arrive pas à faire accepter ce maudit Char 45
("-").

Merci d'avance de me remettre sur le bon chemin.
Michel
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #21278531
Bonjour,

D'abord pour appeler la fonction à partir du formulaire :
'------------------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox2, KeyAscii, TextBox1.SelStart)
End Sub
'------------------------

Modifie la fonction comme ceci :

La fonction permettra la saisie du signe "-" seulement
à la position 0 (au début du nombre saisi dans le textbox)

'---------------------------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, _
ByVal Char As Integer, Position As Integer)
SepDec = Format(0, ".")

If Position = 0 And Char = 45 Then
CheckLaSaisie = Char
Exit Function
End If

If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If
End Function
'---------------------------------------



"Péhemme" eFj#
Bonjour à Tous,

Étant un garçon obéissant, je suis les préceptes de notre ami Denis en
matière de saisies de valeurs via des textboxes à savoir :
1°) dans un module standard :
Option Explicit
Public SepDec
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
SepDec = Format(0, ".")
If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If
End Function
2°) dans le UserForm, pour chaque TextBox (exemple pour la TextBox4) :
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox4, KeyAscii)
End Sub

Tout fonctionne parfaitement depuis des lustres.
J'observe cependant que je ne peux saisir que des nombres positifs.
Je n'arrive pas à saisir : -45.63 (exemple)
C'est normal car "-" est le caractère 45 (sauf erreur de ma part) qui est
donc exclu par l'utilisation de la fonction.
Malgré mes tâtonnements, je n'arrive pas à faire accepter ce maudit Char 45
("-").

Merci d'avance de me remettre sur le bon chemin.
Michel
Péhemme
Le #21278901
Bonjour Denis,

Merci de ta réponse si rapide.
Avant de tester, pour ma bonne compréhension, une petite question :
dans le KeyPress du TextBox1 (ton exemple), quel est le rôle de la référence
à la TextBox2 :
"KeyAscii = CheckLaSaisie(TextBox2, KeyAscii, TextBox1.SelStart" ?

Par ailleurs, j'ai des TextBoxes portant un nom du style : txtCotisation ou
txtStages ...
Si, lors d'un contrôle lors d'un KeyPress d'une Textbox, je dois faire
référence à une autre, comment dois-je l'articuler ?

D'autre part, je précise que dans les différentes TextBoxes de mon
formulaire, je saisi indifféremment des nombres positifs (majorités des cas)
ou négatif.

Merci d'avance de tes éclaircissements.
Bien amicalement
Michel



"michdenis" news:
Bonjour,

D'abord pour appeler la fonction à partir du formulaire :
'------------------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox2, KeyAscii, TextBox1.SelStart)
End Sub
'------------------------

Modifie la fonction comme ceci :

La fonction permettra la saisie du signe "-" seulement
à la position 0 (au début du nombre saisi dans le textbox)

'---------------------------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, _
ByVal Char As Integer, Position As Integer)
SepDec = Format(0, ".")

If Position = 0 And Char = 45 Then
CheckLaSaisie = Char
Exit Function
End If

If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If
End Function
'---------------------------------------



"Péhemme" eFj#
Bonjour à Tous,

Étant un garçon obéissant, je suis les préceptes de notre ami Denis en
matière de saisies de valeurs via des textboxes à savoir :
1°) dans un module standard :
Option Explicit
Public SepDec
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
SepDec = Format(0, ".")
If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If
End Function
2°) dans le UserForm, pour chaque TextBox (exemple pour la TextBox4) :
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox4, KeyAscii)
End Sub

Tout fonctionne parfaitement depuis des lustres.
J'observe cependant que je ne peux saisir que des nombres positifs.
Je n'arrive pas à saisir : -45.63 (exemple)
C'est normal car "-" est le caractère 45 (sauf erreur de ma part) qui est
donc exclu par l'utilisation de la fonction.
Malgré mes tâtonnements, je n'arrive pas à faire accepter ce maudit Char
45
("-").

Merci d'avance de me remettre sur le bon chemin.
Michel



michdenis
Le #21278951
C'est toujours le même "Textbox", c'est une erreur de frappe. Désolé

KeyAscii = CheckLaSaisie(TextBox1, KeyAscii, TextBox1.SelStart)



"Péhemme"
Bonjour Denis,

Merci de ta réponse si rapide.
Avant de tester, pour ma bonne compréhension, une petite question :
dans le KeyPress du TextBox1 (ton exemple), quel est le rôle de la référence
à la TextBox2 :
"KeyAscii = CheckLaSaisie(TextBox2, KeyAscii, TextBox1.SelStart" ?

Par ailleurs, j'ai des TextBoxes portant un nom du style : txtCotisation ou
txtStages ...
Si, lors d'un contrôle lors d'un KeyPress d'une Textbox, je dois faire
référence à une autre, comment dois-je l'articuler ?

D'autre part, je précise que dans les différentes TextBoxes de mon
formulaire, je saisi indifféremment des nombres positifs (majorités des cas)
ou négatif.

Merci d'avance de tes éclaircissements.
Bien amicalement
Michel



"michdenis" news:
Bonjour,

D'abord pour appeler la fonction à partir du formulaire :
'------------------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox2, KeyAscii, TextBox1.SelStart)
End Sub
'------------------------

Modifie la fonction comme ceci :

La fonction permettra la saisie du signe "-" seulement
à la position 0 (au début du nombre saisi dans le textbox)

'---------------------------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, _
ByVal Char As Integer, Position As Integer)
SepDec = Format(0, ".")

If Position = 0 And Char = 45 Then
CheckLaSaisie = Char
Exit Function
End If

If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If
End Function
'---------------------------------------



"Péhemme" eFj#
Bonjour à Tous,

Étant un garçon obéissant, je suis les préceptes de notre ami Denis en
matière de saisies de valeurs via des textboxes à savoir :
1°) dans un module standard :
Option Explicit
Public SepDec
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
SepDec = Format(0, ".")
If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If
End Function
2°) dans le UserForm, pour chaque TextBox (exemple pour la TextBox4) :
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox4, KeyAscii)
End Sub

Tout fonctionne parfaitement depuis des lustres.
J'observe cependant que je ne peux saisir que des nombres positifs.
Je n'arrive pas à saisir : -45.63 (exemple)
C'est normal car "-" est le caractère 45 (sauf erreur de ma part) qui est
donc exclu par l'utilisation de la fonction.
Malgré mes tâtonnements, je n'arrive pas à faire accepter ce maudit Char
45
("-").

Merci d'avance de me remettre sur le bon chemin.
Michel



Péhemme
Le #21279151
Simplement : Formidable !
Mille mercis naturellement.
Bien amicalement
Michel

"michdenis" news:
C'est toujours le même "Textbox", c'est une erreur de frappe. Désolé

KeyAscii = CheckLaSaisie(TextBox1, KeyAscii, TextBox1.SelStart)



"Péhemme"
Bonjour Denis,

Merci de ta réponse si rapide.
Avant de tester, pour ma bonne compréhension, une petite question :
dans le KeyPress du TextBox1 (ton exemple), quel est le rôle de la
référence
à la TextBox2 :
"KeyAscii = CheckLaSaisie(TextBox2, KeyAscii, TextBox1.SelStart" ?

Par ailleurs, j'ai des TextBoxes portant un nom du style : txtCotisation
ou
txtStages ...
Si, lors d'un contrôle lors d'un KeyPress d'une Textbox, je dois faire
référence à une autre, comment dois-je l'articuler ?

D'autre part, je précise que dans les différentes TextBoxes de mon
formulaire, je saisi indifféremment des nombres positifs (majorités des
cas)
ou négatif.

Merci d'avance de tes éclaircissements.
Bien amicalement
Michel



"michdenis" news:
Bonjour,

D'abord pour appeler la fonction à partir du formulaire :
'------------------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox2, KeyAscii, TextBox1.SelStart)
End Sub
'------------------------

Modifie la fonction comme ceci :

La fonction permettra la saisie du signe "-" seulement
à la position 0 (au début du nombre saisi dans le textbox)

'---------------------------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, _
ByVal Char As Integer, Position As Integer)
SepDec = Format(0, ".")

If Position = 0 And Char = 45 Then
CheckLaSaisie = Char
Exit Function
End If

If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If
End Function
'---------------------------------------



"Péhemme" eFj#
Bonjour à Tous,

Étant un garçon obéissant, je suis les préceptes de notre ami Denis en
matière de saisies de valeurs via des textboxes à savoir :
1°) dans un module standard :
Option Explicit
Public SepDec
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
SepDec = Format(0, ".")
If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If
End Function
2°) dans le UserForm, pour chaque TextBox (exemple pour la TextBox4) :
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox4, KeyAscii)
End Sub

Tout fonctionne parfaitement depuis des lustres.
J'observe cependant que je ne peux saisir que des nombres positifs.
Je n'arrive pas à saisir : -45.63 (exemple)
C'est normal car "-" est le caractère 45 (sauf erreur de ma part) qui est
donc exclu par l'utilisation de la fonction.
Malgré mes tâtonnements, je n'arrive pas à faire accepter ce maudit Char
45
("-").

Merci d'avance de me remettre sur le bon chemin.
Michel






Publicité
Poster une réponse
Anonyme