Valider userform apres remplissage derniere texbox

Bonjour je souhaite pouvoir validé un formulaire sans bouton lors du remplissage de la derniere texbox avec une constante a 10 caractere ?

Pouvez vous me venir en aide ?

Bonjour depanmonpc,

Je te propose ce code VBA, où le MsgBox est pour vérifier que 10 caractères ont bien été saisis :

Private Sub TextBox1_Change()
  If Len(TextBox1) = 10 Then MsgBox TextBox1: Unload Me
End Sub

Ensuite, en enlevant ce MsgBox :

Private Sub TextBox1_Change()
  If Len(TextBox1) = 10 Then Unload Me
End Sub

dhany

Merci dhany, pour votre aide je dois integrer cela sur mon userform gestion bl disponible sur mon autre post. J integre cela demain et t informe de l evolution. Encore merci de consacre du temps. Bonne nuit

Bonsoir Dhany,

je viens d'integrer ton code mais cela ferme ma fenetre, le but etant de validé les données presentes dans l'userform et de le garder ouvert afin de poursuivre ma saisie.

Desolé de t'embeter encore mais peu tu y jeter un oeil ?

Bonsoir depanmonpc,

Tu a écrit :

je viens d'intégrer ton code mais cela ferme ma fenêtre

Oui, c'est normal, car c'est Unload Me qui ferme le formulaire UserForm.


Tu a écrit :

le but est de valider les données présentes dans l'UserForm et de le garder ouvert afin de poursuivre la saisie.

Dans ce cas, pour ton formulaire sans bouton de validation, il faudrait ceci :

Private Sub TextBox1_Change()
  If Len(TextBox1) < 10 Then Exit Sub
  ' 1) ici, appeler une Sub Valid() pour contrôler que toutes les données du formulaire sont correctes
  '    au début de cette sub : flag = True (on pré-suppose que toutes les données sont correctes)
  '    ensuite, s'il y a une donnée incorrecte : flag = False: Exit Sub ' sortie de la sub Valid()
  If flag = False Then Exit Sub ' sortie de la sub actuelle : TextBox1_Change()
  ' 2) écrire toutes les données du formulaire sur la ou les feuille(s) de calcul adéquate(s)
  ' 3) effacer toutes les données du formulaire UserForm pour faire une nouvelle saisie
End Sub

NB : le formulaire est toujours resté ouvert : pas de Unload Me ➯ pas de fermeture du UserForm !

dhany

Bonjour,

tu as aussi l' événement exit

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'si c'est pas ok , tu restes dans la case
'ici j' efface la textbox (par exemple) 
Cancel=0
'si c'est ok , tu sort et tu valide tes données
'ici validation des données
Cancel=1
End Sub

@+JP

Dhany tu pourrais me dire ou je dois integrer le code car cela n'a aucun effet sur mon Userform je pense que je l'integre au mauvais endroit.

Bonjour depanmonpc,

J'ai dû m'absenter longtemps, et je viens tout juste de lire ton message d'hier à 22:53.

Pour t'aider davantage, le mieux est que tu joignes ton fichier Excel (sans données confidentielles) :

clique sur le bouton « Ajouter des fichiers » situé en bas de la fenêtre d'édition de ton post.

dhany

Bonjour Dhany,

je viens te mettre en ligne le fichier Gestion_bl_blq11,

Bonne journée

Bonjour depanmonpc,

je souhaite pouvoir valider un formulaire sans bouton lors du remplissage de la dernière TextBox avec une constante à 10 caractères

J'ai déjà fait sur ton fichier un gros travail d'amélioration, mais pour continuer, j'ai besoin de 2 renseignements :

1) Sur les 3 formulaires, lequel est concerné ? CONSULT ? USF_C ? ou USF_M ?

(tu parlais d'un formulaire sans bouton, mais tous en ont au moins un !)

2) Sur ce formulaire, quel est le nom de la dernière TextBox concernée ?

a) sur CONSULT : TextBox de Zone stockage ; nom : TextBox3

b) sur USF_C : TextBox de Zone stockage ; nom : TextBox2

c) sur USF_M : TextBox de Quantité ; nom : TextBox2

d) si autre, merci de l'indiquer de la même façon.

[s=co-f00][/s]Si c'est Zone stockage, je veux bien croire que c'est une donnée de 10 caractères,

mais si c'est Quantité, j'ai un léger doute car ça me paraît beaucoup !

dhany

Bonjour Dhany,

Le formulaire concerné est USF_C ajout colis sur zone.

sur USF_C : TextBox de Zone stockage ; nom : TextBox2

Effectivement au depart, il y avait un bouton mais finalement pour utiliser un scan que je ne peux configuré ( utilisé egalement sur d'autres applicatifs), la solution trouvé etais de supprimé le bouton (validation) pour pouvoir remplir le formulaire en boucle.

Bonne journée

Je te retourne ton fichier Excel :

J'ai fait beaucoup de modifications, et pas seulement pour le formulaire USF_C !

comme j'ai modifié TOUT le code VBA, vérifie bien TOUT !

À te lire pour avoir ton avis, bonne journée à toi aussi.

dhany

Pour commencer mille merci pour l'aide que tu m'apporte et apporte à tous les utilisateur du forum EXCEL-PRATIQUE

Parfait la modification du formulaire, j'adore egalement le petit message d'accueil !!!!

comment je peux appliqué la même modification au formulaire de sortie?

J'obtiens un debogage sur l'onglet consultation :

    Range("A2:D" & Derlig).Sort Key1:=[A2], Order1:=1, Key2:=[B2], Order2:=1, _
      Header:=0, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Bon week end

Bonjour depanmonpc,

Merci pour ton retour !

J'suis ravi qu't'aies apprécié le p'tit message d'accueil !

Voici la nouvelle version du fichier :

Bon weekend à toi aussi !

dhany

Bonsoir Dhany je met en production ce fichier cette semaine, et reviens vers toi pour te dire comment cela se passe sur le terrain.

Bonne soirée et encore merci pour ton aide precieuse

Bonjour Dhany,

j'ai souhaité mettre le fichier en prod aujourd'hui mais,

je rencontre un probleme, sur le formulaire entrée stock, la quantité (qui doit rester 1) disparait suite a la 1ere entree.

et je passe en mode debug

debug 2 debug 1

Pourrais tu voir pour corriger cela ?

Bon fin d'aprem

screen

Ajout :

* sur ta 2ème copie d'écran, il y a le message "Erreur d'exécution '13' : Incompatibilité de type"

* sur ta 1ère copie d'écran, la ligne sur fond jaune est : .Offset(, 1) = CDbl(TextBox1)

Je crois que ça devrait marcher avec : .Offset(, 1) = CDbl(Val(TextBox1))

Ceci pour le formulaire USF_C ; donc SEULEMENT SI c'est OK, fais la même chose dans USF_M :

Private Sub B_valid2_Click()
  Dim xQ%
  With Worksheets("MIF").Cells(ligne, 2)
    '--- Transfert Formulaire dans MIF
    .Offset(, 3) = CDbl(Val(TextBox2))
    .Offset(, 1) = UCase(TextBox3)
    .Offset(, 4).FormulaR1C1 = "=SUM(RC[-4])-RC[-1]"
    xQ = Val(.Offset(, 4)): .Value = xQ
    TextBox4 = xQ: TextBox5 = Date: TextBox2 = ""
    .Offset(, 1).Resize(, 2).ClearContents
  End With
End Sub

Si c'est toujours pas réglé, il me faudrait un fichier avec plus de données !

Sans que ce soit des données confidentielles, il faut que ces données soient

plus représentatives et plus significatives par rapport à ton cas réel.

À te lire pour la suite.

dhany

Bonsoir Dhany, merci pour tes corrections, je teste cela des demain...

Bon week end

Bonsoir Dhany, j'espere que tu as passé un bon weekend.

j'ai fait les corrections que tu m'as indiqué :

CDbl(Val(TextBox1))

effectivement je n'ai plus de message d'erreur suite à la correction sur les deux formulaires. USF_C et USF_M

Concernant le nombre de colis la quantité (1) s'efface lors de la validation automatique du formulaire.

Cette validation automatique s'effectue lors du remplissage avec 10 caractères du champs zone de stockage.

blq 150418

Bonne soirée !!! à bientot

Bonjour depanmonpc,

Merci pour les !

Dans ton message précédent, tu as très bien expliqué où se situe le problème !

ce qui m'a bien aidé pour le corriger :

Dans USF_C, sub TextBox2_Change() : Call B_Valid_Click: TextBox2 = "": TextBox1 = "1"

j'ai mis la ligne entière même si je n'ai changé que la dernière instruction,

pour que tu puisses mieux situer où est le changement

J'ai pris le fichier qui était joint dans mon message du 7 avril à 08:56, et où j'ai bien sûr ajouté ces 2 modifs que tu connais déjà :

.Offset(, 1) = CDbl(Val(TextBox1)) et .Offset(, 3) = CDbl(Val(TextBox2)) ; donc si tu as ajouté des modifs que je ne connais pas, il faut que tu les rajoute dans ce fichier ; mais le plus simple serait que tu ajoutes la modif que j'ai faite dans ton fichier actuel ➯ seulement : TextBox1 = "1"

Je te laisse faire les tests, et me donner ton avis.

dhany

Rechercher des sujets similaires à "valider userform remplissage derniere texbox"