affecter une macro à une touche clavier

mikeo

XLDnaute Occasionnel
Bonjour le forum,

Pendant la saisie d'un textbox dans un USF, j'aimerais pouvoir, avec une touche clavier (par exemple le *), lui affecter une macro comme si c'est un commandbutton. Sans utiliser la touche enter qui sert à valider le textbox.

Je ne sais pas s'il existe un code pour cela.

(Ceci pour ne pas déplacer la souris sur le commandbutton et cliquer dessus. Cela fait gagner quelques microsecondes)

Merci pour vos lumières.

Bon WE
 

Pièces jointes

  • valide.xls
    29.5 KB · Affichages: 70

mikeo

XLDnaute Occasionnel
Re : affecter une macro à une touche clavie

Bonjour Dranreb,

En fait, mon usf contient une dizaine de tbx, je ne voulais pas taper 10 fois pour arriver au commandbutton. Et ne pas passer du clavier à la souris.

Je sais que pour les macros on peut faire une touche raccourci Alt+?? mais est ce que cela marche pour les Usf ? Ou avec une touche fonction F1 à F14 on peut faire quelque chose ?

Merci pour ton intervention.

Mikeo
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : affecter une macro à une touche clavier

chris, c'est une idée parmi d'autres. Voir à mon avis plutôt du coté des évènements KeyDown ou KeyPress.
Mais...
Sans utiliser la touche enter qui sert à valider le textbox.
sûr ça ? il me semblait plutôt que ça entrainait le clic sur le bouton ayant sa propriété Default à True
À+
 

mikeo

XLDnaute Occasionnel
Re : affecter une macro à une touche clavier

Re Bernard, Chris,

Je viens de consulter les discussions similaires en bas de page. Il semble que cette question ait été posée et qu'elle n'ait pas trouvé de réponse. Ne vous triturez plus les méninges. Merci à vous. Bon WE

Mikeo
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : affecter une macro à une touche clavier

Bonjour à tous,
Pendant la saisie d'un textbox dans un USF, j'aimerais pouvoir, avec une touche clavier (par exemple le *), lui affecter une macro comme si c'est un commandbutton. Sans utiliser la touche enter qui sert à valider le textbox.
Je viens de consulter les discussions similaires en bas de page. Il semble que cette question ait été posée et qu'elle n'ait pas trouvé de réponse. Ne vous triturez plus les méninges.
La garde meurt mais ne se rend pas !
Impossible n'est pas français (belge non-plus d'ailleurs) !

voir fichier joint
lors de la saisie dans Tbox1, le fait de terminer par une astérisque * renverra le focus au Tbox2
lors de la saisie dans Tbox2, le fait de terminer par une astérisque * enverra automatiquement les données dans la feuille
........... et tout cela après avoir supprimé ces *
il serait plus commode d'utiliser la barre d'espace, ça permettrait de gagner encore quelques millisecondes

à+
Philippe
 

Pièces jointes

  • 111.xls
    41.5 KB · Affichages: 90
  • 111.xls
    41.5 KB · Affichages: 92
  • 111.xls
    41.5 KB · Affichages: 108

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : affecter une macro à une touche clavier

Re,

pour utiliser la barre d'espacement il suffit de remplacer * par un espace
voici le code
Code:
Private Sub TextBox1_Change()
If Right(TextBox1.Value, 1) = " " Then
TextBox1.Value = Left(TextBox1.Value, Len(TextBox1.Value) - 1)
TextBox2.SetFocus
End If
End Sub

Private Sub TextBox2_Change()
If Right(TextBox2.Value, 1) = " " Then
TextBox2.Value = Left(TextBox2.Value, Len(TextBox2.Value) - 1)
Range("A1") = TextBox1.Value
Range("B1") = TextBox2.Value
Unload Me
End If
End Sub
mais je ne comprends pas pourquoi tu n'utilises pas la touche "Enter" du pavé numérique (c'est la plus proche)

le code est facile à faire
si tu as plusieurs Tbox, il faut uniquement avoir un peu d'ordre avec leur propriété TabIndex
et écrire la procédure uniquement sur le dernier et ça aura le très net avantage de ne plus devoir supprimer le dernier caractère ( * ou espace)

Pourquoi vouloir construire une usine à gaz :confused: alors que la solution est on ne peut plus simple

à+
Philippe
 
Dernière édition:

mikeo

XLDnaute Occasionnel
Re : affecter une macro à une touche clavier

Bonjour le Forum, Philippe,

Je te remercie pour tes propositions. Effectivement, c'est plus simple. Dans ce cas je peux faire : goto "valider".

En fait, je ne voulais pas utiliser la touche Enter car elle est déjà utilisée pour faire passer d'un textbox à un autre avec une instruction Keypress dans un module de Classe. Mon but était de pouvoir passer directement au bouton "valider" quand je n'ai pas besoin de remplir les autres textbox.

Merci encore.

A une autre fois.
 

Dranreb

XLDnaute Barbatruc
Re : affecter une macro à une touche clavier

Bonjour.
Dans ce cas, à mon avis, il aurait mieux valu garder les dispositions par défauut: la touche Tab pour changer de champ, et la touche Entrée pour exécuter le bouton par défaut (qui a dans la fenêtre de propriétés sa propriété Défault à True)
Cordialement.
 

mikeo

XLDnaute Occasionnel
Re : affecter une macro à une touche clavier

Bonjour Dranreb, Mj13, M. Forum

Ceci est du bonus, mais c'est juste pour apprendre. Par exemple, dans la suggestion de Dranreb ou MJ13, si j'ai une dizaine de textbox (champs), je dois taper 10 fois sur Tab ou Enter pour arriver au bouton Valider. Ce que je ne veux pas faire. (Dans la solution de MJ13, je crois que enter ou tab a la même fonction).

Je veux juste saisir la textbox1 puis valider l'ensemble avec une touche (1 fois), sans utiliser la souris qui me fait déplacer ma main à la souris et la faire revenir au clavier. Cela n'empêche pas d'utiliser tab ou enter quand je veux passer normalement d'un textbox à un autre.

Dans ce cas, la solution de Philippe, bien qu'en passant par un tour de passe-passe, permet de résoudre mon problème : par exemple la touche * dans un textbox valide ma saisie. Maintenant, pour le faire sur tous les texbox, je crois qu'il faut que je passe par un module de classe.
 

mikeo

XLDnaute Occasionnel
Re : affecter une macro à une touche clavier

Re,

Oh là la, Dranreb, je crois que je me suis fais mal comprendre et on tourne en rond. Voilà tout ce que j'ai dit depuis le début :

En situation normale, quand on tape la touche enter, on passe au textbox suivant. Tu es d'accord jusque là ? Quand il y en a 10 tu dois taper 10 fois pour arriver au bouton valider qui permet de passer à l'enregistrement suivant. Ca c'est la fonction normale de enter et je n'ai pas de problème avec. Je n'ai pas détourné sa fonction.

Ce que je voulais faire c'est que en validant le 1er textbox, je puisse passer directement à l'enregistrement suivant, sans visiter tous les textbox. Je peux cliquer aussi avec la souris sur le bouton valider et le problème est réglé. Mais je ne voulais quitter ma main du clavier car j'ai une série de chiffres à saisir à la chaîne. C'est pour cela que je cherchais une astuce. Si je trouve c'est mieux, sinon je ne me plains pas.

En tout cas j'apprécie beaucoup ce que tu fais pour le forum.

Mikeo
 

Dranreb

XLDnaute Barbatruc
Re : affecter une macro à une touche clavier

En situation normale, quand on tape la touche enter, on passe au textbox suivant. Tu es d'accord jusque là ?
Non. Ça active le bouton par défaut.
Default, propriété


Désigne le bouton de commande par défaut d'une feuille.

Syntaxe

object.Default [= Boolean]

La syntaxe de la propriété Default comprend les éléments suivants :

Élément Description
object Objet valide.
Boolean Facultatif. Spécifie si le bouton de commande est celui par défaut.


Valeurs

Les valeurs de Boolean sont les suivantes :

Valeur Description
True Le CommandButton est le bouton par défaut.
False Le CommandButton n'est pas le bouton par défaut (par défaut).


Remarques

Un CommandButton ou un objet agissant comme tel peut être désigné comme bouton de commande par défaut. Un seul objet d'une feuille peut être le bouton, de commande par défaut. L'affectation de la valeur True la propriété Default pour un objet positionne automatiquement celle-ci sur False pour tous les autres objets d'une feuille.

Pour sélectionner le bouton de commande par défaut d'une feuille active, l'utilisateur peut cliquer sur le bouton ou appuyer sur ENTRÉE si aucun autre CommandButton n'a le focus. Appuyer sur ENTRÉE lorsqu'aucun autre CommandButton n'a le focus déclenche également l'événement KeyUp pour le bouton de commande par défaut.

Default est disponible pour les contrôles Conteneur OLE (uniquement Windows) dont l'action est absolument similaire à celle des contrôles CommandButton.

Conseil Vous devez envisager de faire en sorte que le bouton Annuler soit celui par défaut dans les feuilles gérant des opérations qui ne peuvent être annulées (tel que supprimer). Pour ce faire, affectez la valeur True définissez à la fois à la propriété Default et la propriété Cancel.
 

Discussions similaires

Statistiques des forums

Discussions
312 333
Messages
2 087 371
Membres
103 528
dernier inscrit
maro