Bonsoir Domi,
Essaie ceci :
A ) la saisie aux chiffres seulement.
B ) la saisie permet 1 séparateur décimal , virgule ou point
dans la boîte de saisie, et ce, d'après le système en vigueur
sur la machine. (panneau de configuration)
C ) Cette fonction peut servir à un nombre indéterminé de textbox
de ton formulaire.
D ) En copiant cette fonction dans un module standard, elle peut être
utilisé pour tous les formulaires de ton projet qui ont le même
besoin.
Pour appeler la fonction pour chaque textbox voici le code à saisir :
Évidemment, n'oublie d'adapter le nom du textbox selon celui de
ton application dans la ligne de commande.
----------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox1, KeyAscii)
End Sub
------------------
Voici la fonction à copier dans un module standard
------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
Dim SepDec As String
With Application
If .UseSystemSeparators = True Then
SepDec = Application.International(xlDecimalSeparator)
Else
SepDec = .DecimalSeparator
End If
End With
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
-------------------------------------
Salutations!
"Domi" a écrit dans le message de news:
Bonsoir,
Pour imposer la saisie d'une valeur numérique dans Textbox1
J'ai fait cela :
If Not IsNumeric(TextBox1.Value) Then
MsgBox "Il faut un nombre"
End If
Le Textbox est dans un Frame.
Si je met ce code sur l'evenement Exit du Textbox, cela ne marche pas
correctement, je n'ai le message d'erreur que 4 "Tab" plus tard...
Alors que ça marche illico sur l'evenemaet After Update.
Si je sort le Textbox du Frame ça marche avec les 2 solutions
Pourquoi ? et comment remédier à cela si je veux laisser le Textbox dans
le
Frame et exploiter l'évènement Exit ?
Merci de ne pas me laisser mourir idiot.
Domi
Bonsoir Domi,
Essaie ceci :
A ) la saisie aux chiffres seulement.
B ) la saisie permet 1 séparateur décimal , virgule ou point
dans la boîte de saisie, et ce, d'après le système en vigueur
sur la machine. (panneau de configuration)
C ) Cette fonction peut servir à un nombre indéterminé de textbox
de ton formulaire.
D ) En copiant cette fonction dans un module standard, elle peut être
utilisé pour tous les formulaires de ton projet qui ont le même
besoin.
Pour appeler la fonction pour chaque textbox voici le code à saisir :
Évidemment, n'oublie d'adapter le nom du textbox selon celui de
ton application dans la ligne de commande.
----------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox1, KeyAscii)
End Sub
------------------
Voici la fonction à copier dans un module standard
------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
Dim SepDec As String
With Application
If .UseSystemSeparators = True Then
SepDec = Application.International(xlDecimalSeparator)
Else
SepDec = .DecimalSeparator
End If
End With
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
-------------------------------------
Salutations!
"Domi" <scrat83@free.fr> a écrit dans le message de news:
Omkf0xUNFHA.3668@TK2MSFTNGP14.phx.gbl...
Bonsoir,
Pour imposer la saisie d'une valeur numérique dans Textbox1
J'ai fait cela :
If Not IsNumeric(TextBox1.Value) Then
MsgBox "Il faut un nombre"
End If
Le Textbox est dans un Frame.
Si je met ce code sur l'evenement Exit du Textbox, cela ne marche pas
correctement, je n'ai le message d'erreur que 4 "Tab" plus tard...
Alors que ça marche illico sur l'evenemaet After Update.
Si je sort le Textbox du Frame ça marche avec les 2 solutions
Pourquoi ? et comment remédier à cela si je veux laisser le Textbox dans
le
Frame et exploiter l'évènement Exit ?
Merci de ne pas me laisser mourir idiot.
Domi
Bonsoir Domi,
Essaie ceci :
A ) la saisie aux chiffres seulement.
B ) la saisie permet 1 séparateur décimal , virgule ou point
dans la boîte de saisie, et ce, d'après le système en vigueur
sur la machine. (panneau de configuration)
C ) Cette fonction peut servir à un nombre indéterminé de textbox
de ton formulaire.
D ) En copiant cette fonction dans un module standard, elle peut être
utilisé pour tous les formulaires de ton projet qui ont le même
besoin.
Pour appeler la fonction pour chaque textbox voici le code à saisir :
Évidemment, n'oublie d'adapter le nom du textbox selon celui de
ton application dans la ligne de commande.
----------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox1, KeyAscii)
End Sub
------------------
Voici la fonction à copier dans un module standard
------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
Dim SepDec As String
With Application
If .UseSystemSeparators = True Then
SepDec = Application.International(xlDecimalSeparator)
Else
SepDec = .DecimalSeparator
End If
End With
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
-------------------------------------
Salutations!
"Domi" a écrit dans le message de news:
Bonsoir,
Pour imposer la saisie d'une valeur numérique dans Textbox1
J'ai fait cela :
If Not IsNumeric(TextBox1.Value) Then
MsgBox "Il faut un nombre"
End If
Le Textbox est dans un Frame.
Si je met ce code sur l'evenement Exit du Textbox, cela ne marche pas
correctement, je n'ai le message d'erreur que 4 "Tab" plus tard...
Alors que ça marche illico sur l'evenemaet After Update.
Si je sort le Textbox du Frame ça marche avec les 2 solutions
Pourquoi ? et comment remédier à cela si je veux laisser le Textbox dans
le
Frame et exploiter l'évènement Exit ?
Merci de ne pas me laisser mourir idiot.
Domi
Bonsoir Domi,
Essaie ceci :
A ) la saisie aux chiffres seulement.
B ) la saisie permet 1 séparateur décimal , virgule ou point
dans la boîte de saisie, et ce, d'après le système en vigueur
sur la machine. (panneau de configuration)
C ) Cette fonction peut servir à un nombre indéterminé de textbox
de ton formulaire.
D ) En copiant cette fonction dans un module standard, elle peut être
utilisé pour tous les formulaires de ton projet qui ont le même
besoin.
Pour appeler la fonction pour chaque textbox voici le code à saisir :
Évidemment, n'oublie d'adapter le nom du textbox selon celui de
ton application dans la ligne de commande.
----------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox1, KeyAscii)
End Sub
------------------
Voici la fonction à copier dans un module standard
------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
Dim SepDec As String
With Application
If .UseSystemSeparators = True Then
SepDec = Application.International(xlDecimalSeparator)
Else
SepDec = .DecimalSeparator
End If
End With
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
-------------------------------------
Salutations!
"Domi" a écrit dans le message de news:
Bonsoir,
Pour imposer la saisie d'une valeur numérique dans Textbox1
J'ai fait cela :
If Not IsNumeric(TextBox1.Value) Then
MsgBox "Il faut un nombre"
End If
Le Textbox est dans un Frame.
Si je met ce code sur l'evenement Exit du Textbox, cela ne marche pas
correctement, je n'ai le message d'erreur que 4 "Tab" plus tard...
Alors que ça marche illico sur l'evenemaet After Update.
Si je sort le Textbox du Frame ça marche avec les 2 solutions
Pourquoi ? et comment remédier à cela si je veux laisser le Textbox dans
le
Frame et exploiter l'évènement Exit ?
Merci de ne pas me laisser mourir idiot.
Domi
Bonsoir Domi,
Essaie ceci :
A ) la saisie aux chiffres seulement.
B ) la saisie permet 1 séparateur décimal , virgule ou point
dans la boîte de saisie, et ce, d'après le système en vigueur
sur la machine. (panneau de configuration)
C ) Cette fonction peut servir à un nombre indéterminé de textbox
de ton formulaire.
D ) En copiant cette fonction dans un module standard, elle peut être
utilisé pour tous les formulaires de ton projet qui ont le même
besoin.
Pour appeler la fonction pour chaque textbox voici le code à saisir :
Évidemment, n'oublie d'adapter le nom du textbox selon celui de
ton application dans la ligne de commande.
----------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox1, KeyAscii)
End Sub
------------------
Voici la fonction à copier dans un module standard
------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
Dim SepDec As String
With Application
If .UseSystemSeparators = True Then
SepDec = Application.International(xlDecimalSeparator)
Else
SepDec = .DecimalSeparator
End If
End With
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
-------------------------------------
Salutations!
"Domi" <scrat83@free.fr> a écrit dans le message de news:
Omkf0xUNFHA.3668@TK2MSFTNGP14.phx.gbl...
Bonsoir,
Pour imposer la saisie d'une valeur numérique dans Textbox1
J'ai fait cela :
If Not IsNumeric(TextBox1.Value) Then
MsgBox "Il faut un nombre"
End If
Le Textbox est dans un Frame.
Si je met ce code sur l'evenement Exit du Textbox, cela ne marche pas
correctement, je n'ai le message d'erreur que 4 "Tab" plus tard...
Alors que ça marche illico sur l'evenemaet After Update.
Si je sort le Textbox du Frame ça marche avec les 2 solutions
Pourquoi ? et comment remédier à cela si je veux laisser le Textbox dans
le
Frame et exploiter l'évènement Exit ?
Merci de ne pas me laisser mourir idiot.
Domi
Bonsoir Domi,
Essaie ceci :
A ) la saisie aux chiffres seulement.
B ) la saisie permet 1 séparateur décimal , virgule ou point
dans la boîte de saisie, et ce, d'après le système en vigueur
sur la machine. (panneau de configuration)
C ) Cette fonction peut servir à un nombre indéterminé de textbox
de ton formulaire.
D ) En copiant cette fonction dans un module standard, elle peut être
utilisé pour tous les formulaires de ton projet qui ont le même
besoin.
Pour appeler la fonction pour chaque textbox voici le code à saisir :
Évidemment, n'oublie d'adapter le nom du textbox selon celui de
ton application dans la ligne de commande.
----------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox1, KeyAscii)
End Sub
------------------
Voici la fonction à copier dans un module standard
------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
Dim SepDec As String
With Application
If .UseSystemSeparators = True Then
SepDec = Application.International(xlDecimalSeparator)
Else
SepDec = .DecimalSeparator
End If
End With
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
-------------------------------------
Salutations!
"Domi" a écrit dans le message de news:
Bonsoir,
Pour imposer la saisie d'une valeur numérique dans Textbox1
J'ai fait cela :
If Not IsNumeric(TextBox1.Value) Then
MsgBox "Il faut un nombre"
End If
Le Textbox est dans un Frame.
Si je met ce code sur l'evenement Exit du Textbox, cela ne marche pas
correctement, je n'ai le message d'erreur que 4 "Tab" plus tard...
Alors que ça marche illico sur l'evenemaet After Update.
Si je sort le Textbox du Frame ça marche avec les 2 solutions
Pourquoi ? et comment remédier à cela si je veux laisser le Textbox dans
le
Frame et exploiter l'évènement Exit ?
Merci de ne pas me laisser mourir idiot.
Domi
Bonsoir Domi,
Utilise plutôt cette fonction. Je suppose que tu travailles sur une
version antérieure à excel 2002.
P.S. Tu dois utiliser cet événement du textbox pour déclencher le
processus :
"Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)"
'--------------------------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
Dim SepDec As String
With Application
If Val(.Version) > 9 Then
If .UseSystemSeparators = True Then
SepDec = Application.International(xlDecimalSeparator)
Else
SepDec = .DecimalSeparator
End If
Else
SepDec = Application.International(xlDecimalSeparator)
End If
End With
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
'--------------------------------------
Salutations!
"Domi" a écrit dans le message de news:
Merci,
J'ai bien suivi et appliqué ta procédure (j'ai mis la fonction dans un
module standard) mais si je rentre une valeur texte dans le texbox de mon
userform j'ai un message d'erreur 438: "Propriété ou methode non gérée
par
cet objet" sur la ligne : If .UseSystemSeparators = True Then
(Sur ma machine j'utilise le "." comme séparateur)
Question subsidiaire, pourrais-tu me dire s'il est simple de modifier ce
code pour n'autoriser que des nombres entiers ?
Salutations ;o)
Domi
"MichDenis" a écrit dans le message de
news:%23%Bonsoir Domi,
Essaie ceci :
A ) la saisie aux chiffres seulement.
B ) la saisie permet 1 séparateur décimal , virgule ou point
dans la boîte de saisie, et ce, d'après le système en vigueur
sur la machine. (panneau de configuration)
C ) Cette fonction peut servir à un nombre indéterminé de textbox
de ton formulaire.
D ) En copiant cette fonction dans un module standard, elle peut être
utilisé pour tous les formulaires de ton projet qui ont le même
besoin.
Pour appeler la fonction pour chaque textbox voici le code à saisir :
Évidemment, n'oublie d'adapter le nom du textbox selon celui de
ton application dans la ligne de commande.
----------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox1, KeyAscii)
End Sub
------------------
Voici la fonction à copier dans un module standard
------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As
Integer)
Dim SepDec As String
With Application
If .UseSystemSeparators = True Then
SepDec = Application.International(xlDecimalSeparator)
Else
SepDec = .DecimalSeparator
End If
End With
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
-------------------------------------
Salutations!
"Domi" a écrit dans le message de news:Bonsoir,
Pour imposer la saisie d'une valeur numérique dans Textbox1
J'ai fait cela :
If Not IsNumeric(TextBox1.Value) Then
MsgBox "Il faut un nombre"
End If
Le Textbox est dans un Frame.
Si je met ce code sur l'evenement Exit du Textbox, cela ne marche pas
correctement, je n'ai le message d'erreur que 4 "Tab" plus tard...
Alors que ça marche illico sur l'evenemaet After Update.
Si je sort le Textbox du Frame ça marche avec les 2 solutions
Pourquoi ? et comment remédier à cela si je veux laisser le Textbox dans
leFrame et exploiter l'évènement Exit ?
Merci de ne pas me laisser mourir idiot.
Domi
Bonsoir Domi,
Utilise plutôt cette fonction. Je suppose que tu travailles sur une
version antérieure à excel 2002.
P.S. Tu dois utiliser cet événement du textbox pour déclencher le
processus :
"Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)"
'--------------------------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
Dim SepDec As String
With Application
If Val(.Version) > 9 Then
If .UseSystemSeparators = True Then
SepDec = Application.International(xlDecimalSeparator)
Else
SepDec = .DecimalSeparator
End If
Else
SepDec = Application.International(xlDecimalSeparator)
End If
End With
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
'--------------------------------------
Salutations!
"Domi" <scrat83@free.fr> a écrit dans le message de news:
u5OjWvaNFHA.3704@TK2MSFTNGP12.phx.gbl...
Merci,
J'ai bien suivi et appliqué ta procédure (j'ai mis la fonction dans un
module standard) mais si je rentre une valeur texte dans le texbox de mon
userform j'ai un message d'erreur 438: "Propriété ou methode non gérée
par
cet objet" sur la ligne : If .UseSystemSeparators = True Then
(Sur ma machine j'utilise le "." comme séparateur)
Question subsidiaire, pourrais-tu me dire s'il est simple de modifier ce
code pour n'autoriser que des nombres entiers ?
Salutations ;o)
Domi
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de
news:%23%23EJrEZNFHA.2468@tk2msftngp13.phx.gbl...
Bonsoir Domi,
Essaie ceci :
A ) la saisie aux chiffres seulement.
B ) la saisie permet 1 séparateur décimal , virgule ou point
dans la boîte de saisie, et ce, d'après le système en vigueur
sur la machine. (panneau de configuration)
C ) Cette fonction peut servir à un nombre indéterminé de textbox
de ton formulaire.
D ) En copiant cette fonction dans un module standard, elle peut être
utilisé pour tous les formulaires de ton projet qui ont le même
besoin.
Pour appeler la fonction pour chaque textbox voici le code à saisir :
Évidemment, n'oublie d'adapter le nom du textbox selon celui de
ton application dans la ligne de commande.
----------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox1, KeyAscii)
End Sub
------------------
Voici la fonction à copier dans un module standard
------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As
Integer)
Dim SepDec As String
With Application
If .UseSystemSeparators = True Then
SepDec = Application.International(xlDecimalSeparator)
Else
SepDec = .DecimalSeparator
End If
End With
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
-------------------------------------
Salutations!
"Domi" <scrat83@free.fr> a écrit dans le message de news:
Omkf0xUNFHA.3668@TK2MSFTNGP14.phx.gbl...
Bonsoir,
Pour imposer la saisie d'une valeur numérique dans Textbox1
J'ai fait cela :
If Not IsNumeric(TextBox1.Value) Then
MsgBox "Il faut un nombre"
End If
Le Textbox est dans un Frame.
Si je met ce code sur l'evenement Exit du Textbox, cela ne marche pas
correctement, je n'ai le message d'erreur que 4 "Tab" plus tard...
Alors que ça marche illico sur l'evenemaet After Update.
Si je sort le Textbox du Frame ça marche avec les 2 solutions
Pourquoi ? et comment remédier à cela si je veux laisser le Textbox dans
le
Frame et exploiter l'évènement Exit ?
Merci de ne pas me laisser mourir idiot.
Domi
Bonsoir Domi,
Utilise plutôt cette fonction. Je suppose que tu travailles sur une
version antérieure à excel 2002.
P.S. Tu dois utiliser cet événement du textbox pour déclencher le
processus :
"Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)"
'--------------------------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)
Dim SepDec As String
With Application
If Val(.Version) > 9 Then
If .UseSystemSeparators = True Then
SepDec = Application.International(xlDecimalSeparator)
Else
SepDec = .DecimalSeparator
End If
Else
SepDec = Application.International(xlDecimalSeparator)
End If
End With
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
'--------------------------------------
Salutations!
"Domi" a écrit dans le message de news:
Merci,
J'ai bien suivi et appliqué ta procédure (j'ai mis la fonction dans un
module standard) mais si je rentre une valeur texte dans le texbox de mon
userform j'ai un message d'erreur 438: "Propriété ou methode non gérée
par
cet objet" sur la ligne : If .UseSystemSeparators = True Then
(Sur ma machine j'utilise le "." comme séparateur)
Question subsidiaire, pourrais-tu me dire s'il est simple de modifier ce
code pour n'autoriser que des nombres entiers ?
Salutations ;o)
Domi
"MichDenis" a écrit dans le message de
news:%23%Bonsoir Domi,
Essaie ceci :
A ) la saisie aux chiffres seulement.
B ) la saisie permet 1 séparateur décimal , virgule ou point
dans la boîte de saisie, et ce, d'après le système en vigueur
sur la machine. (panneau de configuration)
C ) Cette fonction peut servir à un nombre indéterminé de textbox
de ton formulaire.
D ) En copiant cette fonction dans un module standard, elle peut être
utilisé pour tous les formulaires de ton projet qui ont le même
besoin.
Pour appeler la fonction pour chaque textbox voici le code à saisir :
Évidemment, n'oublie d'adapter le nom du textbox selon celui de
ton application dans la ligne de commande.
----------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = CheckLaSaisie(TextBox1, KeyAscii)
End Sub
------------------
Voici la fonction à copier dans un module standard
------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As
Integer)
Dim SepDec As String
With Application
If .UseSystemSeparators = True Then
SepDec = Application.International(xlDecimalSeparator)
Else
SepDec = .DecimalSeparator
End If
End With
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
-------------------------------------
Salutations!
"Domi" a écrit dans le message de news:Bonsoir,
Pour imposer la saisie d'une valeur numérique dans Textbox1
J'ai fait cela :
If Not IsNumeric(TextBox1.Value) Then
MsgBox "Il faut un nombre"
End If
Le Textbox est dans un Frame.
Si je met ce code sur l'evenement Exit du Textbox, cela ne marche pas
correctement, je n'ai le message d'erreur que 4 "Tab" plus tard...
Alors que ça marche illico sur l'evenemaet After Update.
Si je sort le Textbox du Frame ça marche avec les 2 solutions
Pourquoi ? et comment remédier à cela si je veux laisser le Textbox dans
leFrame et exploiter l'évènement Exit ?
Merci de ne pas me laisser mourir idiot.
Domi