OVH Cloud OVH Cloud

Interdire l'emploi de Alt + Entrée

4 réponses
Avatar
Herve Matous
Bonjour,
Je reposte car la r=E9ponse pr=E9c=E9dente ne semble pas=20
convenir.
Je viens de me rendre compte qu'en appuyant sur=20
Alt+Entr=E9e on entrait dans les propri=E9t=E9s et=20
donc dans le code... J'ai essay=E9 de bloquer les touches=20
par cette fonction trouv=E9e sur internet :
Private Sub Form_KeyDown(KeyCode As Integer, Shift As=20
Integer)
Select Case KeyCode
Case 33, 34, 9, 18
KeyCode =3D 0
End Select
end sub

mais si le Alt (18) est bloqu=E9, le Alt+Entr=E9e fonctionne=20
toujours.
Merci d'avance pour vos conseils
Herve

4 réponses

Avatar
Eric
"Herve Matous" écrivait :

Bonjour,
Je reposte car la réponse précédente ne semble pas
convenir.
Je viens de me rendre compte qu'en appuyant sur
Alt+Entrée on entrait dans les propriétés et
donc dans le code... J'ai essayé de bloquer les touches
par cette fonction trouvée sur internet :
Private Sub Form_KeyDown(KeyCode As Integer, Shift As
Integer)
Select Case KeyCode
Case 33, 34, 9, 18
KeyCode = 0
End Select
end sub

mais si le Alt (18) est bloqué, le Alt+Entrée fonctionne
toujours.
Merci d'avance pour vos conseils
Herve




Bonjour Hervé

Voici une procédure qui fait le traitement que tu veux et teste aussi la
combinaison des touches ALT+F11 pour éviter de basculer dans les modules
VBA. (Adaptée de la MSDN). Je l'ai faite dans le but de la mettre dans un
module standard d'Access car tu risques d'en avoir besoin sur tous tes
formulaires.

Public Sub BlocageTouchesSensibles(UnCode As Integer, ToucheShift As
Integer)
Dim AltDown, Txt As String
Const vbAltMask = 4
AltDown = (ToucheShift And vbAltMask) > 0
If UnCode = vbKeyReturn And AltDown Then
Txt = "ALT+ENTREE"
MsgBox "Vous avez appuyé sur " & Txt & vbCrLf & _
"Touches interdites", vbCritical, "Newsgroup Access"
KeyCode = 0
End If
If UnCode = vbKeyF11 And AltDown Then
Txt = "ALT+F11"
MsgBox "Vous avez appuyé sur " & Txt & vbCrLf & _
"Touches interdites", vbCritical, "Newsgroup Access"
KeyCode = 0
End If
End Sub


et sur la procédure Keydown du formulaire :

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
BlocageTouchesSensibles KeyCode, Shift
End Sub


Si ton formulaire a une zone de texte ou d'autres types de contrôles, il
faudra aussi appeler cette procédure.

Espérant que ca réponde à ton besoin.

A+
Eric

Avatar
3stone
Salut,

Public Sub BlocageTouchesSensibles(UnCode As Integer, ToucheShift As
Integer)
Dim AltDown, Txt As String



Oui... mais un simple:

If (KeyCode = 13 And Shift = 4) Or (KeyCode = 122 And Shift = 4) Then
KeyCode = 0
MsgBox "blabla..."
End If


sur le KeyDown ne suffit pas ?



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Herve Matous
Super !
Merci à vous 2 pour vos conseils.
C'est toujours aussi agréable de pouvoir compter sur la
communauté.
Herve

-----Message d'origine-----
Bonjour,
Je reposte car la réponse précédente ne semble pas
convenir.
Je viens de me rendre compte qu'en appuyant sur
Alt+Entrée on entrait dans les propriétés et
donc dans le code... J'ai essayé de bloquer les touches
par cette fonction trouvée sur internet :
Private Sub Form_KeyDown(KeyCode As Integer, Shift As
Integer)
Select Case KeyCode
Case 33, 34, 9, 18
KeyCode = 0
End Select
end sub

mais si le Alt (18) est bloqué, le Alt+Entrée fonctionne
toujours.
Merci d'avance pour vos conseils
Herve

.



Avatar
Eric
Bonjour Pierre

Oui... mais un simple:

If (KeyCode = 13 And Shift = 4) Or (KeyCode = 122 And Shift = 4) Then
KeyCode = 0
MsgBox "blabla..."
End If


sur le KeyDown ne suffit pas ?



Ouiiiii et pour améliorer autant conseiller de définir la propriété Aperçu
des Touches (KeyPreview)(Onglet Evènements) du formulaire à Oui, ce qui
devrait éviter d'appeler le code sur chacun des contrôles.

Non ?

A+
Eric