Adora
-
Modifié par crapoulou le 30/03/2016 à 14:11
pijaku
Messages postés12263Date d'inscriptionjeudi 15 mai 2008StatutModérateurDernière intervention 4 janvier 2024
-
30 mars 2016 à 14:13
Bjr tout le Monde, je suis novice dans ce Forum, j'ai besoin de votre Aide.
Au fait je me suis inspiré sur une base de données formulaire UserForm Muti-utilisateur qui se trouve sur cellule Excel.blogspot.com, les codes sont soigneusement copier-coller dans mon editeur VBA, le formulaire s'affiche correctement.
Cependant il y'a 2 Boutons activex : valider et sortie le problème est que le Bouton valider n'est pas fonctionnel si le formulaire mot de passe Multi-Util. s'affiche et qu'on clique sur valider pas d'effet le formulaire reste affiché sur la feuille, si quelqu'un a une idée là dessus je lui serai reconnaissant Ci-joint pour vous mes codes.
Merci d'avance de votre bonne compréhension!
Private Sub commandeButton1_Click()
Dim Util As Range 'Déclaration de la variable Utilisateur
Dim Niv As Byte 'Déclaration de la variable Niveau
On Error Resume Next
Static Essais_Util As Byte, Essais_MDP As Byte 'Déclaration des variables Essais
If TextBox1.Value = "Utilisateur" Then 'si la TextBox est vide
MsgBox "Vous devez remplir le champ Utilisateur", vbCritical, " Erreur" 'Sécurisation
Exit Sub 'On sort de la procédure
End If
If TextBox2.Value = "Mot de passe" Then 'si la TextBox est vide
MsgBox "Vous devez remplir le champ Mot de Passe", vbCritical, " Erreur" 'Sécurisation
Exit Sub 'On sort de la procédure
End If 'Fin de condition
Set Util = Range("NOMS").Find(TextBox1.Value, LookIn:=xlValues, lookat:=xlWhole) 'on recherche le nom d'utilisateur
If Not Util Is Nothing Then 'Si il exsiste.....(condition)
If TextBox2.Value = Util.Offset(, 1) Then 'Si le mot de passe est correcte.....(sous-condition)
Niv = Util.Offset(, 2) 'On enregistre le niveau
Acces Niv 'Procédure d'accès au niveau
Else 'Sinon.....(sous-condition)
Essais_MDP = Essais_MDP + 1 'Variable "Essais_MDP" incrémentée si mot de passe incorrect
If Essais_MDP > 3 Then ThisWorkbook.Close 0 'Si 3 tentatives incorrectes on ferme le fichier
MsgBox "Mot de passe incorrect, il vous reste " & 3 - Essais_MDP & " essais", vbCritical, " Erreur" 'Message
With Me.TextBox2 'avec la TextBox2
.Value = "" 'On la vide
.SetFocus 'On lui donne le Focus
End With 'Fin d'avec la TextBox2
End If 'Fin de.....(sous condition)
Else 'Sinon.....(condition)
Essais_Util = Essais_Util + 1 'Variable "Essais_Util" incrémentée si nom d'utilisateur est incorrect
If Essais_Util > 3 Then ThisWorkbook.Close 0 'Si 3 tentatives incorrectes on ferme le fichier
MsgBox "Utilisateur inconnu, il vous reste " & 3 - Essais_Util & " essais", vbCritical, " Erreur" 'Message
With Me.TextBox1 'avec la TextBox1
.SetFocus 'On lui donne le Focus
.SelStart = 0 'on sélectionne le caractère de départ
.SelLength = Len(Me.TextBox1.Text) 'la longueur de sélection = le nombre de caratère affichés dans la TextBox
End With 'Fin d'avec la TextBox1
End If 'Fin de condition
End Sub 'Fin de procédure
Private Sub CommandButton1_Click()
End Sub
Private Sub CommandButton2_Click()
Unload Me 'On sort de l'UserForm
End Sub
Private Sub UserForm1_Initialize()
Dim ws As Worksheet 'Déclaration de la variable feuille
For Each ws In Worksheets 'Boucle sur chaque feuille du fichier
If ws.Name <> "ACCUEIL" Then 'Si les feuilles ont un nom différent de "MENU_SAISIE"
ws.Visible = xlSheetVeryHidden 'Les feuilles seront cachées et "Afficher" grisé dans le menu contextuel sur clic droit de la souris sur l'onglet
End If 'Fin de condition
Next ws 'Feuille suivante
Sheets("ACCUEIL").Shapes("Bouton 1").Visible = False 'On cache le bouton "Saisie des Données" (accès à l'userForm)
With Me 'avec UserForm
.TextBox2.PasswordChar = "*" 'les caractères entrés seront convertis en "*"
End With 'Fin de avec l'UserForm
TextBox1.SetFocus 'On donne le Focus à la TextBox1
End Sub 'Fin de procédure
Private Sub Acces(Niveau As Byte)
Select Case Niveau 'On sélectionne les différents niveaux
Case 1 'Niveau 1
Call ChangeCode 'Appel de la procédure de changement de code pour voir si dépassement des 30jours
If Sheets("ACCUEIL").Range("VDX1000").Value = 1 Then 'Si réponse "non" au changement de code (macro changeCode), on arrête tout
TextBox1.Value = "" 'On vide la TextBox1
TextBox2.Value = "" 'On vide la TextBox2
TextBox1.SetFocus 'On donne le Focus à la TextBox1
Exit Sub
End If
Sheets("ACCUEIL").Shapes("Bouton 1").Visible = True 'On rend visible le bouton 5 pour affichage du formulaire
Sheets("BDD").Visible = True 'On rend la feuille visible
Sheets("UTILISATEURS").Visible = True 'On rend la feuille visible
Sheets("TRESORERIE").Visible = True 'On rend la feuille visible
Unload Me
Case 2
Call ChangeCode 'Appel de la procédure de changement de code pour voir si dépassement des 30jours
If Sheets("ACCUEIL").Range("VDX1000").Value = 1 Then 'Si réponse "non" au changement de code (macro changeCode), on arrête tout
TextBox1.Value = "" 'On vide la TextBox1
TextBox2.Value = "" 'On vide la TextBox2
TextBox1.SetFocus 'On donne le Focus à la TextBox1
Exit Sub
End If
Application.ScreenUpdating = False 'Arrêt de la mise à jour de l'écran
Sheets("ACCUEIL").Shapes("Bouton 1").Visible = True 'On rend visible le bouton 5 pour affichage du formulaire
Sheets("BDD").Visible = True 'On rend la feuille visible
Sheets("TRESORERIE").Visible = True 'On rend la feuille visible
Application.ScreenUpdating = True 'On autorise la mise à jour de l'écran
Case 3
Call ChangeCode 'Appel de la procédure de changement de code pour voir si dépassement des 30jours
If Sheets("ACCUEIL").Range("VDX1000").Value = 1 Then 'Si réponse "non" au changement de code (macro changeCode), on arrête tout
TextBox1.Value = "" 'On vide la TextBox1
TextBox2.Value = "" 'On vide la TextBox2
TextBox1.SetFocus 'On donne le Focus à la TextBox1
Exit Sub
End If
Application.ScreenUpdating = False 'Arrêt de la mise à jour de l'écran
Sheets("BDD").Visible = True 'On rend la feuille visible
Sheets("ACCUEIL").Shapes("Bouton 1").Visible = True 'On rend visible le bouton 5 pour affichage du formulaire
Application.ScreenUpdating = True 'On autorise la mise à jour de l'écran
End Select 'Fin de sélection
Unload Me 'On sort de l'UserForm
End Sub 'Fin de procédure
Private Sub ChangeCode()
Dim Util As Range 'Déclaration de la variable Utilisateur
Sheets("ACCUEIL").Range("VDX1000").Value = 0 'On réinitialise la cellule "VDX1000"
Set Util = Range("NOMS").Find(TextBox1.Value, LookIn:=xlValues, lookat:=xlWhole) 'on recherche le nom d'utilisateur
If (Now - Util.Offset(0, 3)) > 30 Then 'Si la date Utilisateur est supérieur à aujourd'hui + 30 jours
Select Case MsgBox("La validité de vos droits arrive à échéance" & vbCrLf & _
"Vous devez saisir vos nouveaux codes" & vbCrLf & _
"Voulez vous le faire maintenant ? ", vbQuestion + vbYesNo, " Validité du code à échéance") 'Message
Case vbYes 'Si appuis sur "oui"
UserForm6.TextBox1.SetFocus 'On donne le Focus à la TextBox1 de l'UserForm6 (Chgt de code)
UserForm6.Show 'Affichage de l'UserForm6 (Chgt de code)
Case vbNo 'Si appuis sur "non"
Sheets("ACCUEIL").Range("VDX1000").Value = 1 ' variable d'invalidation de la procédure (on arrête tout)
Exit Sub 'On sort de la procédure
End Select 'Fin de sélection
MsgBox "Erreur d'execution", vbOKOnly, "Veuillez saisir votre Login et Mot de passe"
End If 'Fin de condition
End Sub 'Fin de procédure