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

Vba rendre obligatoire la saisie dans les formulaires

9 réponses
Avatar
fbr
Bonjour,

Quels moyens a t'on pour rendre obligatoire la saisie dans les formulaires?
Par exemple tant qu'un textbox n'est pas rempli, on ne peut pas passer à
l'onglet suivant.

merci pour vos réponses.

fred

9 réponses

Avatar
anonymousA
Bonjour,

soit tu portes le focus sur le textbox à l'ouverture du userform et tu
en empêches la sortie par les evenements disponibles sur le textbox
tant que quelque chose n'est pas rempli.
Soit tu laisses l'utilisateur écrire ce qu'il veut comme il veut et tu
fais un test à la sortie du formulaire pour vérifier que le textbox a
été rempli. SI c'est le cas, tu poursuis, autrement tu envoies un
message pour prévenir l'utilisateur. Perso, je préfère la dernière
option.

A+
Avatar
fbr
Je choisi la 2eme possibilités dans ce cas que faut il faire? Si ce n'est
pas trop demander

merci d'avance


"anonymousA" a écrit dans le message de news:

Bonjour,

soit tu portes le focus sur le textbox à l'ouverture du userform et tu
en empêches la sortie par les evenements disponibles sur le textbox
tant que quelque chose n'est pas rempli.
Soit tu laisses l'utilisateur écrire ce qu'il veut comme il veut et tu
fais un test à la sortie du formulaire pour vérifier que le textbox a
été rempli. SI c'est le cas, tu poursuis, autrement tu envoies un
message pour prévenir l'utilisateur. Perso, je préfère la dernière
option.

A+
Avatar
anonymousA
Imaginons que tu aies un bouton (commandbutton) appelé Validation. Tu
écris la procédure suivante dans le Userform

Private Sub Validation_Click()

If Len(Me.TextBox1) = 0 Then MsgBox "saisir quelque chose"

End Sub

si tu veux des tests plus élaborés sur la nature de ce qui a été
saisi , alors ca se complique mais ce n'est pas forcément infaisable.

A+
Avatar
fbr
Merci cela fonctionne bien, mais cela ne les bloquent pas completement car
la procédure continu. Peut t'on continuer le code en ecrivant si ce champs
est vide alors msgbox "machintruc" et cela stop le reste des actions"?
merci
"anonymousA" a écrit dans le message de news:

Imaginons que tu aies un bouton (commandbutton) appelé Validation. Tu
écris la procédure suivante dans le Userform

Private Sub Validation_Click()

If Len(Me.TextBox1) = 0 Then MsgBox "saisir quelque chose"

End Sub

si tu veux des tests plus élaborés sur la nature de ce qui a été
saisi , alors ca se complique mais ce n'est pas forcément infaisable.

A+
Avatar
Damien Kergosien
Bonjour fbr
il faudrait compléter la procédure avec
Me.TextBox1.setfocus
pour resélectionner le texbox1 et doncc inviter explicitement à une
saisie.

Damien

Merci cela fonctionne bien, mais cela ne les bloquent pas completement car la
procédure continu. Peut t'on continuer le code en ecrivant si ce champs est
vide alors msgbox "machintruc" et cela stop le reste des actions"?
merci
"anonymousA" a écrit dans le message de news:

Imaginons que tu aies un bouton (commandbutton) appelé Validation. Tu
écris la procédure suivante dans le Userform

Private Sub Validation_Click()

If Len(Me.TextBox1) = 0 Then MsgBox "saisir quelque chose"

End Sub

si tu veux des tests plus élaborés sur la nature de ce qui a été
saisi , alors ca se complique mais ce n'est pas forcément infaisable.

A+


Avatar
anonymousA
Je ne vois pas ce que tu veux dire. Si dans le bouton de validation ,
tu testes si la textbox est vide ( et c'est bien ce que fait
len(Me.Textbox1)=0 ) alors il te suffit de bloquer la validation en
envoyant un Exit Sub avant la suite de ta macro

Private Sub Validation_Click()

If Len(Me.TextBox1) = 0 Then
MsgBox "saisir quelque chose"
Exit Sub
End if

'ici la suite normale de ta macro si le test de validation conduit à
l'assurance qu'il y a quelque chose dans le TextBox

End Sub
Avatar
fbr
merci beaucoup cela fonctionne parfaitement
"anonymousA" a écrit dans le message de news:

Je ne vois pas ce que tu veux dire. Si dans le bouton de validation ,
tu testes si la textbox est vide ( et c'est bien ce que fait
len(Me.Textbox1)=0 ) alors il te suffit de bloquer la validation en
envoyant un Exit Sub avant la suite de ta macro

Private Sub Validation_Click()

If Len(Me.TextBox1) = 0 Then
MsgBox "saisir quelque chose"
Exit Sub
End if

'ici la suite normale de ta macro si le test de validation conduit à
l'assurance qu'il y a quelque chose dans le TextBox

End Sub
Avatar
fbr
Petit détail supplémentaire que je n'avais pas vérifié :

Ma procédure se bloque lorsque une zone obligatoire n'est pas saisie, mais
lorsque, on retourne dans la cellule pour saisir qqchose et que l'on valide,
cela ne fais plus, rien. comme si le bouton était désactivé, je vous écris
le détail de ma sub :

Private Sub CmdVisuFeuille_Click()
'Contrôle les saisies obligatoires si pas saisie on annule la validation et
on retourne dans la celulle visée

'Zone obligatoire : Commercial 1
If Len(Me.CboCommercial1.Text) = 0 Then MsgBox "Saisie du commercial
obligatoire, procédure annulée"
Call Me.CboCommercial1.SetFocus
Exit Sub


'Ferme le formulaire et ouvre la feuille

Dim MaRep
MaRep = MsgBox("Saisie terminée? Sinon vous devrez continuez sur la
feuille", vbYesNoCancel)
'Pose la question après avoir cliqué sur le bouton "terminer et... "pour
verifier le clic

If MaRep = vbYes Then 'pose la condition du oui non annuler
Call CmdValider_Click
Unload Me
Sheets("memo").Select
End If 'ferme la condition
End Sub


Je crois qu'il faut que j'organise ca un peu mieux pour faire le lien entre
la fin de la vérification des zones obligatoires et la validation des
données.

merci



"fbr" a écrit dans le message de news:

merci beaucoup cela fonctionne parfaitement
"anonymousA" a écrit dans le message de news:

Je ne vois pas ce que tu veux dire. Si dans le bouton de validation ,
tu testes si la textbox est vide ( et c'est bien ce que fait
len(Me.Textbox1)=0 ) alors il te suffit de bloquer la validation en
envoyant un Exit Sub avant la suite de ta macro

Private Sub Validation_Click()

If Len(Me.TextBox1) = 0 Then
MsgBox "saisir quelque chose"
Exit Sub
End if

'ici la suite normale de ta macro si le test de validation conduit à
l'assurance qu'il y a quelque chose dans le TextBox

End Sub




Avatar
fbr
Quelqu'"un aurait une solution je n'arrive pas à avancer? merci fred
"fbr" a écrit dans le message de news:

Petit détail supplémentaire que je n'avais pas vérifié :

Ma procédure se bloque lorsque une zone obligatoire n'est pas saisie, mais
lorsque, on retourne dans la cellule pour saisir qqchose et que l'on
valide, cela ne fais plus, rien. comme si le bouton était désactivé, je
vous écris le détail de ma sub :

Private Sub CmdVisuFeuille_Click()
'Contrôle les saisies obligatoires si pas saisie on annule la validation
et on retourne dans la celulle visée

'Zone obligatoire : Commercial 1
If Len(Me.CboCommercial1.Text) = 0 Then MsgBox "Saisie du commercial
obligatoire, procédure annulée"
Call Me.CboCommercial1.SetFocus
Exit Sub


'Ferme le formulaire et ouvre la feuille

Dim MaRep
MaRep = MsgBox("Saisie terminée? Sinon vous devrez continuez sur la
feuille", vbYesNoCancel)
'Pose la question après avoir cliqué sur le bouton "terminer et...
"pour verifier le clic

If MaRep = vbYes Then 'pose la condition du oui non annuler
Call CmdValider_Click
Unload Me
Sheets("memo").Select
End If 'ferme la condition
End Sub


Je crois qu'il faut que j'organise ca un peu mieux pour faire le lien
entre la fin de la vérification des zones obligatoires et la validation
des données.

merci



"fbr" a écrit dans le message de news:

merci beaucoup cela fonctionne parfaitement
"anonymousA" a écrit dans le message de news:

Je ne vois pas ce que tu veux dire. Si dans le bouton de validation ,
tu testes si la textbox est vide ( et c'est bien ce que fait
len(Me.Textbox1)=0 ) alors il te suffit de bloquer la validation en
envoyant un Exit Sub avant la suite de ta macro

Private Sub Validation_Click()

If Len(Me.TextBox1) = 0 Then
MsgBox "saisir quelque chose"
Exit Sub
End if

'ici la suite normale de ta macro si le test de validation conduit à
l'assurance qu'il y a quelque chose dans le TextBox

End Sub