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

Les plaisirs du TextBox

4 réponses
Avatar
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

4 réponses

Avatar
michdenis
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" a écrit dans le message de groupe de discussion :
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
Avatar
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" a écrit dans le message de
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" a écrit dans le message de groupe de discussion :
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



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

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



"Péhemme" a écrit dans le message de groupe de discussion :

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" a écrit dans le message de
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" a écrit dans le message de groupe de discussion :
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



Avatar
Péhemme
Simplement : Formidable !
Mille mercis naturellement.
Bien amicalement
Michel

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

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



"Péhemme" a écrit dans le message de groupe de discussion :

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" a écrit dans le message de
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" a écrit dans le message de groupe de discussion :
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