OVH Cloud OVH Cloud

Problème avec désactivation de la touche shift

6 réponses
Avatar
Fabrice
Bonjour à tous,

Je travaille sous Access 2000 et je souhaite désactiver la touche shift au
démarrage de ma base de données. J'ai puisé le code sur l'excellent site de
Hervé Inisan. Voici le code :

Function DesactiverMaj()
Dim blnAutoriserMaj As Boolean

'La fonction IsGroup permet d'identifier le groupe du user en cours
If IsGroup(Application.CurrentUser, "Admins") = True Then
blnAutoriserMaj = True
Else
blnAutoriserMaj = False
End If

ModifiePropr "AllowBypassKey", dbBoolean, blnAutoriserMaj
End Function

Function ModifiePropr(chNomPropriété As String, varTypeProp As Variant, _
varValeurProp As Variant) As Integer
Dim bds As DAO.Database, prp As DAO.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

Ca fonctionne bien, mais j'ai un petit problème et je ne sais pas si c'est
normal.

Si je garde Shift appuyé lorsque je me logue en administrateur, la touche
shift est désactivée à la deuxième tentative. Lorsque je quitte ma session
administrateur et j'ouvre tout de suite la base avec un groupe différent que
Admins en gardant la touche shift appuyée, la touche shift est également
désactivée, ce qui n'est pas génial...

En fait, j'ai remarqué que la touche shift est effectivement désactivée pour
un groupe autre que Admins que lorsque je me serais logué une fois
normalement (sans garder la touche shift appuyée) avec un groupe autre que
Admins (j'espère que vous me suivez). Donc, si je fais des modifs en tant
qu'administrateur, ensuite je dois me loguer avec un groupe différent de
Admins pour que la touche shift soit à nouveau désactivée.

Est-ce normal ou existe-t-il un moyen pour que la touche shift soit vraiment
désactivée si je me logue avec un groupe autre que Admins (même si je viens
de me loguer en tant qu'administrateur en maintenant la touche shift
appuyée).

Je vous remercie d'avance si vous pouvez m'aider (en espérant que vous avez
compris mes explications fumeuses...)

Cordiales salutations à tous
Fabrice

6 réponses

Avatar
Raymond [mvp]
Bonjour.

tout ce qui se passe est normal, la touche shift ne sera activée que lors du
prochain lancement. Pour éviter de lancer cette prochaine fois, il faudrait
que si l'utilisateur est admins , tu poses la question par un msgbox pour
savoir s'il faut supprimer l'action. dans ce cas tu relances directement un
autre access par le shell à la sortie d'application. ( à tester car c'est
possible que ce soit ignoré)

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Fabrice" a écrit dans le message de
news:
Bonjour à tous,

Je travaille sous Access 2000 et je souhaite désactiver la touche shift au
démarrage de ma base de données. J'ai puisé le code sur l'excellent site
de

Hervé Inisan. Voici le code :

Function DesactiverMaj()
Dim blnAutoriserMaj As Boolean

'La fonction IsGroup permet d'identifier le groupe du user en cours
If IsGroup(Application.CurrentUser, "Admins") = True Then
blnAutoriserMaj = True
Else
blnAutoriserMaj = False
End If

ModifiePropr "AllowBypassKey", dbBoolean, blnAutoriserMaj
End Function

Function ModifiePropr(chNomPropriété As String, varTypeProp As Variant, _
varValeurProp As Variant) As Integer
Dim bds As DAO.Database, prp As DAO.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

Ca fonctionne bien, mais j'ai un petit problème et je ne sais pas si c'est
normal.

Si je garde Shift appuyé lorsque je me logue en administrateur, la touche
shift est désactivée à la deuxième tentative. Lorsque je quitte ma session
administrateur et j'ouvre tout de suite la base avec un groupe différent
que

Admins en gardant la touche shift appuyée, la touche shift est également
désactivée, ce qui n'est pas génial...

En fait, j'ai remarqué que la touche shift est effectivement désactivée
pour

un groupe autre que Admins que lorsque je me serais logué une fois
normalement (sans garder la touche shift appuyée) avec un groupe autre que
Admins (j'espère que vous me suivez). Donc, si je fais des modifs en tant
qu'administrateur, ensuite je dois me loguer avec un groupe différent de
Admins pour que la touche shift soit à nouveau désactivée.

Est-ce normal ou existe-t-il un moyen pour que la touche shift soit
vraiment

désactivée si je me logue avec un groupe autre que Admins (même si je
viens

de me loguer en tant qu'administrateur en maintenant la touche shift
appuyée).

Je vous remercie d'avance si vous pouvez m'aider (en espérant que vous
avez

compris mes explications fumeuses...)

Cordiales salutations à tous
Fabrice




Avatar
Fabrice
Bonjour Raymond,

Encore merci pour ton aide, car ce n'est pas la première fois que tu me
dépannes.
En espérant ne pas abuser, pourrais-tu me donner une piste pour effecuter un
SHELL.

J'espère te relire et merci encore
fabrice


"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

tout ce qui se passe est normal, la touche shift ne sera activée que lors
du

prochain lancement. Pour éviter de lancer cette prochaine fois, il
faudrait

que si l'utilisateur est admins , tu poses la question par un msgbox pour
savoir s'il faut supprimer l'action. dans ce cas tu relances directement
un

autre access par le shell à la sortie d'application. ( à tester car c'est
possible que ce soit ignoré)

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Fabrice" a écrit dans le message de
news:
Bonjour à tous,

Je travaille sous Access 2000 et je souhaite désactiver la touche shift
au


démarrage de ma base de données. J'ai puisé le code sur l'excellent site
de

Hervé Inisan. Voici le code :

Function DesactiverMaj()
Dim blnAutoriserMaj As Boolean

'La fonction IsGroup permet d'identifier le groupe du user en cours
If IsGroup(Application.CurrentUser, "Admins") = True Then
blnAutoriserMaj = True
Else
blnAutoriserMaj = False
End If

ModifiePropr "AllowBypassKey", dbBoolean, blnAutoriserMaj
End Function

Function ModifiePropr(chNomPropriété As String, varTypeProp As Variant,
_


varValeurProp As Variant) As Integer
Dim bds As DAO.Database, prp As DAO.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

Ca fonctionne bien, mais j'ai un petit problème et je ne sais pas si
c'est


normal.

Si je garde Shift appuyé lorsque je me logue en administrateur, la
touche


shift est désactivée à la deuxième tentative. Lorsque je quitte ma
session


administrateur et j'ouvre tout de suite la base avec un groupe différent
que

Admins en gardant la touche shift appuyée, la touche shift est également
désactivée, ce qui n'est pas génial...

En fait, j'ai remarqué que la touche shift est effectivement désactivée
pour

un groupe autre que Admins que lorsque je me serais logué une fois
normalement (sans garder la touche shift appuyée) avec un groupe autre
que


Admins (j'espère que vous me suivez). Donc, si je fais des modifs en
tant


qu'administrateur, ensuite je dois me loguer avec un groupe différent de
Admins pour que la touche shift soit à nouveau désactivée.

Est-ce normal ou existe-t-il un moyen pour que la touche shift soit
vraiment

désactivée si je me logue avec un groupe autre que Admins (même si je
viens

de me loguer en tant qu'administrateur en maintenant la touche shift
appuyée).

Je vous remercie d'avance si vous pouvez m'aider (en espérant que vous
avez

compris mes explications fumeuses...)

Cordiales salutations à tous
Fabrice








Avatar
Raymond [mvp]
RE.

Shell "msaccess.exe", vbMaximizedFocus

dis-nous si ça marche.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Fabrice" a écrit dans le message de
news:
Bonjour Raymond,

Encore merci pour ton aide, car ce n'est pas la première fois que tu me
dépannes.
En espérant ne pas abuser, pourrais-tu me donner une piste pour effecuter
un

SHELL.

J'espère te relire et merci encore
fabrice


Avatar
Fabrice
Rebonjour Raymond,

J'ai mis le code suivant sur l'événement Close d'un formulaire qui est
toujours ouvert dans la bd :

Dim bytRep As Byte
If IsGroup(Application.CurrentUser, "Admins") = True Then
bytRep = MsgBox("Relancer", vbYesNo)
If bytRep = vbYes Then
Shell "msaccess.exe", vbMaximizedFocus
End If
End If

Le code relance effectivement Access, mais la touche shift n'est pas
réactivée. Je peux me loguer avec un autre groupe en tenant la touche shift
appuyée (elle est restée active), si j'ouvre à nouveau la bd.

J'espère que mon bout de code correspond à ce que tu voulais dire.

A+
Fabrice



"Raymond [mvp]" a écrit dans le message de
news:
RE.

Shell "msaccess.exe", vbMaximizedFocus

dis-nous si ça marche.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Fabrice" a écrit dans le message de
news:
Bonjour Raymond,

Encore merci pour ton aide, car ce n'est pas la première fois que tu me
dépannes.
En espérant ne pas abuser, pourrais-tu me donner une piste pour
effecuter


un
SHELL.

J'espère te relire et merci encore
fabrice






Avatar
Raymond [mvp]
est-ce que tu remets bien la propriété pour supprimer l'action quand tu
quittes?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Fabrice" a écrit dans le message de
news:
Rebonjour Raymond,

J'ai mis le code suivant sur l'événement Close d'un formulaire qui est
toujours ouvert dans la bd :

Dim bytRep As Byte
If IsGroup(Application.CurrentUser, "Admins") = True Then
bytRep = MsgBox("Relancer", vbYesNo)
If bytRep = vbYes Then
Shell "msaccess.exe", vbMaximizedFocus
End If
End If

Le code relance effectivement Access, mais la touche shift n'est pas
réactivée. Je peux me loguer avec un autre groupe en tenant la touche
shift

appuyée (elle est restée active), si j'ouvre à nouveau la bd.

J'espère que mon bout de code correspond à ce que tu voulais dire.

A+
Fabrice


Avatar
Fabrice
Oui tu as raison, mon code ne servait à rien. Il a donc été modifé comme
suit :

Dim bytRep As Byte
Dim blnAutoriserMaj As Boolean
If IsGroup(Application.CurrentUser, "Admins") = True Then
bytRep = MsgBox("Désactiver la touche Maj", vbYesNo)
If bytRep = vbYes Then
blnAutoriserMaj = False
ModifiePropr "AllowBypassKey", dbBoolean, blnAutoriserMaj
End If
End If

Effectivement, ça marche, mais un problème réside : comment exécuter ce code
à la fermeture d'Access, vu que si je me logue en administrateur en
maintenant la touche SHIFT appuyée, la macro autoexec ne se lancera pas et
mon formulaire contenant ce code (qui s'exécute sur l'événement Close) non
plus.

Je vais essayer encore de creuser et je te tiens au courant.

Merci de ton aide
Fabrice


"Raymond [mvp]" a écrit dans le message de
news:
est-ce que tu remets bien la propriété pour supprimer l'action quand tu
quittes?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"Fabrice" a écrit dans le message de
news:
Rebonjour Raymond,

J'ai mis le code suivant sur l'événement Close d'un formulaire qui est
toujours ouvert dans la bd :

Dim bytRep As Byte
If IsGroup(Application.CurrentUser, "Admins") = True Then
bytRep = MsgBox("Relancer", vbYesNo)
If bytRep = vbYes Then
Shell "msaccess.exe", vbMaximizedFocus
End If
End If

Le code relance effectivement Access, mais la touche shift n'est pas
réactivée. Je peux me loguer avec un autre groupe en tenant la touche
shift

appuyée (elle est restée active), si j'ouvre à nouveau la bd.

J'espère que mon bout de code correspond à ce que tu voulais dire.

A+
Fabrice