IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Touche Shift


Sujet :

Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Touche Shift
    bonjour a tous!

    je suis en train de faire une prog ss Access mais je suis pas assez a l'aide sur le VBA.

    le but et de demarrer la base un une forme au demarrage qui cache la fenetre de base de donnée..... (je reussis a faire)
    si la touche Shift est utilisée, ouvrir FormMotPass ( pour verifier par mot de passe que c'est un le proprio pour donner l'acces total, sinon ne pas donner l'acces a la touche shift)

    qq pourrais m'aider pour l'histoire de la touche shift!
    j'ai trouver du code dans mes recherches mais j'arrive pas a le mettre en place!

    Aidez moi SVP!

  2. #2
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Cherche dans la FAQ : AllowByPassKey, et regarde les options de Outils, Démarrage..., Avancé>>

    Quant à ton formulaire avec mot de passe, si tu utilises la sécurité d'Access, le formulaire d'Access, demandant le nom et le mot de passe s'ouvre avant la base elle-même... Il bloque donc tout accès par quelqu'un qui n'est pas autorisé

  3. #3
    Membre confirmé
    Avatar de dok flint
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 366
    Points : 548
    Points
    548
    Par défaut
    Bonjour,
    La solution c'est comme a dit papy ,tu peut voir dans mes messages
    il ya la solution avec le code et la maniere de faire
    Salut

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    merci les amis pour les reponses!

    j'ai regarde les differents code proposés, mais ils font jusque qu'interdit la Touche Shitf!
    j'ai du mal m'expliquer, je voudrais intercepter l'appuis de la touche shift au demarrage pour pouvoir demarrer un form qui lui accepetera ou pas la touche Shift.

    pour mieux comprendre mon probleme une petite explication:
    je dois etre le seul a pouvoir appliquer des modifications de temps en temps sur une base de donnée access, tout en gardant le fichier le plus complet possible. donc j'utilise un fichier *.mdb tout simple, sans de gestion d'utilisateur d'acces qui comporte qq faible (je trouve).

    - Cas 1: utilisateur tout simple, j'ouvre tout simplement la base avec toutes les blocages possibles (cache la fenetre base, les menus access......)
    - Cas 2: utilisateur tout droits, j'ouvre ma base avec la touche shift,
    le formulaire pour saisir le mot de passe s'ouvre, si mot de passe bon, j'ai tout les droits, sinon, la base s'ouvre normalment en utilisateur simple (Cas 1).

    Comment faire pour savoir le la touche Shift est enfoncée?
    Que pensez vous de ce genre de protection? Efficasse ou pas?

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Normalement, si tu ouvres ton fichier avec la touche shift, access ouvre la fenêtre de base de données. Donc même si ton formulaire s'affiche, l'utilisateur pourra toujours avoir accés au reste. Je pense qu'il vaut mieux utiliser le système d'access. Puis interdire la touche shift et quand tu as des modifications à faire, tu la réactives.

  6. #6
    Membre confirmé
    Avatar de dok flint
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    366
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 366
    Points : 548
    Points
    548
    Par défaut
    Moi j'ai fait :

    Sur le formrulaire interne(aprés l'ouverture de la base) qui me permet d'ouvrir la liste des mots de passes et les utilisateurs ,j'ai placé un mot de passe secret qui n'apparait nulle part dans la base ce mot de apsse va permettre l'ouverture d'un formulaire contenant deux boutons :

    1- VEROUILLER LA BSE
    2- DEVEROUILLER LA BASE

    Dans l'evenement sur clic de "VERROUILLER"j'ai placer le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Module1.SetBypassProperty
    If MsgBox("Vous verrouiller votre application .Voulez vous continuer?", _
        vbQuestion + vbYesNo) = vbYes Then
        DoCmd.Quit
     
        End If
    Dans l'evenement sur clic de "DEVERROUILLER"j'ai placer le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Module1.UnSetBypassProperty
    If MsgBox("Vous verrouiller votre application .Voulez vous continuer?", _
        vbQuestion + vbYesNo) = vbYes Then
        DoCmd.Quit
     
        End If
    Module1 : c'est le nom du module du code

    Dnoc à chaque fois que tu veux faire des modifications tu pemet le schift puis apres avoir terminer tu l'enleve

    le code placé dans le module 1 c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Sub SetBypassProperty()
    Const DB_Boolean As Long = 1
        ChangeProperty "AllowBypassKey", DB_Boolean, False
    End Sub
     
    Sub UnSetBypassProperty()
    Const DB_Boolean As Long = 1
        ChangeProperty "AllowBypassKey", DB_Boolean, True
    End Sub
     
    Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
        Dim dbs As Object, prp As Variant
        Const conPropNotFoundError = 3270
     
        Set dbs = CurrentDb
        On Error GoTo Change_Err
        dbs.Properties(strPropName) = varPropValue
        ChangeProperty = True
     
    Change_Bye:
        Exit Function
     
    Change_Err:
        If Err = conPropNotFoundError Then    ' Propriété non trouvée.
            Set prp = dbs.CreateProperty(strPropName, _
                varPropType, varPropValue)
            dbs.Properties.Append prp
            Resume Next
        Else
            ' Erreur inconnue.
            ChangeProperty = False
            Resume Change_Bye
        End If
    End Function
    Si ça marche ne pas oublier [RESOLU]
    Salut

  7. #7
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Citation Envoyé par Sebinou
    pour mieux comprendre mon probleme une petite explication:
    je dois etre le seul a pouvoir appliquer des modifications de temps en temps sur une base de donnée access, tout en gardant le fichier le plus complet possible. donc j'utilise un fichier *.mdb tout simple, sans de gestion d'utilisateur d'acces qui comporte qq faible (je trouve).
    Manifestement, si je peux me permettre, tu n'en as pas fait le tour et ça mérite d'approfondir. Mais, si c'est juste pour empêcher toute modif, c'est vrai qu'il y a plus simple (voir ci-dessous).

    Citation Envoyé par Sebinou
    - Cas 1: utilisateur tout simple, j'ouvre tout simplement la base avec toutes les blocages possibles (cache la fenetre base, les menus access......)
    - Cas 2: utilisateur tout droits, j'ouvre ma base avec la touche shift,
    le formulaire pour saisir le mot de passe s'ouvre, si mot de passe bon, j'ai tout les droits, sinon, la base s'ouvre normalment en utilisateur simple (Cas 1).

    Comment faire pour savoir le la touche Shift est enfoncée?
    Que pensez vous de ce genre de protection? Efficasse ou pas?
    1- ce n'est pas possible, parce que
    - soit tu interdis la touche Shift -> personne ne peut démarrer l'application sans exécuter le code de démarrage... (dans ce cas, à toi de prévoir une touche spéciale qui ouvre un formulaire où tu demandes un mot de passe pour accéder à la fenêtre base de données, etc. Voir code de dok flint)
    - soit tu ne l'interdis pas et, si quelqu'un la maintient enfoncée : Access s'ouvre mais aucun code n'est exécuté -> tu ne pourras jamais savoir si l'utilisateur l'a pressée ou pas.
    2- dans ton cas, la solution la + simple est :
    - tu travailles sur ton .mdb, que tu gardes sur ton poste,
    - tu crées un .mde (compilé, non modifiable), que tu distribues sur les postes des autres utilisateurs : eux n'ont JAMAIS accès à aucun code ni aucun élément de programmation. Menu Outils, Utilitaires de base de données, Créer un fichier Mde...

    Enfin, je peux me tromper, mais je soupçonne que tu as
    - laissé toute l'application + les tables dans un seul fichier .mdb,
    - mis ça sur un serveur, et tout le monde lance l'application à partir d'un fichier partagé.
    Si c'est le cas, il faut t'attendre à venir poser ici toutes sortes de questions insolvables. Il y en a une kyrielle sur le forum, toutes différentes, mais la solution est systématique : séparer les tables (partagées, sur le serveur) de l'application (copiée sur chaque poste).

    dok flint : merci de tes exemples, mais rien compris à tes 2 premiers extraits de code
    - qui sont identiques,
    - qui quittent si on dit 'Oui' pour vérouiller/déverouiller ???

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    merci pour vos reponses!
    je rentre du taff la ! Donc, je test au plus vite!

    Papy Turbo: je travail pas en reseau. je fait un le *.mdb sur mon poste et le fichier tourne sur un autre PC.
    Vu ta reponse je vais abandonner mon truc avec la touche shift!
    Pour ce qui est du fichier *.MDE, j'ai deja qq questions qui me viennent:
    - Si je veux modifier le fichier, je fait comment pour recuperer les infos des Tables du fichier *.MDE pour les mettrent dans le fichier *.MDB?
    - a chaque modif va falloir refaire un *.MDE?
    - Dans le fichier, je voudrais que l'utilisateur ne voit plus que les formulaires et les menus specifique a l'application. sinon tout le reste dois disparaitre! c'est possible avec les mde?

    Encore merci a tous pour l'aide!

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2004
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    ' coller ce code dans un module a part et l'executer ,appuyer sur F5
    'le lire avant et fait une backup avant de le tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Option Compare Database
    Option Explicit
     
    Sub DésactiverMaj()
    Dim blnAutoriserMaj As Boolean
     
        ' Si blnAutoriserMaj vaut False, la touche [Maj] sera désactivée.
        ' Si blnAutoriserMaj vaut True, la touche [Maj] sera activée.
        blnAutoriserMaj = False
     
        ModifiePropr "AllowBypassKey", dbBoolean, blnAutoriserMaj
        If blnAutoriserMaj Then
            MsgBox "La touche [Maj] est activée. Fermez la base et réouvrez-la pour tester."
        Else
            MsgBox "La touche [Maj] est désactivée. Fermez la base et réouvrez-la pour tester."
        End If
    End Sub
     
    Function ModifiePropr(chNomPropriété As String, varTypeProp As Variant, varValeurProp As Variant) As Integer
        Dim bds As Database, prp As Property
        Const conErreurPropNonTrouvée = 3270
     
        Set bds = CurrentDb
        On Error GoTo Change_Err
        bds.Properties(chNomPropriété) = varValeurProp
        ModifiePropr = True
     
    Change_Sortie:
        Exit Function
     
    Change_Err:
        If Err = conErreurPropNonTrouvée Then   ' Propriété non trouvée.
            Set prp = bds.CreateProperty(chNomPropriété, varTypeProp, varValeurProp)
            bds.Properties.Append prp
            Resume Next
        Else
            ' Erreur inconnue.
            ModifiePropr = False
            Resume Change_Sortie
        End If
    End Function
    de Papy Turbo : merci d'utiliser la balise de CODE ! : un clic sur le bouton Code, au dessus de l'éditeur !

  10. #10
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Citation Envoyé par Sebinou
    Papy Turbo: je travail pas en reseau. je fait un le *.mdb sur mon poste et le fichier tourne sur un autre PC.
    Donc, aucun problème pour garder la source originale (*.mdb) chez toi, et mettre la copie compilée (*.mde) sur le réseau.
    Citation Envoyé par Sebinou
    Vu ta reponse je vais abandonner mon truc avec la touche shift!.

    Citation Envoyé par Sebinou
    Pour ce qui est du fichier *.MDE, j'ai deja qq questions qui me viennent:
    - Si je veux modifier le fichier, je fait comment pour recuperer les infos des Tables du fichier *.MDE pour les mettrent dans le fichier *.MDB?.
    Tu fractionnes ton fichier .mdb en deux :
    1- la base de données contenant les Tables va sur le serveur, d'où elle est accessible à tous. En général, tu utilises la sécurité d'Access pour ne pas permettre aux utilisateurs de modifier la structure de ces tables, et juste ce qu'il faut (lecture, écriture...) pour modifier le contenu des tables.
    2- la partie applicative, contenant tout le reste : tables attachées + requêtes, + formulaires + états + ... sera compilée (en un fichier *.mdE) et installée sur chacun des postes des utilisateurs. Tu donnes aux utilisateurs la possibilité de tout faire sur les tables attachées (qui sont liées aux tables de la base de données, sur le serveur), et sur le reste : formulaires, etc.
    Il y a un assistant dans Outils, Utilitaires de base de données, Fractionner une base de données.
    Ceci est une des, sinon LA 1ère règle à appliquer pour distribuer une application utilisant une base de données, réalisée avec Access.
    Je vais faire un article sur 'les bases des bases' reprenant les quelques règles indispensables comme celle là, parce que nous perdons tous notre temps à répéter la même chose, et à refaire la liste des innombrables problèmes que chacun rencontre avec des bases 'monobloc', parce que les formulaires... sont partagés par plusieurs utilisateurs ! On ne partage pas la partie 'application'.

    Sinon, une fois que tu auras fractionné ton application, on reparlera de la méthode pour :
    - attacher dans un .mdb les tables qui sont dans un .mde (je n'ai jamais mis de tables dans un .mde, sauf volontairement : table locale, temporaire - voir Article sous ma signature),
    - créer des requêtes adéquates,
    - récupérer les données...
    Mais tu ne devrais jamais avoir ce problème.
    Citation Envoyé par Sebinou
    - a chaque modif va falloir refaire un *.MDE?.
    Ça prend entre 30 secondes et 2 minutes, si ton application est énorme : le temps de faire une copie (compilée).
    Citation Envoyé par Sebinou
    - Dans le fichier, je voudrais que l'utilisateur ne voit plus que les formulaires et les menus specifique a l'application. sinon tout le reste dois disparaitre!
    C'est le principe même du .mde : il est compilé, ne peut être ouvert par personne : toi non plus. Donc, tu conserves le .mdb d'origine pour y faire toute modif. Exactement comme tout programmeur Visual basic distribue le *.exe, mais conserve les divers fichiers sources (*.bas, *.frm, etc.)
    Les utilisateurs n'ont donc accès qu'à ce que tu leur offres dans ton 'menu' ou autre interface activé au démarrage...
    La touche Shift n'a plus aucun effet.
    À toi quand même de remplacer les menus 'standards' par des menus personnalisés, si tu veux supprimer certaines fonctions...

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    merci pour ces precieux conseils Papy Turbo!
    merci aussi el3afsa vais tester le code au plus vite!

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 12
    Points
    12
    Par défaut Touche Shift
    Bonjour ! J’ai été émerveillé par ce commentaire et j’ai trouvé ça plus intéressant. Alors je tiens à vous remercier d’avoir éclairé ma lanterne.
    Citation Envoyé par dok flint Voir le message
    Moi j'ai fait :

    Sur le formrulaire interne(aprés l'ouverture de la base) qui me permet d'ouvrir la liste des mots de passes et les utilisateurs ,j'ai placé un mot de passe secret qui n'apparait nulle part dans la base ce mot de apsse va permettre l'ouverture d'un formulaire contenant deux boutons :

    1- VEROUILLER LA BSE
    2- DEVEROUILLER LA BASE

    Dans l'evenement sur clic de "VERROUILLER"j'ai placer le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Module1.SetBypassProperty
    If MsgBox("Vous verrouiller votre application .Voulez vous continuer?", _
        vbQuestion + vbYesNo) = vbYes Then
        DoCmd.Quit
     
        End If
    Dans l'evenement sur clic de "DEVERROUILLER"j'ai placer le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Module1.UnSetBypassProperty
    If MsgBox("Vous verrouiller votre application .Voulez vous continuer?", _
        vbQuestion + vbYesNo) = vbYes Then
        DoCmd.Quit
     
        End If
    Module1 : c'est le nom du module du code

    Dnoc à chaque fois que tu veux faire des modifications tu pemet le schift puis apres avoir terminer tu l'enleve

    le code placé dans le module 1 c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Sub SetBypassProperty()
    Const DB_Boolean As Long = 1
        ChangeProperty "AllowBypassKey", DB_Boolean, False
    End Sub
     
    Sub UnSetBypassProperty()
    Const DB_Boolean As Long = 1
        ChangeProperty "AllowBypassKey", DB_Boolean, True
    End Sub
     
    Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
        Dim dbs As Object, prp As Variant
        Const conPropNotFoundError = 3270
     
        Set dbs = CurrentDb
        On Error GoTo Change_Err
        dbs.Properties(strPropName) = varPropValue
        ChangeProperty = True
     
    Change_Bye:
        Exit Function
     
    Change_Err:
        If Err = conPropNotFoundError Then    ' Propriété non trouvée.
            Set prp = dbs.CreateProperty(strPropName, _
                varPropType, varPropValue)
            dbs.Properties.Append prp
            Resume Next
        Else
            ' Erreur inconnue.
            ChangeProperty = False
            Resume Change_Bye
        End If
    End Function
    Si ça marche ne pas oublier [RESOLU]
    Salut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment activer la touche shift?
    Par JavaAcro dans le forum Debian
    Réponses: 5
    Dernier message: 21/08/2006, 11h57
  2. Modifier la touche shift pour la sécurité
    Par cain.patres dans le forum Sécurité
    Réponses: 2
    Dernier message: 22/05/2006, 11h46
  3. problème suite à un appuie long de la touche shift
    Par emi dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 02/04/2006, 14h32
  4. Touche shift
    Par tamyme dans le forum Access
    Réponses: 2
    Dernier message: 12/10/2005, 14h07
  5. utiliser la touche SHIFT ou CTRL+A dans un DBGRID
    Par richard038 dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/10/2005, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo