Contrôle avant enregistrement

Bonjour à tous

J'ai un petit problème de code

je ne parviens pas à rendre inactif les textbox dans un frame afin d'effectuer un contrôle avant enregistrement.

Enfaite même si le frame n'est pas visible il reste actif et par conséquent les textbox qui y sont intégrés.

Voir le fichier joint

Merci de votre aide !

FG

15test1.xlsm (15.58 Ko)

Bonsoir

Solution pas trop élégante mais bon pas mieux

Remplaces la macro actuelle par celle-ci

'CONTROLE DES DONNEES
Private Sub CommandButton1_Click()
Dim c As Control

  For Each c In UserForm1.Controls
    Select Case TypeName(c)
    Case "TextBox", "ComboBox"
      c.Visible = True          ' Quelle utilité ?
      If Left(c.Parent.Name, 5) = "Frame" Then
        If Me.Controls(c.Parent.Name).Visible = False Then GoTo PasCeluiLa
      End If
      If c.Value = "" Then
        c.BackColor = RGB(255, 0, 0)
        MsgBox "Merci de Completer les Zones Manquantes!"
        Exit Sub
       End If
    End Select
PasCeluiLa:
  Next
  MsgBox "Votre saisie est maintenant complète"

  If MsgBox("VOULEZ-VOUS ENREGISTRER LES DONNEES", vbQuestion + vbYesNo) = vbYes Then
    MsgBox ("POUR ENREISTRER LES DONNEES CLICQUER SUR LE BOUTON ENREGISTRER")
    CommandButton2.Visible = True
  End If
End Sub

En surligné une question

Merci beaucoup Banzai64

tu me dépanne une nouvelle fois.

Ca fonctionne bien

Je profite de tes compétences est-il possible que la textbox13 par exemple( ou une autre) sorte du processus de contrôles

pour la question que tu m'a posé, enfaite je pensais que cela été utile pour les txt et combo visible dans l'userform.

En tout état de cause, je te remercie

A bientôt

Bonsoir

Favata a écrit :

est-il possible que la textbox13 par exemple( ou une autre) sorte du processus de contrôles

Il suffit de tester

'CONTROLE DES DONNEES
Private Sub CommandButton1_Click()
Dim c As Control

  For Each c In UserForm1.Controls
    Select Case TypeName(c)
    Case "TextBox", "ComboBox"
      If c.Name = "TextBox13" Then GoTo PasCeluiLa
      If Left(c.Parent.Name, 5) = "Frame" Then

Re bonsoir Banzai64

Sitôt dit sitôt fait, tu es un As super cool .

J'ai fait le test et comme prévu ça fonctionne à merveille.

Un grand merci pour ton aide et ton amabilité.

A bientôt

F.G

Rechercher des sujets similaires à "controle enregistrement"