XL 2019 Aide sur un beug Userform

AIXELS

XLDnaute Occasionnel
Bonjour à tous les amis du Forum. :)
Je vous soumet une routine demandant un mot de passe à l'ouverture d'un fichier.
Pour ne rien vous cacher, je l'ai glané sur internet et c'est plutôt sympa.
Mais il y'a un problème qui me dépasse, message: Erreur de compilation.
Je vous joint le fichier. Ne vous étonnez en le lançant il s'arrête. Chez moi, il le fait.
Par avance, merci pour votre aide.
Bien cordialement.
 

Pièces jointes

  • ERREUR DE COMPILATION.jpg
    ERREUR DE COMPILATION.jpg
    143.5 KB · Affichages: 25
  • MOT_2_PASSE.xlsm
    46.2 KB · Affichages: 5
Dernière édition:

AIXELS

XLDnaute Occasionnel
Bonjour à tous les amis du Forum. :)
Après une absence pour raison de santé, je me permet de vous relancer
concernant un message d'erreur qui s'affiche sur le fichier auquel je devais
l'adapter. Tant que c'était une macro qui lançait le userform du Password, tout
fonctionnait. Mais en le mettant dans :
VB:
Private Sub Workbook_Open()
j'ai un message d'erreur. Je ne sais pas où placer la ligne de commande.
D'autre part, j'aurais souhaité si c'était possible ajouter l'affichage d'un textbox
pour la détection de l'activation ou désactivation du pavé numérique comme pour
la touche Majuscules ou minuscules qui fonctionne très bien.
Car le mot de passe pouvant contenir des chiffres.
Merci pour votre aide.
Bien cordialement.
 

Pièces jointes

  • TEST MOT_2_PASSE_24-07-2021.xlsm
    392.4 KB · Affichages: 3
C

Compte Supprimé 979

Guest
Bonjour AIXELS

Il ne faut pas mettre
2021-07-24_15h55_29.png

Dans la feuille 1,
mais dans un nouveau module
1627135101561.png

@+
 

AIXELS

XLDnaute Occasionnel
Bonjour @BrunoM45 et tous les amis du Forum. :)
Merci pour ta réponse. J'ai fait la modification, le
problème est résolu.
Reste la détection de l'activation ou désactivation
de touche du pavé numérique comme pour la Touche majuscules.
Quelqu'un aurait-t-il le code pour détecter l'activation de
la touche du pavé numérique ?

Par avance, merci pour votre aide.
Bien cordialement.
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour
et ben dis donc !! pour faire quelque chose qui peut se démonter en un battement de cils

heu ...je peux jouer moi aussi ?? 😁

donc je reprends ton userform tout du moins j'en fait une copie
je vire tout tes labels de vérif
je les remplace par deux checkboxs ("CheckMAJ" et "CheckNUM")
ca donne ça
1627382461240.png


ensuite je vire bien entendu tout ton code (désolé)

et je met celui ci
VB:
'usf password
'patricktoulon

#If VBA7 Then
    Private Declare PtrSafe Function GetKeyState Lib "user32.dll" (ByVal KeyCode As Long) As Integer
#Else
    Private Declare Function GetKeyState Lib "user32.dll" (ByVal KeyCode As Long) As Integer
#End If
Option Explicit
Private Sub CheckMAJ_Change()
    Touch_ColorCheck CheckMAJ.Value, CheckNUM.Value
End Sub

Private Sub CheckNUM_Change()
    Touch_ColorCheck CheckMAJ.Value, CheckNUM.Value
End Sub

Private Sub UserForm_Activate()
    CheckMAJ.Value = (&H1 And GetKeyState(vbKeyCapital)) <> 0
    CheckNUM.Value = (&H1 And GetKeyState(&H90)) <> 0
End Sub

Sub Touch_ColorCheck(ch1, ch2)
    Dim Wsh As Object
    If ActiveControl.Name = "CheckMAJ" Or ActiveControl.Name = "CheckNUM" Then
        Set Wsh = CreateObject("Wscript.shell")
        Select Case ActiveControl.Name
        Case "CheckMAJ"
            Wsh.SendKeys ("{CAPSLOCK}")
        Case "CheckNUM"
            Wsh.SendKeys ("{NUMLOCK}")
        End Select
        Set Wsh = Nothing
    End If

    CheckMAJ.Caption = Array("MAJUSCULE DEACTIVÉE !!", "MAJUSCULE ACTIVÉE !!")(Abs(CheckMAJ.Value))
    CheckMAJ.ForeColor = Array(vbYellow, vbRed)(Abs(CheckMAJ.Value))

    CheckNUM.Caption = Array("PAVE NUMERIQUE DEACTIVÉ !!", "PAVE NUMERIQUE  ACTIVÉ !!")(Abs(CheckNUM.Value))
    CheckNUM.ForeColor = Array(vbYellow, vbRed)(Abs(CheckNUM.Value))
    '
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 'rend le bouton(croix inactif)
    If CloseMode = 0 Then Cancel = True
End Sub

Private Sub QUITTER_Click()
'blabla faire ce que tu veux en fermant!!!
    Unload Me
End Sub
et voila le resultat


demo7.gif


et voila tu a un aperçu du statu des touches "VerMaj" et "VerrNum" et tu peux même les ré activer avec les checkboxs

te reste plus qu'a coder l'action a faire dans le bouton valider

;)
Bon d'accords je sort😁
 

Pièces jointes

  • usf password with controle des touche maj et num.xlsm
    387.9 KB · Affichages: 6

AIXELS

XLDnaute Occasionnel
Bonjour @BrunoM45, @patricktoulon et tous les amis du Forum. :)
La solution de @patricktoulon me convient tout à fait. Je l'ai adaptée
à mon projet qui s'étoffe au fur à mesure de l'utilisation et me permet
de prendre des leçons dispensées par des PROS entre autre autres de VBA
Si l'on utilise des majuscules et des chiffres dans le mot de passe, plus
d'erreurs possibles tout est indiqué.
De plus, en ajoutant
VB:
TextBox1.SetFocus
je reste sur le TextBox1 pour changer la casse et activer le pavé numérique
sans quitter la saisie TextBox1. Pour te répondre @BrunoM45, souvent on
n'oublie d'activer le pavé numérique et le mot de passe saisi est erroné.
Merci à tous pour votre aide.
Bien cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 078
Membres
103 111
dernier inscrit
Eric68350