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

VBA Access Discussion :

[VBA-Access] Activer/Désactiver F11 en code


Sujet :

VBA Access

  1. #1
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut [VBA-Access] Activer/Désactiver F11 en code
    Bonjour,

    Voici une question qui mériterait d'être dans la FAQ mais dont je n'ai pas la réponse.
    Je ne l'ai pas trouvée par recherche non plus. Peut-être n'ai je pas utilisé les bons mots clés

    Voilà : J'ai désactivé les "...touches spéciales d'accès" dans la fenêtre "Outils/Démarrage..."

    Maintenant j'aimerais pouvoir la réactiver par code pour certains utilisateur.
    Seulement je ne retouve pas comment accéder aux options. Par l'objet Application peut-être ?

    Merci
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  2. #2
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    vba ? vb?

  3. #3
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Pardon

    VBA
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par Ricou13
    Voilà : J'ai désactivé les "...touches spéciales d'accès" dans la fenêtre "Outils/Démarrage..."

    Pardon

    VBA
    et VBA pour quel logiciel Excel, Word...

    ? je ne trouve pas la fenêtre "Outils/démarrage.")

  5. #5
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Décidemment, je manque à tous mes devoirs
    VBA sous Access 2000 et supérieur
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  6. #6
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Il y a qui permet de modifier les choix de "Outils/Préférences"

    il doit donc bien y avoir quelque chose pour le menu "Démarrage...", non ?
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  7. #7
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    J'ai découvert qu'il faudrait utiliser des propriétés indépendantes comme "AllowSpecialKeys" ou "StartupShowDBWindow" via quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     CurrentDb.Properties("StartupShowDBWindow")
    Mais que AllowSpecialKeys ne serait pas si facilement accessible.

    Voici ce que j'ai trouvé (c'est brut en attendant de trier et tester) :

    Site 1

    Options de démarrage

    Il est possible, par programmation de modifier les options de démarrage (Outils/Démarrage). Les différentes options sont les suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CurrentDb.Properties("StartUpForm") = "xxx"
    CurrentDb.Properties("StartupShowDBWindow") = True
    CurrentDb.Properties("StartupShowStatusBar") = True
    CurrentDb.Properties("AllowBuiltinToolbars") = True
    CurrentDb.Properties("AllowFullMenus") = True
    CurrentDb.Properties("AllowBreakIntoCode") = True
    CurrentDb.Properties("AllowSpecialKeys") = True
    Il y a plusieurs particularités : La première est que toutes ces propriétés ne sont pas existantes tant que l'utilisateur n'en a pas changé une manuellement au moins une fois. Par exemple, si on exécute ce code immédiatement, on aura une erreur à chaque ligne. Mais, si par exemple, l'utilisateur fait d'abord Outils/Démarrage, et change par exemple StartupForm (Formulaire de démarrage) et met n'importe quoi, par exemple "MenuPrincipal", alors, quand on revient exécuter le code par la suite, on n'a plus du tout d'erreur, sauf sur AllowSpecialKeys qui continuera de renvoyer une erreur. Il s'agit une propriété qui n'existe justement pas dans Outils/Démarrage. C'est cette propriété qui empêche l'utilisation de SHIFT pour court-circuiter la macro AutoExec et toutes les propriétés de démarrage. Elle n'est pas disponible aussi facilement car elle est sans doute trop dangereuse, car, effectivement, si on définit cette propriété à FALSE, et qu'on a dans la volée restreint complètement les autorisations de menus, barres d'outils, etc., alors on n'a VRAIMENT plus accès à la création de la base de données. C'est aussi verrouillé qu'un .MDE.

    AInsi donc, pour accéder à cette propriété AllowSpecialKeys, il est nécessaire de créer une nouvelle propriété, de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set Prp = CurrentDb.CreateProperty("AllowByPassKey", dbBoolean, False)
    CurrentDb.Properties.Append Prp
    CurrentDb.Properties("AllowBypassKey") = False
    ATTENTION toutefois, ce code de création de la propriété AllowByPassKey n'a PAS pour effet de l'ajouter dans Outils/Démarrage d'une part, et on ne peut l'exécuter qu'UNE fois dans la vie de la base de données d'autre part (Evidemment, puisqu'une fois qu'elle est créée, on ne peut pas la recréer)
    [/quote]
    Il semblerait donc que certaines propriétés ne soient pas accessible autrement qu'en les créant

    Voici un lien qui propose une fonction générique

    Très fort voici un bout de code fournit par FRED.G en 11/2004 ici même mais dont le topic n'existe plus (merci le cache de Google)
    [quote]Auteur : Frank

    Description : permet de définir par le code les options de démarrage et notamment, de bloquer les touches spéciales d'accès... Avec cette fonction l'ouverture de la base par un utilisateur en mode exclusif devient impossible.

    Note : Appeller la fonction SetStartup au démarrage du premier formulaire ou dans une macro autoexec.

    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
    42
    43
    44
    45
    Private Function SetStartupProperties()
     
        On Error Resume Next
     
        ChangeProperty "AppTitle", dbText, "Le nom de ton appli"
     
        ChangeProperty "StartupShowDBWindow", dbBoolean, False
        ChangeProperty "StartupShowStatusBar", dbBoolean, True
     
        ChangeProperty "AllowFullMenus", dbBoolean, False
        ChangeProperty "AllowShortcutMenus", dbBoolean, False
        ChangeProperty "AllowBuiltinToolbars", dbBoolean, False
        ChangeProperty "AllowToolbarChanges", dbBoolean, False
     
        ChangeProperty "AllowBreakIntoCode", dbBoolean, False
        ChangeProperty "AllowBypassKey", dbBoolean, False
     
        ChangeProperty "AllowSpecialKeys", dbBoolean, False
     
    End Function
     
    '****************
    Private Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
        Const conPropNotFoundError = 3270
        Dim dbs As Database
        Dim prp As Property
     
        Set dbs = CurrentDb
        On Error GoTo Change_Err
        dbs.Properties(strPropName) = varPropValue
        ChangeProperty = True
     
    Change_Bye:
        Exit Function
     
    Change_Err:
        If Err = conPropNotFoundError Then  ' Property not found.
            Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
            dbs.Properties.Append prp
            Resume Next
        Else ' Unknown error.
            ChangeProperty = False
            Resume Change_Bye
        End If
    End Function
    Ce code, qui se base sur l'exemple donné par Microsoft dans l'aide sur "AllowBypassKey" a, en fait, été transféré dans la FAQ mais sous le titre "Inhiber la touche MAJ au démarrage" qui est finalement très réducteur du fait des possibilités de la fonction, comme indiqué dans le mail original.

    Les autres sources que j'ai trouvé se basent sur le principe de la fonction qui modifie la propriété si possible et sinon, la crée.

    Je teste ça cette semaine et je vous tiens au courant. Mais je pense que c'est LA solution.
    Dans ce cas, il serait peut-être bon de modifier la FAQ pour tenir compte du fait que cette fonction ne se limite pas seulement à la touche MAJ...

    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

  8. #8
    Membre actif Avatar de Ricou13
    Inscrit en
    Août 2002
    Messages
    292
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 292
    Points : 224
    Points
    224
    Par défaut
    Bon,

    C'est la bonne piste mais pas la panacée.
    Le problème est que la modification n'est prise en compte qu'après le redémarrage de l'appli.

    De fait, les autres utilisateurs y ont alors accès (je parle principalement de F11).

    D'après "Franck" il faudrait lancer la fonction au démarrage
    Citation Envoyé par Franck
    Note : Appeller la fonction SetStartup au démarrage du premier formulaire ou dans une macro autoexec.
    Seulement, à ce moment, l'utilisateur n'a pas encore saisi son identifiant et mot de passe et donc on ne sait pas de qui il s'agit !!!
    il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard
    Des fois ça malche, des fois ça malche pas. Garcimore

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/03/2007, 09h35
  2. Conversion des codes VBA Access en VB6
    Par cokouT dans le forum Access
    Réponses: 1
    Dernier message: 23/11/2006, 09h52
  3. [VBA - ACCESS 2002] Cacher/désactiver un bouton
    Par SamLeChiseuji dans le forum IHM
    Réponses: 2
    Dernier message: 12/06/2006, 09h31
  4. Réponses: 6
    Dernier message: 08/06/2006, 18h21
  5. [VBA-E] Activer et désactiver des classeur
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2006, 10h24

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