formateur informatique

Déclencher des actions sur des touches précises du clavier

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Déclencher des actions sur des touches précises du clavier
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Actions VBA sur touches du clavier

Avec les travaux précédents, nous avons vu comment gérer des événements spéciaux, comme ceux des feuilles ou encore ceux concernant les intervalles de temps. Ici, nous allons apprendre à déclencher des actions lorsque des touches spécifiques du clavier sont enfoncées.

Naviguer rapidement dans les lignes du long tableau Excel en VBA

Sur l'exemple illustré par la capture, nous travaillons sur une base de données volumineuse. Elle est composée de plusieurs centaines de lignes. Nous souhaitons améliorer la vitesse de navigation au travers des lignes de ce tableau. Usuellement, si vous enfoncez les touches PageUp et PageDown, vous faites défiler les lignes vers le haut et vers le bas, sur un nombre équivalent à celui de la quantité de lignes visibles à l'écran. Mais ici, en fonction d'indications saisies dans des cellules situées sur la droite de la feuille, avec les mêmes touches, nous sommes capables de progresser de plusieurs centaines de lignes à la fois, que ce soit vers le haut ou vers le bas. Il est donc question d'intercepter ces touches lorsqu'elles sont enfoncées et de gérer les actions associées.

Classeur Excel à télécharger
Pour découvrir comment déclencher des actions maîtrisées sur des touches précises du clavier, nous suggérons d'appuyer l'étude sur un classeur Excel offrant cette base de données. Faire défiler des centaines de lignes du tableau en enfonçant une touche du clavier

Si vous enfoncez les touches PageUp et PageDown, généralement situées en haut à droite du clavier, vous faites défiler les lignes du tableau d'une quantité usuelle. Mais comme vous le constatez, des cases sont prévues sur la droite de la feuille pour personnaliser ces incréments. Il s'agit des cellules H7 et H11. Avec les valeurs qu'elles portent à ce stade, elles indiquent que nous souhaitons progresser de 150 lignes à la fois, dès que l'une ou l'autre de ces touches est enfoncée.

Comment écouter les touches ?
Le premier dilemme qui se dresse consiste à savoir comment intercepter les actions de l'utilisateur au clavier. En effet, bien que le VBA Excel offre de nombreux gestionnaires attachés aux événements survenant sur les feuilles, aucun ne concerne les touches du clavier.

Mais une ruse intermédiaire permet de nous placer sur la bonne voie. Si l'utilisateur enfonce l'une de ces deux touches, un changement de sélection est inévitablement observé. Nous allons donc commencer par travailler dans la procédure événementielle qui détecte le changement de sélection sur la feuille.
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel,
  • Sur la gauche dans l'explorateur de projet, double cliquer sur l'élément Feuil1 (Id2sorties),
Nous affichons ainsi au centre de l'écran, la feuille de code VBA associée à la base de données du classeur.
  • En haut de la feuille de code, déployer la liste déroulante de gauche,
  • Dans les propositions, choisir l'objet Worksheet,
Créer la procédure VBA Excel SelectionChange

Nous créons ainsi la procédure événementielle Worksheet_SelectionChange. Son code se déclenchera à chaque fois qu'un changement de sélection sera observé sur la feuille.

Gestionnaires d'événements à la volée
Pour autant, ce n'est pas elle qui va déterminer quelle est la touche que l'utilisateur a enfoncée. Mais lorsque nous avions appris à gérer les intervalles de temps, nous avions compris qu'il était possible de produire des gestionnaires d'événements à la volée. Pour écouter les touches du clavier, le principe est le même. Et le gestionnaire que nous devons déclencher se nomme OnKey.
  • Dans les bornes de la procédure événementielle, ajouter les deux lignes VBA suivantes :
...
Application.OnKey "{PgUp}", "Monter"
Application.OnKey "{PgDn}", "Descendre"
...


Ce gestionnaire OnKey attend deux paramètres et comme vous pouvez le voir, nous en créons deux pour gérer les deux touches. Ce sont les valeurs de ces touches que nous passons entre accolades en premier argument. En second paramètre, nous indiquons les actions à entreprendre quand la touche mentionnée en premier argument est enfoncée. En guise d'actions, nous appelons les procédures Monter et Descendre. Elles n'existent pas encore. Nous allons devoir les créer dans un nouveau module pour qu'elles puissent engendrer les déplacements en respectant le nombre de lignes désiré et mentionné par l'utilisateur sur la feuille Excel.

Naviguer au travers des lignes
Une propriété semblable à la fonction Excel Decaler permet de maîtriser les déplacements à effectuer. Cette propriété s'applique sur la cellule active (ActiveCell). Elle se nomme Offset.
  • En haut de l'éditeur VBA Excel, cliquer sur le menu Insertion,
  • Dans les propositions, choisir l'option Module,
Nous créons ainsi un nouveau module et sa feuille de code apparaît au centre de l'écran.
  • Dans cette feuille de code, créer les deux procédures Monter et Descendre, comme suit :
...
Sub Monter()
On Error Resume Next
ActiveCell.Offset(-[H11].Value, 0).Activate
End Sub

Sub Descendre()
On Error Resume Next
ActiveCell.Offset([H7].Value, 0).Activate
End Sub
...


Nous créons tout d'abord un gestionnaire d'exceptions (On Error Resume Next) pour éviter que le code ne plante lorsque le déplacement n'est plus possible (première ou dernière ligne atteinte). Ensuite, nous exploitons en effet la propriété Offset de l'objet ActiveCell pour opérer un déplacement sur le nombre de lignes spécifié (Vers le haut : -[H11].Value ou vers le bas : [H7].Value). Bien sûr, nous restons dans la même colonne (0). Et nous exploitons la méthode Activate pour donner le focus à la cellule de réception. C'est ainsi que le déplacement est effectif.
  • Enregistrer les modifications (CTRL + S) et basculer sur la feuille (ALT + Tab),
  • Modifier les valeurs des incréments en cellules H7 et H11,
  • Cliquer dans une cellule au début du tableau, par exemple D4 pour la sélectionner,
  • Puis, enfoncer la touche PageDown à plusieurss reprises,
Comme vous pouvez le voir, nous avons adapté et accéléré la navigation au travers de cette base de données volumineuse grâce à des gestionnaires capables d'intercepter et d'interpréter les touches enfoncées. Cette astuce ouvre de nombreuses perspectives pour de nouvelles solutions ergonomiques à développer.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn