(RESOLU)Boucler sur toutes les Textboxes et ComboBox vides avec un message :

chaelie2015

XLDnaute Accro
Bonjour Forum
Ci-dessous un code pour vérifier si toutes les TextBox d’un UserForm ne sont pas vide
Mon souci est quelque TextBox et en plus ComboBox (par exemple TextBox2,6,7,10 ,11,18,19 et ComboBox1 ,3,6)
Code:
Private Sub CommandButton1_Click() 'bouton de commande de validation de l'UserForm
Dim ctrl As Control 'déclare la variable ctrl
For Each ctrl In Me.Controls 'boucle sur tous les contrôles de l'userform
    If TypeOf ctrl Is MSForms.TextBox And ctrl.Value = "" Then 'condition : si le type de contôle est une Textbox et si elle est vide
        ctrl.SetFocus 'place le curserur dans la Textbox
        MsgBox "Vous devez éditer ce champs !" 'message
    End If 'fin de la condition
Next ctrl 'prochain contrôle de l'userform
End Sub
salutations
 
Dernière édition:

laetitia90

XLDnaute Barbatruc
Re : Boucler sur toutes les Textboxes et ComboBox vides avec un message :

bonjour chaelie2015:)

si tu vides tous les controls autant faire

exemple

Code:
Private Sub CommandButton1_Click()
Unload Me
UserForm1.Show
End Sub

ps ne tient pas compte de mon message mal interprete:(
 
Dernière édition:

chaelie2015

XLDnaute Accro
Re : Boucler sur toutes les Textboxes et ComboBox vides avec un message :

Re
désolé ci joint le bon code
Code:
Private Sub CommandButton1_Click()
Dim c As Control
For Each c In UserForm1.Controls
Select Case TypeName(c)
Case "TextBox", "ComboBox"
If Len(c.Value) = 0 Then
c.Enabled = True
c.BackColor = RGB(255, 0, 0)
MsgBox "Merci de completer les zones manquantes!"
c.SetFocus
Exit Sub
End If
End Select
Next c
MsgBox "Votre saisie est maintenant complète"
End Sub
je souhaite avant la validation par bouton que les TextBox et ComboBox concernnées soient remplies (par exemple TextBox2,6,7,10 ,11,18,19 et ComboBox1 ,3,6)
a+
 

laetitia90

XLDnaute Barbatruc
Re : Boucler sur toutes les Textboxes et ComboBox vides avec un message :

re :)

plusieurs possibilitees

tu mets les controls concerne dans un array

for each array()

ou tu utilise controls.Tag plus simple


si pas de reponse regarderais en debut apres midi:)



pas le temps maintenant sorry


ps salut Mapomme:):):)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Boucler sur toutes les Textboxes et ComboBox vides avec un message :

Bonjour chaelie2015,

C'est donc si pénible de joindre un fichier :mad: !

Comme c'est Noël, un essai :
VB:
Private Sub CommandButton1_Click()
Const TextNum = "2,6,7,10,11,18,19"
Const ComboNum = "1,3,6"
Dim c As Control, nok As Boolean


  For Each c In UserForm1.Controls
    If c.Name Like "TextBox*" Then
      If InStr("," & TextNum & ",", "," & Replace(c.Name, "TextBox", "") & ",") > 0 Then
        If Len(c.Value) = 0 Then
          c.Enabled = True
          c.BackColor = RGB(255, 0, 0)
          nok = True
        Else
          c.BackColor = RGB(255, 255, 255)
        End If
      End If
    ElseIf c.Name Like "ComboBox*" Then
      If InStr("," & ComboNum & ",", "," & Replace(c.Name, "ComboBox", "") & ",") > 0 Then
        If Len(c.Value) = 0 Then
          c.Enabled = True
          c.BackColor = RGB(255, 0, 0)
          nok = True
        Else
          c.BackColor = RGB(255, 255, 255)
        End If
      End If
    End If
  Next c


  If nok Then
    MsgBox "Merci de completer les zones manquantes!"
  Else
    MsgBox "Votre saisie est maintenant complète"
  End If
End Sub
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Boucler sur toutes les Textboxes et ComboBox vides avec un message :

Bonjour chaelie2015, laetitia90 :)
si pas de reponse regarderais en debut apres midi

Comme j'ai un peu de temps :cool:, un essai avec la méthode de laetitia90 (propriété Tag des contrôles à vérifier à x)
VB:
Private Sub CommandButton1_Click()Dim c As Control, nok As Boolean


  For Each c In UserForm1.Controls
    If c.Tag = "x" Then
      If Len(c.Value) = 0 Then
        c.Enabled = True
        c.BackColor = RGB(255, 0, 0)
        nok = True
      Else
        c.BackColor = RGB(255, 255, 255)
      End If
    End If
  Next c


  If nok Then
    MsgBox "Merci de completer les zones manquantes!"
  Else
    MsgBox "Votre saisie est maintenant complète"
  End If
End Sub