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

IHM Discussion :

Désactivation touches avec AutoKeys [AC-2010]


Sujet :

IHM

  1. #1
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut Désactivation touches avec AutoKeys
    Bonjour

    Je souhaite interdire l'utilisation de plusieurs touches dans toute mon application.

    La solution est de passer par la macro AutoKeys.
    Comment écrire cette macro pour les touches F1, Ctrl et Alt ,
    J'ai fait il y a quelques années sous 97, mais je suis perdu sous 2010.

    Merci d'avance

    titi95

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour titi,

    Voici un bout de code issu d'un de mes modules.
    Je t'ai préparé cela vite fait, donc à vérifier.
    Cependant, tu as un fil conducteur pour ce que tu souhaites faire.

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Sub TouchAppuyee(KeyCode As Integer, ShiftAltCtrl As Integer)
                                        'Sur touche appuyée
    On Error GoTo Err
    'Interdit l'utilisation de certaines touches clavier
     
    'Pour appeler le code :
    'Dans l'évènement Sur touche appuyée
    'Call TouchAppuyee(Keycode,Shift)
     
    'Légende Ascii :
    '33 vbKeyPageUp
    '34 vbKeyPageDown
    '35 Imprim écran
    '36 Fin Syst
    '37 à 40 Flèche clavier
    '67 Touche C (copier)
    '70 vbKeyF
    '71 vbKeyG
    '78 vbKeyN
    '79 vbKeyO
    '80 vbKeyP
    '83 vbKeyS
    '87 vbKeyW
    '88 Touche X (Couper)
    '91 Touche Windows
    'F1 (112) à F12(123)
     
        Select Case ShiftAltCtrl
            Case 1 'Touche Shift
                Select Case KeyCode
                    Case 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123
                        KeyCode = 0
                        Exit Sub
     
            'Ctrl+F1 soit 2+112 dispo pour déplier ruban
            Case 2, 4 'Touche Ctrl, Touche Alt
                '37 à 40 combiné à la touche Ctrl permettent de se déplacer dans les enregistrements
                Select Case KeyCode
                    Case 33, 34, 35, 36, 37, 38, 39, 40, 67, 70, 71, 78, 79, 80, 83, 87, 88, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123
                        KeyCode = 0
                        Exit Sub
                End Select
            'Si aucune touche Shift, Ctrl ou Alt d'activée
            Case Else
            'Pour les touches spéciales
              Select Case KeyCode
                  Case 33, 34, 35, 36, 91, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123
                      KeyCode = 0
                      Exit Sub
                  Case 112 'Si appui sur la touche F1
                      KeyCode = 0 'On annule l'ouverture de l'aide Access
                      'Ici un code particulier à l'appui de la touche F1, par exemple ouverture d'un fichier *.chm personnalisé
              End Select
        End Select
    Fin: Exit Sub
     
    Err:
    MsgBox Err.Number
    Resume Fin
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Pour appeler le code
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Call TouchAppuyee(KeyCode, Shift) 'Interdit certaines touches clavier
    End Sub
    Cordialement

    Christophe

  3. #3
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonjour Christophe

    Entre temps j'ai trouvé (sur un forum US...) comment écrire ce que j'avais en mémoire, mais dans une macro 2010.

    Créer une macro AutoKeys
    Choisir Sous-macro comme action (c'est vach...t intuitif ! Avant il suffisait de taper le code de la touche dans Nom...)
    Taper le code de la touche ; exemples : {F1} pour F1, ^{p} pour Ctrl+P
    Ajouter ArrêtMacro comme action.
    Répéter pour chaque touche souhaitée

    Avantage : les touches traitées sont désactivées dans toute l'application.


    Par le code on peut effectivement intervenir de manière différenciée pour chaque Formulaire ou Etat.
    Dans Propriétés / Événements mettre Aperçu des touches à Oui
    Dans Propriétés / Sur touche appuyée créer un code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
        If KeyCode = vbKeyF1 Or vbKeyControl Then
            KeyCode = 0
        End If
    End Sub
    Les deux méthodes sont donc complémentaires.

    Un grand merci pour ta contribution.

    titi95

  4. #4
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour,

    Personnellement, j'ai définitivement retiré de mes applications les macros, à part celle de démarrage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
        If KeyCode = vbKeyF1 Or vbKeyControl Then
            KeyCode = 0
        End If
    End Sub
    C'est marrant comment cela ressemble à ce que je t'ai mis en exemple

    Ravi de t'avoir aidé

    Cordialement

    Christophe

  5. #5
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonjour Christophe

    Désolé, mais ce n'est pas une coïncidence, puisque j'avais déjà appliqué et essayé le code fourni par Domi en 2008 sur ce forum.
    Mais avec l'inconvénient (dans mon cas de figure) qu'il ne s'applique qu'à un formulaire ou état, d'où ma question concernant la macro AutoKeys que je n'arrivais plus à écrire sur 2010.

    Par contre tu m'as permis de comprendre comment faire avec la touche particulière Alt.
    Encore un grand merci !

    Cordialement,

    titi95

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

Discussions similaires

  1. Désactiver la touche avec effet immédiat
    Par Zebullo dans le forum Langage
    Réponses: 1
    Dernier message: 19/03/2011, 18h36
  2. Désactiver touches multimédias pc portable
    Par hacksi dans le forum Ordinateurs
    Réponses: 6
    Dernier message: 18/05/2006, 13h10
  3. [VBA-E] désactiver "Annuler" avec .GetOpenFilename
    Par repié dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/05/2006, 17h15
  4. [Key.isDown] Controler une touche avec code ascii
    Par arnolem dans le forum Flash
    Réponses: 3
    Dernier message: 30/01/2006, 14h34
  5. [MFC] Ctrl/Alt+touches avec PostMessage
    Par Fladnag dans le forum MFC
    Réponses: 4
    Dernier message: 10/02/2004, 14h33

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