Rendre obligatoire la saiaie dans champs d'un usf

  • Initiateur de la discussion Initiateur de la discussion zombe
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

zombe

XLDnaute Occasionnel
Salut le forum
Je souhaite faire des modifications dans les champs de mon usf.
- dans le textbox73, je souhaite obliger la personne à saisir une valeur numéric pour pouvoir passer au champ suivant,
- dans le textbox74, je souhaite que la personne ne puisse saisir que des valeur numériques (2 chiffres au plus).
Ex :1,2.....10.S'il saisie autre chose, un msgbox apparaitra avec le message suivant :Merci de saisir uniquement des entiers naturels,
- dans le textbox75, je souhaite qu'on n'y saisisse des valeur numeriques(le nombre de chiffre doit être toujour = 12).
Merci de voir ce qui est faisable.
 

Pièces jointes

Re : Rendre obligatoire la saiaie dans champs d'un usf

Bonsoir zombe,

Voici un code à placer dans le code de l'USF. Testes-le et dis moi si c'est OK, il fonctionne chez moi (si j'ai bien compris ta demande) :
VB:
Public Num_Tmp As Double

Private Sub TextBox73_Change()
    On Error GoTo Pas_Num
    If TextBox73 <> vbNullString Then
        Num_Tmp = CDbl(TextBox73)
        TextBox74.Enabled = True
        TextBox75.Enabled = True
    Else
        TextBox74.Enabled = False
        TextBox75.Enabled = False
        CommandButton3.Enabled = False
        Exit Sub
    End If
    On Error GoTo 0
    Exit Sub
Pas_Num:
    MsgBox ("Merci de saisir une valeur numérique")
    TextBox73 = Mid(TextBox73, 1, Len(TextBox73) - 1)
End Sub

Private Sub TextBox74_Change()
    If Len(TextBox74) = 0 Then Exit Sub
    If Asc(Right(TextBox74, 1)) < 48 Or Asc(Right(TextBox74, 1)) > 57 Then
        MsgBox ("Merci de saisir uniqument des entiers naturels")
        TextBox74 = Mid(TextBox74, 1, Len(TextBox74) - 1)
    End If
    If Len(TextBox74) > 2 Then
        MsgBox ("Nombre trop élevé")
        TextBox74 = Mid(TextBox74, 1, Len(TextBox74) - 1)
    End If
End Sub
Private Sub TextBox75_Change()
    If Len(TextBox75) = 0 Then Exit Sub
    If Asc(Right(TextBox75, 1)) < 48 Or Asc(Right(TextBox75, 1)) > 57 Then
        MsgBox ("Merci de saisir uniqument des chiffres")
        TextBox75 = Mid(TextBox75, 1, Len(TextBox75) - 1)
    End If
    If Len(TextBox75) < 12 Then
        CommandButton3.Enabled = False
    Else
        CommandButton3.Enabled = True
    End If
End Sub

Private Sub UserForm_Initialize()
    TextBox74.Enabled = False
    TextBox75.Enabled = False
    CommandButton3.Enabled = False
End Sub

A+
 
Re : Rendre obligatoire la saiaie dans champs d'un usf

Salut Fredoo et kikii
Merci Fredoo pour ton code.
Je l'ai testé mais permet que je fasse quelques observations:
Pour le textbox74, la valeur du nombre à saisir ne doit pas depasser 10.
Pour le textbox75, le nombre de caractere (numeric) doit forcement être = 12(pas plus pas moin).
Merci pour votre aide
 
Re : Rendre obligatoire la saiaie dans champs d'un usf

Bonjour zombe,

A mon tour de faire quelques observations : Dans ton post #1, tu n'indiquais pas une limitation au nombre 10 pour la TextBox74 mais à 2 digits. Il ne faut donc pas s'étonner si je n'avait pas intégré cette condition non donnée. Voici la correction :
VB:
Private Sub TextBox74_Change()
    If Len(TextBox74) = 0 Then Exit Sub
    If Asc(Right(TextBox74, 1)) < 48 Or Asc(Right(TextBox74, 1)) > 57 Then
        MsgBox ("Merci de saisir uniqument des entiers naturels")
        TextBox74 = Mid(TextBox74, 1, Len(TextBox74) - 1)
    End If
    If CInt(TextBox74) > 10 Then
        MsgBox ("Nombre trop élevé")
        TextBox74 = Mid(TextBox74, 1, Len(TextBox74) - 1)
    End If
End Sub

Ensuite, il t'es impossible de valider le formulaire si le n° de compte ne comporte pas 12 caractères au minimum. Je navais effectivement pas intégré le cas où il y a plus de 12 caractères, voici la correction ci-dessous.
VB:
Private Sub TextBox75_Change()
    If Len(TextBox75) = 0 Then Exit Sub
    If Asc(Right(TextBox75, 1)) < 48 Or Asc(Right(TextBox75, 1)) > 57 Then
        MsgBox ("Merci de saisir uniqument des chiffres")
        TextBox75 = Mid(TextBox75, 1, Len(TextBox75) - 1)
    End If
    If Len(TextBox75) < 12 Then
        CommandButton3.Enabled = False
    ElseIf Len(TextBox75) = 12 Then
        CommandButton3.Enabled = True
    Else
        MsgBox ("N° de compte non valide")
        TextBox75 = Mid(TextBox75, 1, Len(TextBox75) - 1)
    End If
End Sub

Maintenant, tu dois avoir assez d'exemples dans les codes fournis, pour faire des adaptations. Si tu as des questions pour adapter, fais moi signe.

A+
 
Re : Rendre obligatoire la saiaie dans champs d'un usf

Salut Fredoo
Merci pour le feedback et surtout pour les correstions.
J'ai omis de te signaler quelque chose:
lorsque dans les textbox en question listés, l'utilisateur ne saisit rien, le curseur le curseur ne reste pas dans le meme textbox. je souhaite que lorsque l'utilisateur ne saisit rien et fait ENTREE pour passer, que le traitement soit le meme comme s'il avait saisit une données invalid.
EX: dans le cas ou il ne saisit rien, le message suivant apparait : saisie obligatoire.
Merci pour votre disponibilité
 
Re : Rendre obligatoire la saiaie dans champs d'un usf

bonjour tous🙂
"brut" on peut ecrire cela ......eventuellement mettre a cote des 3 textboxs concernées un label expliquant comment les renseignées

Code:
Private Sub TextBox73_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 If Not TextBox73 Like "[0-9]" Then _
 Cancel = True: MsgBox "vous devez taper uniquement un seul chiffre dans cette box"
End Sub
Private Sub TextBox73_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TextBox74_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 If TextBox74 = "" Then _
 Cancel = True: MsgBox "vous devez taper uniquement des chiffres dans cette box  10 maxi"
End Sub
Private Sub TextBox74_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub TextBox75_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox75) <> 12 Then _
 Cancel = True: MsgBox "vous devez taper uniquement des chiffres dans cette box  au nombre de 12 "
End Sub
Private Sub TextBox75_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

apres il faut coder ton bouton valider pour empecher validation si tous les textboxs pas renseignées comme il se doit

ps j'ai oublie de preciser que j'ai modifier MaxLength dans propriétee de chaque textboxs concernées

MaxLength =1 pour textbox73
MaxLength =10 pour textbox74
MaxLength =12 pour textbox75
 
Dernière édition:
Re : Rendre obligatoire la saiaie dans champs d'un usf

salut

Si... tu ajoutes des labels comme le propose laetitia 🙂, tu peux te dispenser d'alourdir les code avec des messages d'erreur. Une autre variante
Code:
Private Sub TextBox73_Change()
  If TextBox73 <> "" Then
    If Not IsNumeric(TextBox73) Then
      MsgBox "il faut une somme !", vbCritical, "Saisie refusée..."
      TextBox73 = Left(TextBox73, Len(TextBox73) - 1)
    End If
  End If
End Sub
Private Sub TextBox73_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  Cancel = TextBox73 = ""
End Sub
Private Sub TextBox57_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  Cancel = Not (TextBox57 Like "*@*.*")
End Sub
Private Sub TextBox75_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  Cancel = Len(TextBox75) < 13
End Sub
 
Re : Rendre obligatoire la saiaie dans champs d'un usf

Salut SI

Merci pour ta solution que j'apprécie.
Code:
Private Sub TextBox73_Change()
   If TextBox73 <> "" Then
     If Not IsNumeric(TextBox73) Then
       MsgBox "il faut une somme !", vbCritical, "Saisie refusée..."
       TextBox73 = Left(TextBox73, Len(TextBox73) - 1)
     End If
   End If
 End Sub
 Private Sub TextBox73_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   Cancel = TextBox73 = ""
 End Sub
 Private Sub TextBox57_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   Cancel = Not (TextBox57 Like "*@*.*")
 End Sub
 Private Sub TextBox75_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   Cancel = Len(TextBox75) < 13
 End Sub
Avec votre code ci-dessous, comment faire pour qu'un usf s'affiche dèque la valeur saisie est correcte?
Le nom de mon usf est Infocplement.
Merci à tous ceux qui ont pu apporter une contribution dans ce post.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
962
E
Réponses
6
Affichages
1 K
erictran
E
T
Réponses
2
Affichages
1 K
Tava94
T
Retour