Fermer 1 userform sur saisie d'1 mot de passe

polimnya -  
 Nico -
Bonjour le forum,
Je souhaite interdire a l'utilisateur de mon prog VBA de fermer les userforms sur lesquels il navigue afin d'éviter qu'il n'ait acces à la base de données...Bref jusque la tout va bien. J'ai rentré les codes suivants :

Public Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
MsgBox "Pour quitter le programme veuillez" & Chr(10) & Chr(10) & "cliquer sur le bouton QUITTER", vbCritical, "FERMETURE INTERDITE:RISQUE DE PERTE DES DONNEES"
Cancel = True
End Sub

Le problème c'est que desormais je n'ai plus acces moi meme a la base de données. Je voudrais donc programmer un userform qui autorise la fermeture apres avoir saisi un code. Cette fois au lieu de mettre un msg box simple je mets un msgbox vbyesno.
Je veux que si l'on clique sur "non" alors un imput box se lance du type : InputBox(prompt:="Veuillez saisir le code autorisant la fermeture du userform") et que si le code saisi est bon, je veux pouvoir fermer le userform, sinon non.

J'utilise les codes suivants: (mais bon ca marche pas...)

Public Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim reponse As Integer
MsgBox "Pour quitter le programme veuillez" & Chr(10) & Chr(10) & "cliquer sur le bouton QUITTER", vbYesNo + vbCritical, "FERMETURE INTERDITE:RISQUE DE PERTE DES DONNEES"
Cancel = True
If reponse = 7 Then
code = InputBox(prompt:="Veuillez saisir le code autorisant la fermeture du userform")
If code = "TOTO" Then
Exit Sub
End If
End If
End Sub

Aurier vous une solutin a me proposer repondant a mes besoin?
merci de votre aide

4 réponses

  1. Nico
     
    Salut, moi c'est Nico !

    Une bonne astuce, car moi aussi je programme & ce n'est pas moi qui utilise les fichiers.

    Quand ton UserForm est affiché, appuie simultanément sur "Ctrl" et "Pause".
    Ton programme s'arrête par la fenêtre débogage, il te suffit de faire "fin", ton Userform disparait et tu peux accéder aux feuilles de données.

    Amuse toi bien !?!
    1
  2. antic80
     
    c au nivo de ta reponse

    avant ton msgbox ecrit reponse =

    ensuite

    if reponse =vbyes then
    code = InputBox(prompt:="Veuillez saisir le code autorisant la fermeture du userform")
    If code = "TOTO" Then
    Exit Sub
    0
  3. polimnya
     
    merci de ton aide
    voici mon nouveau code:

    Public Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Dim reponse As Integer
    Dim code As String
    reponse = MsgBox("Pour quitter le programme veuillez" & Chr(10) & Chr(10) & "cliquer sur le bouton QUITTER", vbYesNo + vbCritical, "FERMETURE INTERDITE:RISQUE DE PERTE DES DONNEES")
    Cancel = True
    If reponse = vbNo Then
    code = InputBox(prompt:="Veuillez saisir le code autorisant la fermeture du userform")
    If code = "TOTO" Then
    Exit Sub
    End If
    End If
    End Sub

    ca ne marche pas. Un message s'affiche "l'indice n'appartient pas a la selection"...je ne comprends pas
    0
  4. polimnya
     
    en fait quand je relance le prog le message d'erreur n'apparait plus...mais quand je rentre le code TOTO et que je clique sur ok, puis que je retourne pour fermer ma croix je ne peux toujours pas car il me dit "pour quitter le prog cliquer sur le bouton quitter"= mon msgbox...je tourne en rond
    0