Bonjour,

J'ai créé un Userform qui permet à l'ouverture de mon fichier Excel de :
1-Sélectionner un utilisateur dans une liste déroulante
2-D'insérer un code d'accès relier à l'utilisateur
3-Un bouton de confirmation permettant d'ouvrir le fichier excel

La liste des utilisateurs et des codes d'accès associés se trouve sur une feuille masquée nommée "utilisateurs".

1er souci : je voudrais que si une personnene faisant pas partie de la liste autorisée entre son nom, qu'il y ai un msg d'erreur lui indiquant que seule les personnes faisant partie de la liste déroulante sont autorisées à ouvrir la base de données.

2ème souci : lorsque le mot de passe n'est pas valide, VBA lance un msg de débogage ou de fin et si la personne clique sur Fin, le fichier s'ouvre et donc je n'ai plus de protection.

3ème souci : Si au lancement du fichier, la personne n'active pas les macros, le fichier s'ouvre sans demander les logins et passwords associés. Il faudrait une commande qui active les macros sans le demander aux utilisateurs.

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
29
30
31
32
33
34
35
36
37
38
39
40
41
Private Sub CommandButton1_Click()
identification = ComboBox1.ListIndex + 1
 
 
' A voir pour la fonction <> qui ne fonctionne pas
'If TextBox2.Value <> Sheets("utilisateurs").Cells(identification, 2).Value Then
'MsgBox "Sélectionnez votre identité dans la liste déroulante"
'End If
 
 
 
If TextBox2.Value = Sheets("utilisateurs autorises").Cells(identification, 2).Value Then
MsgBox ("Votre code est correct " & ComboBox1.Text)
Me.Hide
Else
Select Case MsgBox(ComboBox1.Text & "  votre mot de passe est erronné", vbAbortRetryIgnore + vbCritical, "Centre d'identification du personnel autorisé")
Case vbAbort
'procédure si click sur Abandonner
Unload Me
    ThisWorkbook.Close savechanges:=False
Case vbRetry
'procédure si click sur Réessayer
Case vbIgnore
'procédure si click sur Ignore
If CloseMode = vbFormControlMenu Then
MsgBox (ComboBox1.Text & ", pour des raisons de sécurité, cette commande est désactivée. Veuillez Réessayer ou Ignorer.")
Cancel = True
End If
End Select
End If
End Sub
 
 
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
 
' désactive la croix en haut a droite du Userform
    If CloseMode = vbFormControlMenu Then
        MsgBox "Pour des raisons de sécurité, cette commande est désactivée."
        Cancel = True
   End If
End Sub