Textbox numérique et problème de validation
Salut à tous les connectés et futurs connectés du forum 😛
Dans un Userform, je rencontre deux petits problèmes avec des Texbox qui ne doivent avoir qu'une valeur numérique entière (sans décimales).
J'ai donc deux Textbox appelés SaisieTauxOccup et SaisieTauxDesir. Ces deux Textbox sont à l'intérieur d'une Frame.
1er problème
Les décimales sont parfois acceptées parfois non . . . allez savoir pourquoi !
2ème problème
Lorsque je sors du deuxième Textbox le resultat du test (s'il y a une erreur de saisie) qui doit s'afficher dans un Msgbox ne s'affiche pas.
De plus je n'ai pas de controle sur d'autres Textbox ou OptionButton ou CheckBox.
Tout rendre dans l'ordre si je fais un clic avec la sours dans la Frame de ces deux Textbox.
Merci à tous les connectés qui voudront bien m'aider. Je ne peux pas joindre de fichier car ce dernier est trop lourd. Mais j'espère que les fortiches s'en sortiront avec les deux procédures ci-dessous.
A++ et Bon App à ceux qui vont faire comme moi !
Salut à tous les connectés et futurs connectés du forum 😛
Dans un Userform, je rencontre deux petits problèmes avec des Texbox qui ne doivent avoir qu'une valeur numérique entière (sans décimales).
J'ai donc deux Textbox appelés SaisieTauxOccup et SaisieTauxDesir. Ces deux Textbox sont à l'intérieur d'une Frame.
1er problème
Les décimales sont parfois acceptées parfois non . . . allez savoir pourquoi !
2ème problème
Lorsque je sors du deuxième Textbox le resultat du test (s'il y a une erreur de saisie) qui doit s'afficher dans un Msgbox ne s'affiche pas.
De plus je n'ai pas de controle sur d'autres Textbox ou OptionButton ou CheckBox.
Tout rendre dans l'ordre si je fais un clic avec la sours dans la Frame de ces deux Textbox.
Merci à tous les connectés qui voudront bien m'aider. Je ne peux pas joindre de fichier car ce dernier est trop lourd. Mais j'espère que les fortiches s'en sortiront avec les deux procédures ci-dessous.
Code:
Private Sub SaisieTauxOccup_Exit(ByVal Cancel As MSForms.ReturnBoolean)
' <-- Validité du %age Occupation - Numérique entier obligatoire et % compris entre 40 et 100
On Error Resume Next
If Not IsNumeric(Right(SaisieTauxOccup, 1)) Then
MsgBox "Veuillez saisir un nombre entier !" + Chr$(13) + Chr$(13), _
vbOKOnly + vbExclamation, " - ERREUR DE SAISIE - "
SaisieTauxOccup = Left(SaisieTauxOccup, Len(SaisieTauxOccup) - 1)
Cancel = True
SaisieTauxOccup.Value = ""
SaisieTauxOccup.SetFocus
Exit Sub
End If
If SaisieTauxOccup.Value > 100 Or SaisieTauxOccup.Value < 40 Then
MsgBox "Veuillez saisir un taux d'occuption correct svp." + Chr$(13) + Chr$(13) _
& "Le taux est compris entre 40 et 100 % ! " + Chr$(13) + Chr$(13), _
vbOKOnly + vbExclamation, " - ERREUR DE SAISIE - "
Cancel = True
SaisieTauxOccup.Value = ""
SaisieTauxOccup.SetFocus
End If
End Sub
Code:
Private Sub SaisieTauxDesir_Exit(ByVal Cancel As MSForms.ReturnBoolean)
' <-- Validité du %age Désiré - Numérique entier obligatoire et % compris entre 10 et non supérieur à Occupation
On Error Resume Next
If Not IsNumeric(Right(SaisieTauxDesir, 1)) Then
MsgBox "Veuillez saisir un nombre entier !" + Chr$(13) + Chr$(13), _
vbOKOnly + vbExclamation, " - ERREUR DE SAISIE - "
SaisieTauxDesir = Left(SaisieTauxDesir, Len(SaisieTauxDesir) - 1)
Cancel = True
SaisieTauxDesir.Value = ""
SaisieTauxDesir.SetFocus
Exit Sub
End If
If SaisieTauxDesir.Value < 10 Or SaisieTauxDesir.Value > SaisieTauxOccup.Value Then
MsgBox "Veuillez saisir un taux désiré correct svp. " + Chr$(13) + Chr$(13) _
& "Le taux est compris entre 10 % et le taux d'occupation réel ! " + Chr$(13) + Chr$(13), _
vbOKOnly + vbExclamation, " - ERREUR DE SAISIE - "
Cancel = True
SaisieTauxDesir.Value = ""
SaisieTauxDesir.SetFocus
End If
End Sub
A++ et Bon App à ceux qui vont faire comme moi !
Dernière édition: