Bonjour,
Après d’âpres recherches, je ne suis pas parvenu à trouver une solution, j'espère la trouver sur ce forum. je vous expose mon projet:
- sur une feuille nommée "Menu", il y a 9 boutons qui affichent un userform d'autorisation d'affichage (username & password) d'un autre userform.
-sur ce dernier, il y a un bouton pour donner à utilisateur concerné la possibilité de changer son password [pour cette partie c'est OK, je l'ai réalisé].
- les Username (col A), password (col B) et niveaux (col C) d'autorisation sont sur la feuille "Users"
Mon plus grand souci est le codage de l'userform d'autorisation d'accès constitué comme suit:
textbox1=environ("username")
textbox2=password
bouton "valider"
bouton "annuler"
bouton "changer password"
- à chaque niveau correspond 3 userforms
- niveau 3 peut accéder à tous les userforms (1 à 9)
- niveau 2 peut accéder seulement de 1 à 6
- niveau 1 ne peut accéder qu'aux 7,8 et 9
- si l'utilisateur n'existe pas le fichier se ferme
Pour cette partie je nage vraiment, d'autant que je débute en VBA. Sur la toile j'ai trouvé des exemples pour l'affichage d'onglets mais je suis pas parvenu à faire une adaptation.
Voici mon code pour le changement de password pour ceux et celles que çà intéressent.
Ceci est le peu de code que j'ai fait, je vous précise qu'initialement le clic sur un bouton affiche un userform, par exemple commandbutton1 affiche userfrom nommé "Consult_Campagne" et active la feuille "ConsultPV" ( execute la macro "Aller_a_Consultation_PV".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Option Explicit Dim maligne As Integer Dim mdp As String Dim c Private Sub CB_Valider_Click() mdp = TextBox1.Text With Worksheets("Users").Range("b2:b30") Set c = .Find(mdp, LookIn:=xlValues) If Not c Is Nothing Then maligne = c.Row Else MsgBox "Mauvais mdp" Exit Sub End If End With If TextBox3.Text = TextBox2.Text Then Worksheets("Users").Range("b" & maligne).Value = TextBox2.Text UserChangePass.Hide End Else MsgBox "Les 2 mdp ne sont pas identiques" End If End Sub Private Sub CB_annuler_Click() Unload Me End Sub
c'est à dire qu'à la validation, on appelle la macro qui s'executait par bouton.
Code d'une macro:
Code de l'userform d'autorisation (userform6):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Sub Aller_a_Consultation_PV() UserPass.Show 'Ici ça doit mettre Vrai ou Faux à la variable Valide If not Valide Then Exit sub Sheets("ConsultPV").Select Consult_Campagne End Sub
Je remercie tous ceux qui m'aideront à avancer dans mon projet, je ne pourrai pas mettre à disposition mon fichier car il comporte des données confidentielles. Je vous remercie pour votre compréhension.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Private Sub Bt_Annuler_pwd_Click() End End Sub Private Sub Bt_change_pwd_Click() UserChangePass.Show End Sub Private Sub Bt_Valider_pwd_Click() End Sub Private Sub UserForm_Initialize() Me.TextBox1 = Environ("username") TextBox2.SetFocus End Sub
Partager