Bonjour,
C'est assez difficile car on est sur un multipage...
Idéalement il faudrait faire ce contrôle page par page.
Toujours idéalement ce contrôle devrait rendre le Focus au TextBox incomplet...
Le code que je te donne fait la vérification de tous les TextBox de tous les onglets du Multipage mais ne rend pas la main au TextBox défectueux car on ne peut pas donner le focus à un autre onglet en invoquant un autre objet lui appartenant.
En clair tu ne peux pas donner le focus à TextBox12 ou textBox24 depuis le CommandButton10. (ou alors il faut remanier considérablement beaucoup de choses...)
En conséquence le modop que je te donne contrôle tous les TextBox de toutes les pages du multipage mais ne rend le focus qu'aux TextBox de la page 3 du multipage si problème.
Il reste que tu as le principe. Si tu veux t'amuser à broder la dessus tu peux toujours essayer de broder sur mon code pour activer chaque page du multipage. C'est un exercice auquel je ne m'amuserai pas...
Tu peux tester de la même manière les CheckBox en jouant sur la propriété Tag de leur Frame.
La encore Je ne m'y amuserai pas quoique ce soit relativement simple (quand on a compris le concept...)
Le système pour les TextBox :
On utilise leur propriété Tag : Pour marquer ceux qui sont obligatoire, mettre leur Tag = "yok" (sans guillemet)
Dans cette hypothèse il est prudent de mettre un label * de bonne taille en regard des contrôles obligatoires...
ensuite modifier le code de la manière suivante :
Private Sub CommandButton10_Click()
If NotYOk Then
Frame50.Visible = True
Else
MsgBox "Un des contrôles n'est pas rempli !"
End If
End Sub
Private Function NotYOk() As Boolean
Dim Ctrl As Control
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.TextBox Then
If LCase(Ctrl.Tag) = "yok" And Len(Trim(Ctrl.Value)) = 0 Then
If MultiPage1.Value = 3 Then
On Error GoTo GESTERRPAGE
Ctrl.SetFocus: Exit Function
End If
End If
End If
Next Ctrl
NotYOk = True
Exit Function
GESTERRPAGE:
End Function
Voir aussi message en MP
A+