Validation userform avec contrôles

M

Manu

Guest
Bonjour à tous,

j'aurai besoin d'aide. :(

J'ai un formulaire avec une dizaine de textbox, d'optionbox et quelques listbox.

Sur ces contrôles, j'impose une règle de saisie (ou sélection) ou un format.

Lorsque je clique sur mon bouton valider j'effectue une vérification et si c'est ok je lance mon deuxième userform.

Si ce n'est pas OK j'affiche un msgbox adéquat et ce tant que ce n'est pas correct.

Or dès que je clique sur le bouton OK de mon msgbox cela lance mon 2ème userform.

J'aimerai que dès qu'un message s'affiche mon userform2.show ne se produise pas.

Voici un petit exemple (soyez indulgent) avec 2 contrôles et une barre de progression

Code:
Private Sub Etap_suiv1_Click()

If TextBox25.Value = '' Then
MsgBox 'Merci de saisir un code agence valide.', vbCritical, 'Erreur de saisie'
ElseIf Not IsNumeric(TextBox25) Then
MsgBox 'Le code agence est incorrect, le N° que vous avez saisi comporte un caractère alphabétique, merci de corriger.', vbCritical, 'Erreur de saisie'
ElseIf Len(TextBox25) < 5 Then
MsgBox 'Le code agence que vous avez saisi n'est pas correct, il manque au moins un chiffre, merci de corriger.', vbCritical, 'Erreur de saisie'
End If

If TextBox26.Value = '' Then
MsgBox 'Merci de saisir un code banque valide.', vbCritical, 'Erreur de saisie'
ElseIf Not IsNumeric(TextBox25) Then
MsgBox 'Le code banque est incorrect, le N° que vous avez saisi comporte un caractère alphabétique, merci de corriger.', vbCritical, 'Erreur de saisie'
ElseIf Len(TextBox25) < 5 Then
MsgBox 'Le code banque que vous avez saisi n'est pas correct, il manque au moins un chiffre, merci de corriger.', vbCritical, 'Erreur de saisie'
End If

'barre de progession
    Application.Cursor = xlWait
    Me.LabProg21.Width = 0
    Me.LabPct1.Visible = True
    lngMax = CLng(Me.TebMax.Value)
    j = (Me.LabProg21.Left - Me.LabProgressBar2.Left) * 2
    For i = 1 To lngMax
      '-- ProgressBar2
      '-- Augmente la longueur du contrôle 'LabProg21'
      MajProgBar2
    Next i
    Application.Cursor = xlDefault
UserForm1.Hide
UserForm2.Show

A noter que l'on peut peut-être simplifier le code de mes règles de vérification.

Merci pour tout.

A +
 

adebrux

XLDnaute Occasionnel
Salut manu,

Il me semble normal qu'à chaque OK sur tes MSgBox ça lance ton USF2, c'est ce que tu lui dit de faire. En gros, qd tu clique sur OK, tu sors de ta condition, et donc tu continue l'éxécution de ton programme, à savoir la progress bar et l'affichage du USF2.

Pour éviter ça, tu devrait peut être mettre la fin de ton code dans une boucle de condition.
Genre, à chacun de tes test pour tes formats d'options, textbox etc., si c valider, tu implémente une variable de 1.

Et tu teste la valeur de cettevariable avant de lancer ton USF 2.

Par contre n'oublie pas de le réinitialisé au début de ta procédure de click.

J'espère avoir été clair dans l'esprit du machin :lol:

Bon, g pas le temps de te faire une démo, on est vendredi soir, mais vois si tu peux creuser par là.

Bon courage

Arnaud
 

salim

XLDnaute Occasionnel
Bonsoir

Manu ton UserForm2 apparaît chaque fois parceque que tu ne sorts pas de la procédure après tes tests il faut que tu mette tout simplement
Code:
Exit Sub
juste après le
Code:
End if
de chacun de tes deux bloques
Code:
If Then .....End if
sinon le programme lui n'a pas reçu l'ordre de sortir si elle n'est pas respecteé (la condition) il a juste reçu l'ordre de faire apparaître un message donc après le message il continue son chemin jusqu'au
Code:
UserForm2.Show
. Voilà j'espère t'avoir aider.

salim
 

Statistiques des forums

Discussions
312 391
Messages
2 087 948
Membres
103 682
dernier inscrit
Thomas23