Contrôles sur textbox et combobox - Conditions

speedou92 Messages postés 7 Date d'inscription mercredi 24 juillet 2013 Statut Membre Dernière intervention 29 juillet 2013 - 31 juil. 2013 à 14:46
 Speedou92 - 6 août 2013 à 09:56
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.
            
                

5 réponses

cs_Trim Messages postés 58 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 3 janvier 2015 1
Modifié par cs_Trim le 1/08/2013 à 04:08
Bonjour,

"Unload Me" décharge ta feuille et la ferme, donc ne l'utilise pas si tu veux garder ta feuille ouverte.

Si tu additionnes tes 2 codes, tu test 2 fois chaque textbox pour voir si elle est vide du coup.
0
speedou92 Messages postés 7 Date d'inscription mercredi 24 juillet 2013 Statut Membre Dernière intervention 29 juillet 2013
1 août 2013 à 13:01
Bonjour,

J'ai donc essayé en enlevant unload me des premières lignes, et ce qui se produisait avant ne fonctionnait plus : pour les coordonnées de base, les données étaient effacées.

J'ai donc remis unload me (meme si je suis sure qu'il doit y avoir mieux.

Ce que je souhaite c'est que si les textbox 11,12, 13 et 14 sont vides, les textbox 15 et 16 le sont.

Mon besoin :

SI textbox 11,12, 13 et 14 sont vides => textbox 15 et 16 non vides. sinon, message d'erreur et retour au formulaire.

Si textbox 11,12,13 et 14 ne sont pas vides, => textbox 15 et 16 vides. Sinon, message d'erreu et retour au formulaire.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 235
1 août 2013 à 16:14
Bonjour,

Le plus simple est de répartir des textboxes à l'intérieur de deux cadres différents (Frame1 et Frame2) et de jouer avec comme tu l'entends.
Regarde ce que ferait ensuite ceci (exemple) :
Private Sub CommandButton1_Click()
Dim c As Control
For Each c In Controls
 Select Case c.Parent.Name
  Case "Frame1"
    c.Text = "titi"
  Case "Frame2"
    c.Text = "toto"
 End Select
Next
End Sub
*
A toi de gérer comme tu l'entends à partir de là. Le reste n'est pas de la technicité, mais de la logique de pensée.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 235
1 août 2013 à 16:23
Je te signale également que si n = 8 (exemple) :
Controls("Textbox" & n) 

se réfère à la textbox TextBox8
Tu peux donc faire tes "conditions" (toutes celles que tu entends faire) sur ces bases simples.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci de ta réponse.

J'ai aussi un mémoire à faire, d'ou ma réponse tardive.

Alors j'ai mis mes deux groupes de textbox dans deux frames différentes.

Les lignes de codes que tu proposes signifie bien :

Pour chaque cellule du contrôle, Si les cellules du frame 1 sont égales à titi, les cellules du frame 2 sont égales à toto ?

A adapter, bien sûr, mais c'est juste pour comprendre.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 235
Modifié par ucfoutu le 6/08/2013 à 09:50
Fais alors ton mémoire en priorité.
Pour le reste (ta question) : un simple test t'aurait donné la réponse !
0
En fait j'ai changé de stratégie, plus "user friendly", si je peux dire : j'ai regroupé les différentes textbox dans deux frames comme suggéré et si l'utilisateur commence à saisir dans une frame, l'autre disparaît.

J'ai aussi ajouté un bouton de validation des données.

De cette manière, les contrôles du bouton "Valider" en fin de formulaire se portent sur les données de base (coordonnées ect...)

Merci beaucoup pour l'aide apportée.
0