Excel/VBA

Fermé
Adora - Modifié par crapoulou le 30/03/2016 à 14:11
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Derniè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
A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
30 mars 2016 à 14:13
Bonjour,

Ton bouton de commande "Valider" a pour nom (propriété Name) :
- commandeButton1
ou
- CommandButton1
???
0