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 Me

Le 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 Me

Bonjour,

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 Me

Bonjour,

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 Me

Pour 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?

Rechercher des sujets similaires à "controles textbox combobox conditions"