speedou92
Messages postés7Date d'inscriptionmercredi 24 juillet 2013StatutMembreDernière intervention29 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?
speedou92
Messages postés7Date d'inscriptionmercredi 24 juillet 2013StatutMembreDernière intervention29 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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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.
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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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 !
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...)