Obliger saisie dans textbox/combobox

Résolu
pftmarine Messages postés 32 Date d'inscription   Statut Membre Dernière intervention   -  
Iama Messages postés 324 Statut Membre -
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

  1. WeaponEDGE Messages postés 114 Statut Membre 9
     
    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
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
  3. Iama Messages postés 324 Statut Membre 14
     
    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
  4. pftmarine Messages postés 32 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    1. pftmarine Messages postés 32 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci beaucoup pour votre aide Iama !! Tout marche c'est nickel :)

      Cdlt
      0
    2. Iama Messages postés 324 Statut Membre 14
       
      Salut, j'en suis très content.

      Oublie pas de signaler que le sujet est résolu

      Iama
      A+
      0