Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro Excel : récupérer la saisie d'une touche clavier de l'utilisateur

4 réponses
Avatar
Jo²
Bonjour,

Sous Excel, je lance une "macro" qui doit permettre de modifier en masse le
contenu de certaines cellules. Cette macro lit les informations, en extrait
automatiquement certaines et les reformates. Toutefois, dans certains cas,
la transformation ne peut être automatisée. La macro doit s'arrêter,
afficher une information à l'écran et attendre que l'utilisateur appuie sur
une touche spécifique (barre d'espace pour déclencher l'action ; entrée pour
ne rien faire).

Sans être un fervent programmeur VBA, je n'ai a priori aucun problème avec
tout cela, sauf la partie où il s'agit de récupérer la saisie de
l'utilisateur :
- une boîte InputBox est un peu trop lourde dans mon cas puisqu'elle oblige
à deux manipulations (saisie et validation) ;
- j'ai regardé des choses comme GetAsyncKeyState ou onKey, mais sans
vraiment réussir à les mettre en oeuvre.

Bref, après avoir pas mal chercher sur les Forum et autre newsgroupe, j'ai
besoin d'un petit coup de main. Quelqu'un a-t-il un bout de code pour :
- la macro affiche un texte à l'écran ;
- attend que l'utilisateur frappe sur une touche ;
- récupère la touche.

D'avance merci,

GS.

4 réponses

Avatar
Youky
Bonjour,
Je pense qu'il faut faire un userform, celui ci gère la saisie des touches
et tu pourras aussi y porter des indications
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
MsgBox KeyAscii
'if KeyAscii Then.........Entrer
End Sub

Youky

"Jo²" a écrit dans le message de news:
46f0de3e$0$31887$
Bonjour,

Sous Excel, je lance une "macro" qui doit permettre de modifier en masse
le contenu de certaines cellules. Cette macro lit les informations, en
extrait automatiquement certaines et les reformates. Toutefois, dans
certains cas, la transformation ne peut être automatisée. La macro doit
s'arrêter, afficher une information à l'écran et attendre que
l'utilisateur appuie sur une touche spécifique (barre d'espace pour
déclencher l'action ; entrée pour ne rien faire).

Sans être un fervent programmeur VBA, je n'ai a priori aucun problème avec
tout cela, sauf la partie où il s'agit de récupérer la saisie de
l'utilisateur :
- une boîte InputBox est un peu trop lourde dans mon cas puisqu'elle
oblige à deux manipulations (saisie et validation) ;
- j'ai regardé des choses comme GetAsyncKeyState ou onKey, mais sans
vraiment réussir à les mettre en oeuvre.

Bref, après avoir pas mal chercher sur les Forum et autre newsgroupe, j'ai
besoin d'un petit coup de main. Quelqu'un a-t-il un bout de code pour :
- la macro affiche un texte à l'écran ;
- attend que l'utilisateur frappe sur une touche ;
- récupère la touche.

D'avance merci,

GS.




Avatar
JB
Bonjour,

http://cjoint.com/?jtmhVHYV7o

JB

On 19 sep, 10:30, "Jo²" wrote:
Bonjour,

Sous Excel, je lance une "macro" qui doit permettre de modifier en masse le
contenu de certaines cellules. Cette macro lit les informations, en extra it
automatiquement certaines et les reformates. Toutefois, dans certains cas,
la transformation ne peut être automatisée. La macro doit s'arrêter,
afficher une information à l'écran et attendre que l'utilisateur appu ie sur
une touche spécifique (barre d'espace pour déclencher l'action ; entr ée pour
ne rien faire).

Sans être un fervent programmeur VBA, je n'ai a priori aucun problème avec
tout cela, sauf la partie où il s'agit de récupérer la saisie de
l'utilisateur :
- une boîte InputBox est un peu trop lourde dans mon cas puisqu'elle ob lige
à deux manipulations (saisie et validation) ;
- j'ai regardé des choses comme GetAsyncKeyState ou onKey, mais sans
vraiment réussir à les mettre en oeuvre.

Bref, après avoir pas mal chercher sur les Forum et autre newsgroupe, j 'ai
besoin d'un petit coup de main. Quelqu'un a-t-il un bout de code pour :
- la macro affiche un texte à l'écran ;
- attend que l'utilisateur frappe sur une touche ;
- récupère la touche.

D'avance merci,

GS.


Avatar
Jo²
Bonjour Youky et merci de ton aide,

Initialement, je ne voulais pas utiliser de formulaire. Mais je crois que
c'est compliqué de faire sans.

Néanmoins, je ne suis pas suffisamment "bon" en VBA pour comprendre les
différents paramètres que tu indiques. Peux-tu préciser le sens de cette
ligne de code ?
ByVal KeyAscii As MSForms.ReturnInteger

Encore merci


"Youky" a écrit dans le message de news:
ei4YT5p%
Bonjour,
Je pense qu'il faut faire un userform, celui ci gère la saisie des touches
et tu pourras aussi y porter des indications
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
MsgBox KeyAscii
'if KeyAscii Then.........Entrer
End Sub

Youky

"Jo²" a écrit dans le message de news:
46f0de3e$0$31887$
Bonjour,

Sous Excel, je lance une "macro" qui doit permettre de modifier en masse
le contenu de certaines cellules. Cette macro lit les informations, en
extrait automatiquement certaines et les reformates. Toutefois, dans
certains cas, la transformation ne peut être automatisée. La macro doit
s'arrêter, afficher une information à l'écran et attendre que
l'utilisateur appuie sur une touche spécifique (barre d'espace pour
déclencher l'action ; entrée pour ne rien faire).

Sans être un fervent programmeur VBA, je n'ai a priori aucun problème
avec tout cela, sauf la partie où il s'agit de récupérer la saisie de
l'utilisateur :
- une boîte InputBox est un peu trop lourde dans mon cas puisqu'elle
oblige à deux manipulations (saisie et validation) ;
- j'ai regardé des choses comme GetAsyncKeyState ou onKey, mais sans
vraiment réussir à les mettre en oeuvre.

Bref, après avoir pas mal chercher sur les Forum et autre newsgroupe,
j'ai besoin d'un petit coup de main. Quelqu'un a-t-il un bout de code
pour :
- la macro affiche un texte à l'écran ;
- attend que l'utilisateur frappe sur une touche ;
- récupère la touche.

D'avance merci,

GS.








Avatar
Youky
Désolé pour mon retard,
Je ne vois pas de solution sans un userform.
Comment procéder....?
en fenetre VBA >Insertion UserForm
Double clic sur l'userform
dans la fenetre qui s'ouvre en combobox de droite choisit KeyPress
tu verras que la 1ere ligne de code se fait automatiquement et il ne te
reste plus qu'a gérer les touches que renvoie
(KeyAscii)
exemple sur touche Enter
If KeyAscii Then
'ici ce que tu veux faire
Unload UserForm1 'ou UserForm1.Hide
End If

Pour appeler l'userform la commande est
UserForm1.Show

Youky