Contrôles sur textbox et combobox - Conditions
Bonjour à tous,
J'ai un userform à partir duquel le client saisit ses données générales (nom, adresse, code postal ect...) J'ai réussi à faire un codes permettant la validation des données :
If TextBox1 = "" Or TextBox8 = "" Or TextBox9 = "" Or TextBox17 = "" Or ComboBox3.ListIndex < 0 Or ComboBox4.ListIndex < 0 Or ComboBox5.ListIndex < 0 Or ComboBox6.ListIndex < 0 Or ComboBox8.ListIndex < 0 Then
MsgBox "Merci de compléter le mandat : les données avec un * sont obligatoires"
Exit Sub
End If
Unload Meça me permet de revenir sur le userform pour compléter, sans effacer ce qui a été déjà saisi.
Mais je souhaitais ajouter d'autres contrôles conditionnels : si les textbox 1, 2, 3 sont saisies inutiles de saisir les 4 et 5, et vice versa. J'ai donc ajouté ce code en dessous du précèdent :
If TextBox11 = "" Or TextBox12 = "" Or TextBox13 = "" Or TextBox14 = "" Then
'MsgBox "Merci de compléter les données BIC IBAN"
TextBox11.BackColor = vbgrey
TextBox12.BackColor = vbgrey
TextBox13.BackColor = vbgrey
TextBox14.BackColor = vbgrey
Exit Sub
End If
Unload Me
If TextBox15 = "" Or TextBox16 = "" Then
TextBox15.BackColor = vbgrey
TextBox16.BackColor = vbgrey
MsgBox "Merci de compléter les données RIB"
Exit Sub
End If
Unload MeLe problème est que ça ne fonctionne pas, le reste de la procédure ne se déroule pas. Auriez vous des suggestions?
Merci beaucoup par avance.
Bonjour
J'explique mon raisonnement
3 cas peuvent se produire
Condition1 = 4 TextBox (11, 12, 13 et 14)
Condition2 = 2 TextBox (15 et 16)
Cas 1 : Condition1 : OUI donc pas la peine de vérifier Condition2 --> Pas message d'erreur
Cas 2 : Condition1 : NON et Contition2 : OUI ---> Pas de message d'erreur
Cas 3 : Condition1 : NON et Condition2 : NON --> Message d'erreur (Lequel ? Sur Condition1 ou sur Condition 2 ou sur les 2 ? )
Donc on teste condition1 et si pas ok on teste condition2 et si pas ok on colorise lesTetxBox .... c'est la question
Bien sur sans test
If TextBox11 = "" Or TextBox12 = "" Or TextBox13 = "" Or TextBox14 = "" Then
' Si 1 des 4 TextBox est vide on vérifie les 2 autres
If TextBox15 = "" Or TextBox16 = "" Then
' 1 des 2 autres est vide
'MsgBox "Merci de compléter les données BIC IBAN"
TextBox11.BackColor = vbgrey
TextBox12.BackColor = vbgrey
TextBox13.BackColor = vbgrey
TextBox14.BackColor = vbgrey
'MsgBox "Merci de compléter les données RIB"
TextBox15.BackColor = vbgrey
TextBox16.BackColor = vbgrey
Exit Sub
End If
End If
Unload MeBonjour,
Merci de votre aide.
En fait c'est plutôt :
si condition 1 est vide => vérifier Condition 2=> si non vide = ok, pas d'erreur; si vide, message d'erreur
Si condition 1 non vide => vérifier condition 2 => si vide => ok pas d'erreur; si non vide, message d'erreur.
En fait soit, les TextBox 11,12,13 et 14 sont remplies soit ce sont les 15 et 16, mais pas toutes ensembles.
J'essaie, en adaptant à mon besoin, le code proposé.
Bonjour
Pas simple
A essayer
If TextBox11 <> "" And TextBox12 <> "" And TextBox13 <> "" And TextBox14 <> "" Then
' Les 4 Textbox ne sont pas vides
If TextBox15 <> "" And TextBox16 <> "" Then
' Les 2 autres ne sont pas vides
MsgBox "Il faut choisir 4 ou 2"
'MsgBox "Merci de compléter les données RIB"
TextBox15.BackColor = vbgrey
TextBox16.BackColor = vbgrey
'MsgBox "Merci de compléter les données BIC IBAN"
TextBox11.BackColor = vbgrey
TextBox12.BackColor = vbgrey
TextBox13.BackColor = vbgrey
TextBox14.BackColor = vbgrey
Exit Sub
End If
Else
' Si 1 des 4 TextBox est vide on vérifie les 2 autres
If TextBox15 = "" Or TextBox16 = "" Then
' 1 des 2 autres est vide
MsgBox "Bloc de 4/2 non complet"
' Quelle erreur ?
'MsgBox "Merci de compléter les données RIB"
TextBox15.BackColor = vbgrey
TextBox16.BackColor = vbgrey
'MsgBox "Merci de compléter les données BIC IBAN"
TextBox11.BackColor = vbgrey
TextBox12.BackColor = vbgrey
TextBox13.BackColor = vbgrey
TextBox14.BackColor = vbgrey
Exit Sub
End If
End If
Unload MeBonjour,
Alors j'ai testé, et retesté dans tous les sens, et ça ne fonctionne pas. Du moins pas dans la totalité comme je le souhaite.
On m'a suggéré l'utilisation de frames : mettre mes deux groupes de textbox dans des frames, et un boucle pour les contrôles. Je suis débutant, donc je ne connais pas cette manière de procéder.
Je vais approfondir le sujet et viendrai mettre le code.
Bonne journée.
Bonjour
bobbymi a écrit :et ça ne fonctionne pas. Du moins pas dans la totalité comme je le souhaite.
Si tu indiquais les cas qui ne correspondent pas à ce que tu souhaites, parce que "ça ne fonctionne pas" c'est aller vite en besogne
Exemple : J'ai coché ... et ... et ... pas ... ni ... et je devrais avoir .....
Je comprendrais mieux où j'ai fait l'erreur
Merci pour moi
En fait c'est que une fois que le msgbox "Bloc de 4/2 non complet" est affiché, la procédure s'arrête, je ne reviens pas au formulaire.
Voici le codes actuel :
'Vérification de la complétude des données de base
If TextBox1 = "" Or TextBox8 = "" Or TextBox9 = "" Or TextBox17 = "" Or ComboBox3.ListIndex < 0 Or ComboBox4.ListIndex < 0 Or ComboBox5.ListIndex < 0 Or ComboBox6.ListIndex < 0 Or ComboBox8.ListIndex < 0 Then
MsgBox "Merci de compléter le mandat : les données avec un * sont obligatoires"
Exit Sub
End If
Unload Me 'Revenir au formulaire pour compléter
'Second contrôle sur la saisie du RIB ou du BIC IBAN
'Si les textbox 11,12,13 et 14 ne sont pas vides alors les textbox 15 et 16 sont vides
If TextBox11 <> "" Or TextBox12 <> "" Or TextBox13 <> "" Or TextBox14 <> "" Then
' Les 4 Textbox ne sont pas vides
If TextBox15 <> "" And TextBox16 <> "" Then
' Les 2 autres ne sont pas vides
MsgBox "Merci de saisir les données RIB ou BIC IBAN"
Exit Sub
End If
Else
' Si 1 des 4 TextBox est vide on vérifie les 2 autres
If TextBox15 = "" Or TextBox16 = "" Then
' 1 des 2 autres est vide
MsgBox "Bloc de 4/2 non complet"
'MsgBox "Merci de compléter les données BIC IBAN"
Exit Sub
End If
End If
Unload MePour rappel, ou précision :
1. Vérification des données de base (coordonnées) => si incomplet, MsgBox et revenir au formulaire
2. Vérification des textBox 11,12,13 et 14 => si non vides TextBox 15 et 16 doivent être vides + MsgBox et revenir au formulaire
3. Vérification des textBox 15 et 16 => si non vides, TextBox 11,12,13 et 14 doivent être vides + MsgBox et revenir au formulaire
4. Une fois toutes ces conditions vérifiées, passer à la suite de la procédure.
Merci beaucoup pour tes conseils
Bonjour
Ah tu me rassures, ce n'est pas avec la macro que je t'ai faite que cela ne fonctionne pas
Pour la prochaine fois avant de dénigrer une solution testes la
Je veux bien accepter les critiques mais injustifiées non
Bonne journée
Non, non, il y a méprise, je ne dénigrai rien, c'est seulement que je ne trouvais pas le moyen de régler le problème.
Pourquoi une fois que le message "Bloc de 4/2 non complet" apparaît je reviens sur la page de saisie de code? Il y aurait une solution?