MsgBox

Résolu
Bonsoir

Je construit un formulaire et je bute sur le msgbox de validation

Dans le formulaire j'ai des texbox et des combobox
Je voudrais qu'à la validation , toutes les cases soient remplies SAUF deux texbox. (Texbox8 et 9) et le combobox 2
je me suis inspiré de ce code ( merci Via55) mais il englobe tous les textbox et combobox de l'uf ..

For Each c In Me.Controls
Select Case TypeName(c)
Case "TextBox", "ComboBox" ' dans le cas où c'est un TBox ou un CBox
If c.Value = "" Then ' si un des Tbox ou Cbx est vide: message et retour à UF
MsgBox "Validation impossible, saisie incomplète!"
Exit Sub
End If
End Select
Next c

Je sillicite votre aide pour le réecrire et mettre une execption sur les texbox 8 et 9 et le combobox 2.

Bien cordialement

3 réponses

  1. Contributeur
    Salut le Forum

    Tu peux utiliser la propriété Tag des contrôles.
        For Each Ctrl In Me.Controls
    If Ctrl.Tag = "fill" And Ctrl.Value = "" Then
    MsgBox "Validation impossible, saisie incomplète!": Exit Sub
    End If
    Next Ctrl

    Mytå
    0
    1. Merci Myta pour ton aide

      mais le code ne fonctionne pas .

      j'ai essayé

      For Each Ctrl In Me.Controls
      If Ctrl.Tag = "" And Ctrl.Value = "" Then
      MsgBox "Validation impossible, saisie incomplète!": Exit Sub
      End If
      Next Ctrl

      mais à la validation du formulaire il me renvoie en erreur à la macro
      0
      1. Contributeur
        Re le Forum

        Il faut remplir la propriété TAG des contrôles a être rempli avec le mot 'fill' dans mon exemple.

        Mytå
        0
    2. Je m'en sortie avec ce code.

      Private Sub CmdRESULT_Click()

      Dim ctrl As Control, ctrlerr As Control
      Dim erreur As Boolean

      For Each ctrl In Me.Controls
      erreur = False
      If textbox1.Text = "" Or textbox2.Text = "" Or textbox3.Text = "" Or ComboBox1.Value = "" Or ComboBox2.Value = "" Or ComboBox3.Value = "" Or ComboBox4.Value = "" Or COMBObox5.Value = "" Then

      erreur = True
      Set ctrlerr = ctrl
      Exit For
      End If

      Next ctrl

      If erreur = True Then
      MsgBox "Vous n'avez pas rempli toutes les zones"
      ctrlerr.SetFocus
      Set ctrlerr = Nothing

      End If

      Merci beaucoup
      0