Excel/VBA
Adora
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
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!
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
A voir également:
- Excel/VBA
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide