XL 2013 desactiver clavier

cisco38

XLDnaute Nouveau
bonjour
je souhaite désactiver entièrement le clavier et laisser la souris
une solution merci
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
en voila une qui bloque aussi le pavé numérique
VB:
Sub Bloque_Clavier()
Dim Compteur As Byte
On Error Resume Next
For Compteur = 1 To 255
Application.OnKey Chr(Compteur), ""
Next Compteur
SendKeys ("{NUMLOCK}")
End Sub
Sub Debloque_Clavier()
Dim Compteur As Byte
On Error Resume Next
For Compteur = 1 To 255
Application.OnKey Chr(Compteur)
Next Compteur
SendKeys ("{NUMLOCK}")
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
chez moi la mienne fonctionne pour le pavé numérique
@Yeahou
tu ne le sais peut être pas mais il est TRÈS FORTEMENT!!! déconseillé d'utiliser le sendkey de vba ou de l'application utilise plutôt le createobject("wscript.shell").sendkeys ("{NUMLOCK}")

et encore !! il y en aurait beaucoup plus a dire ,comme par exemple tester d'abord avec le getkeystate savoir si elle est active ou pas

@mapomme Bonsoir
je ne bloque que les lettre et les chiffres il faudrait bien sur bloquer toutes les autres touches
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour le fil, le forum
tu ne le sais peut être pas mais il est TRÈS FORTEMENT!!! déconseillé d'utiliser le sendkey de vba ou de l'application utilise plutôt le createobject("wscript.shell").sendkeys ("{NUMLOCK}")
Patrick,
le vieux que je suis se rappelle qu'il est déconseillé de l'utiliser car il a un comportement erratique qui bloque parfois le pavé numérique 🤔 et qu'on le débloquait en forçant une commande 🤔🤔
VB:
SendKeys ("{NUMLOCK}"), True
il y en aurait beaucoup plus a dire ,comme par exemple tester d'abord avec le getkeystate savoir si elle est active ou pas
Mouaih, on peut aussi dans ton code tester la MAJ pour ne traiter qu'une fois les lettres [Edition: j'aurai dù mettre mes lunettes, car tu traites déja avec Ucase, cela m'aurait évité de dire une bétise, désolé, c'est pas bon de vieillir], même si je n'ai repris le forum Xld que récemment après une longue, longue parenthèse (le jeune retraité que je suis devenu depuis peu a maintenant un peu voire beaucoup de temps), je ne suis pas un perdreau de la dernière couvée .

Je te souhaite une bonne journée.
Bien cordialement,
Bernard
 
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Toujours pareil sur mon PC : aucun blocage du clavier numérique.
et avec wscript ?
VB:
Option Explicit
Private Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Sub Bloque_Clavier()
    Dim Compteur As Byte
    On Error Resume Next
    For Compteur = 1 To 255
        Application.OnKey Chr(Compteur), ""
    Next Compteur
    DoEvents
    If GetKeyState(vbKeyNumlock) = 1 Then CreateObject("wscript.shell").SendKeys ("{NUMLOCK}")
End Sub
Sub Debloque_Clavier()
    Dim Compteur As Byte
    On Error Resume Next
    For Compteur = 1 To 255
        Application.OnKey Chr(Compteur)
    Next Compteur
    DoEvents
    If GetKeyState(vbKeyNumlock) = 0 Then CreateObject("wscript.shell").SendKeys ("{NUMLOCK}")
End Sub
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
re
bonjour yeahou ca fonctionne mais en mode edition(dblclick dans les cellules) les touches fonctionnent dans les cellule
Ben je suis pas le seul à avoir besoin de lunettes, ça fait plaisir ! 🤭 😄😂🤣 🤣 🤣
d'ailleurs, ça marche aussi avec F2
à la barbare, mais ça fonctionne pour le clavier en laissant la souris fonctionnelle.
la saisie reste possible par double clic ou la barre de formule
 
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
allez encore un petit code,
désactive aussi les touches de fonction et la barre de formule
VB:
Option Explicit
Private Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Double_Clic_en_Cours As Boolean
Sub Bloque_Clavier()
    Dim Compteur As Byte
    On Error Resume Next
    For Compteur = 1 To 255
        If Compteur < 13 Then Application.OnKey "{F" & Compteur & "}", ""
        Application.OnKey Chr(Compteur), ""
    Next Compteur
    Application.DisplayFormulaBar = False
    Double_Clic_en_Cours = True
    DoEvents
    If GetKeyState(vbKeyNumlock) = 1 Then CreateObject("wscript.shell").SendKeys ("{NUMLOCK}")
End Sub
Sub Debloque_Clavier()
    Dim Compteur As Byte
    On Error Resume Next
    For Compteur = 1 To 255
        If Compteur < 13 Then Application.OnKey "{F" & Compteur & "}"
        Application.OnKey Chr(Compteur)
    Next Compteur
    Application.DisplayFormulaBar = True
    Double_Clic_en_Cours = False
    DoEvents
    If GetKeyState(vbKeyNumlock) = 0 Then CreateObject("wscript.shell").SendKeys ("{NUMLOCK}")
End Sub
couplé à une événementielle pour le double clic (à placer dans le module de feuille)
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = Double_Clic_en_Cours
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
et avec wscript ?
Pas de changement :confused:
Il va falloir envisager la méthode radicale de @soan . Mais les ciseaux ne fonctionneront pas. Mon clavier est sans fil.

Et puis comme je ne cesse de répéter : il vaut mieux éduquer l'utilisateur sur quoi faire et ne pas faire. Il apprendra sans doute des choses qu'il ignorait sur Excel et sur Windows. Il en sera généralement ravi et saura agir en toute connaissance des conséquences de ses actes. Et pour celui qui l'a (in)formé, c'est très gratifiant.
Un utilisateur averti en vaut 2^10.
 

Discussions similaires

Statistiques des forums

Discussions
312 559
Messages
2 089 605
Membres
104 226
dernier inscrit
siala Mohamed