Obliger saisie dans textbox/combobox

Résolu/Fermé
pftmarine Messages postés 32 Date d'inscription mercredi 18 juin 2014 Statut Membre Dernière intervention 3 décembre 2016 - Modifié par pijaku le 28/07/2014 à 16:26
Iama Messages postés 319 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 27 mars 2020 - 29 juil. 2014 à 19:03
Bonjour,

Ne trouvant pas de solutions qui me conviennent sur le forum et sur d'autres sites, je fais appel à vous !

J'ai crée un formulaire de saisie pour alimenter un tableau, tout fonctionne très bien mais je souhaiterai que lorsque l'utilisateur cliquera sur "Valider", il y ait une vérification que tous les combobox et textbox est bien était renseignés sinon qu'il apparaisse un message d'erreur lui disant de bien renseigner tous les champs. (J'ai 15 combobox qui doivent toutes être renseigné et 3 textbox dont 2 qui peuvent être vides )

Pour l'instant voici un aperçu de mon code pour mon bouton "Valider" :

'Pour le bouton Valider
Sub cmdOK_Click()
Dim L As Integer
L = Sheets("Janvier").Range("a1000").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
Range("A" & L).Value = ComboBox1 'Nom
Range("B" & L).Value = ComboBox6 'Prénom
Range("H" & L).Value = ComboBox5
Range("I" & L).Value = ComboBox4
Range("J" & L).Value = ComboBox10
Range("K" & L).Value = ComboBox9
Range("L" & L).Value = ComboBox7
Range("M" & L).Value = ComboBox13
Range("N" & L).Value = TextBox1 'Date d'entrée
Range("O" & L).Value = TextBox3 'Date de sortie - Peut être vide
Range("Q" & L).Value = ComboBox3
Range("S" & L).Value = ComboBox18
Range("T" & L).Value = ComboBox11
Range("U" & L).Value = ComboBox15
Range("V" & L).Value = ComboBox16
Range("W" & L).Value = ComboBox17
Range("X" & L).Value = TextBox4 'Observations - Peut être vide

Unload Me
End Sub

Je vous remercie d'avance :)



4 réponses

WeaponEDGE Messages postés 113 Date d'inscription vendredi 18 juillet 2014 Statut Membre Dernière intervention 21 novembre 2014 9
Modifié par pijaku le 28/07/2014 à 16:27
Bonjour, il faudrait rajouter ce code en début de macro :

Nb_cmb = 15
Nb_Txb = 3

for i = 1 to Nb_cmb
if userform1.controls("ComboBox" & i)="" then
msgbox("Merci de remplir tous les champs.")
exit sub
end if
next i

for i = 1 to Nb_Txb
if userform1.controls("TextBox" & i)="" then
msgbox("Merci de remplir tous les champs.")
exit sub
end if
next i

Pour que cette Marco fonctionne, il faut que le formulaire s'appelle Userform1, que les ComboBox s'appelle ComboBox1 à ComboBox15 et les TextBox TextBox1 à TexBox3
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
28 juil. 2014 à 16:27
Bonjour

Renumerote tes combobox pour avoir des n°s qui se suivent de 1 à 14

Code à mettre en début de ta macro

bad = 0
For n = 1 To 14
If Me.Controls("ComboBox" & n).Value = "" Then bad = bad + 1
Next n
If Me.TextBox1.Value = "" Then bad = bad + 1
If bad > 0 Then MsgBox (bad & " renseignements manquants, validation impossible") :exit sub

Cdlmnt

0
Iama Messages postés 319 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 27 mars 2020 14
28 juil. 2014 à 16:47
Bonjour pftmarine

Pour m'a part, je contrôle les entrées, une par une, au début de la validation.

C'est un peu bourrin, mais ça me permet d'adapter mon message en fonction de la donnée manquante.
Ou de vérifier si une donnée correspond à l'entrée attendu (date, nombre) pour les TextBox1 ou autre

style:
if ComboBox1= "" then MsgBox("..."): end sub

Une autre solution
cordialement
0
pftmarine Messages postés 32 Date d'inscription mercredi 18 juin 2014 Statut Membre Dernière intervention 3 décembre 2016
28 juil. 2014 à 17:17
Merci à tout le monde pour les réponses !
J'ai finalement appliqué la dernière un peu "bourrin" ;) mais plus rapide et plus simple à comprendre et à mettre en place pour moi qui débute en vba.

De plus ce n'est pas moi qui gérera le fichier ensuite et la personne qui prendra le relais s'y connait peu en vba donc si elle doit modifier le code il vaut mieux quelque chose de simple à comprendre.

Et par contre autre question, je souhaiterai limiter la saisie des dates, c'est à dire que par exemple dans mon formulaire de janvier je voudrais qu'il ne soit possible de saisir qu'une date comprise entre le 01/01/2014 et 31/01/2014 (j'ai 1 textbox date de début et 1 textbox de fin).

Merci encore !
0
Iama Messages postés 319 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 27 mars 2020 14
28 juil. 2014 à 18:57
bonsoir
Je t'ai une proposition
https://www.cjoint.com/?3GCs3typZ6Z
0
Iama Messages postés 319 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 27 mars 2020 14
28 juil. 2014 à 21:18
Rebonsoir

En tenant compte du cas ou il n'y a pas de date de fin
https://www.cjoint.com/?3GCvqZSGv5i

Cordialement
0
pftmarine Messages postés 32 Date d'inscription mercredi 18 juin 2014 Statut Membre Dernière intervention 3 décembre 2016
29 juil. 2014 à 09:34
Merci beaucoup pour votre aide Iama !! Tout marche c'est nickel :)

Cdlt
0
Iama Messages postés 319 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 27 mars 2020 14
29 juil. 2014 à 19:03
Salut, j'en suis très content.

Oublie pas de signaler que le sujet est résolu

Iama
A+
0