Bonjour,
Je ne sais pas dans quelle situation se trouve le TextBox nommé TxtMDP car les procédures événementielles Exit et AfterUpdate ne réagissent bien que s'il y a au moins un autre contrôle actif, ComboBox, TextBox, CommandButton, etc.
Un exemple d'un UserForm contenant plusieurs contrôles dont un MultiPage.
A son ouverture seul le TextBox nommé txtPasswrd, son Label et le CommandButton nommé cmdExit seront visibles
Pour l'exemple, le contrôle Multipage reste visible pour voir que le premier onglet est bien actif et dès que le mot de passe (pour l'exemple Admin) sera introduit
Le code des procédures
Procédure événementielle à l'activation du UserForm
1 2 3 4 5 6 7 8 9 10
| Private Sub UserForm_Activate()
' Cache les contrôles
With Me
.txtPasswrd.Visible = False
.lblPassWrd.Visible = False
End With
Me.mPgeDataSheet.Value = 0 ' Place le premier onglet du contrôle
OppositeStatus ' Inverse les propriétés Visible des contrôles
Me.txtPasswrd.SetFocus ' Met le focus
End Sub |
La procédure OppositeStatus qui inverse les propriétés Visible des contrôles
1 2 3 4 5 6 7 8 9 10 11
| Sub OppositeStatus()
' Inverse la propriété des contrôles
' Un contrôle doit rester visible
With Me
.txtPasswrd.Visible = Not .txtPasswrd.Visible
.lblPassWrd.Visible = Not .lblPassWrd.Visible
.frmDataSheet.Visible = Not .frmDataSheet.Visible
.cboDataSheet.Visible = Not .cboDataSheet.Visible
' .mPgeDataSheet.Visible = Not .mPgeDataSheet.Visible
End With
End Sub |
La procédure événementielle qui vérifie le mot de passe et s'il est correct, cache les contrôles txtPasswrd et lblPassWrd, rend visible les autres contrôles et active la page nommée
1 2 3 4 5 6 7 8 9 10 11 12
| Private Sub txtPasswrd_AfterUpdate()
With Me
If .txtPasswrd.Value = "Admin" Then
OppositeStatus
With Me.mPgeDataSheet
.Value = .Pages("pgeArt").Index
End With
Else
MsgBox "Mot de passe erroné"
End If
End With
End Sub |
Procédure événementielle txtPasswrd_AfterUpdate qui active l'onglet nommé pgeArt (2)
1 2 3 4 5 6 7 8 9 10 11 12
| Private Sub txtPasswrd_AfterUpdate()
With Me
If .txtPasswrd.Value = "Admin" Then
OppositeStatus
With Me.mPgeDataSheet
.Value = .Pages("pgeArt").Index
End With
Else
MsgBox "Mot de passe erroné"
End If
End With
End Sub |
Comme toutes les collections d'object, il y deux façons de manipuler l'un de ses éléments. Soit utiliser son numéro, soit son nom
Donc pour activer la page d'un Multipage on écrira
Me.mPgeDataSheet.Value = 2
ou
1 2 3
| With Me.mPgeDataSheet
.Value = .Pages("pgeArt").Index
End With |
Les illustrations (avant/après)
Nous pouvons voir sur la première illustration que c'est la page 0 qui est active et sur la seconde que c'est la page 2 (onglet Articles)
Illustration 1 (Avant l'encodage du mot de passe)

Illustration 2 (Après l'encodage du mot de passe)

Le classeur ayant servi d'exemple
Partager