[déplacé VB6 -> VBA] Création d'une fonction Quizz en VBA

Résolu
spikevba Messages postés 5 Date d'inscription lundi 29 mars 2010 Statut Membre Dernière intervention 4 mai 2010 - 29 mars 2010 à 23:00
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 5 avril 2010 à 19:37
Bonjour,

Je suis débutant en VBA, et je cherche a créer une fonction quizz en VBA.
Le but de mon post et de savoir vers quels fonctions m'orienter pour récupérer la saisi du Chiffre 1, 2,3... au clavier (le chiffre 1 correspond à mon joueur 1 etc...).
J'ai vu que la fonction KeyPress pouvait me servir mais je ne comprend pas bien la syntaxe ! Ou existe t'il une fonction plus adapter a mon besoin car je n'ai rien trouvé sur le net ! Merci

5 réponses

jordane45 Messages postés 37725 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 septembre 2023 342
1 avril 2010 à 17:40
Bonjour,

Pour l'instant je n'ai pas encore vraiment saisi ce que tu désirais faire pour un Quizz?? ...

Si tu désires détecter l'appuie sur les touches du clavier, tu disposes en effet de différentes instructiions (Keypress, OnKey ...).*
(tu trouveras quelques exemples à cette adresse :
ICI

Je pense qu'en cherchant également sur VBFRANCE, tu pourras trouver ton bonheur (Des exmemples et des explications).
Tu peux aussi jeter un oeil surce site

Bonne continuation.

Cordialement,
Jordane,
3
jordane45 Messages postés 37725 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 septembre 2023 342
5 avril 2010 à 10:34
bonjour,

d'apres ce que j'ai pu voir, le Onkey ne fonctionne qu'avec des 'string' et ne peut pas être utilisé avec les caractères numériques.


dans l'immédiat, je te propose d'utiliser la touche 'entrer' de ton clavier numérique pour ton joueur 1 et la touche w pour le joueur 2 (par exemple^^ )

'code à placer dans un module
'----------------------------
Sub init_touches()
' il faut lancer ce code avant le reste pour initialiser
' la touche 0
Application.OnKey Key:="{enter}", procedure:="quizz1"
Application.OnKey Key:="w", procedure:="quizz2"
End Sub

Sub quizz1()
' si la touche 0 est parametrée, à son appuie je viens ici1
MsgBox "joueur 1 à buzzer en premier"
End Sub


Sub quizz2()
' si la touche 0 est parametrée, à son appuie je viens ici1
MsgBox "joueur 2 à buzzer en premier"
End Sub

Sub zero_normal()
'code permettant de revenir à la normal
Application.OnKey Key:="w"
Application.OnKey Key:="{enter}"
End Sub




A l'occasion si je trouves un moyen d'utiliser le '0', je te préviendrais.


Cordialement,
Jordane,
3
spikevba Messages postés 5 Date d'inscription lundi 29 mars 2010 Statut Membre Dernière intervention 4 mai 2010
4 avril 2010 à 00:06
Merci Jordane,

Tu me permet d'y voir un peu plus clair!
En fait je veux faire un buzzer pour réaliser un quizz dans le genre de question pour un champion le premier qui appui sur son buzzer voit son nom à l'écran.
J'ai donc écrit un code pour un joueur qui s'appelle "toto" et a qui la touche zero du pavé numérique est attribué.
Je n'arrive pas a faire fonctionner ce code bien inspiré de ta réponse().J'obtiens une erreur '1004'


Sub changer_zero()
Application.OnKey Key:="48", procedure:="quizz"
End Sub


Sub quizz()
MsgBox "joueur toto à buzzer en premier"
End Sub



Sub zero_normal()
Application.OnKey Key:="48"
End Sub

J'espère que je suis plus un peu plus clair dans ma formulation!
Cordialement
Spike
0
spikevba Messages postés 5 Date d'inscription lundi 29 mars 2010 Statut Membre Dernière intervention 4 mai 2010
5 avril 2010 à 19:20
Bonjour,

Bon ben je te dois un grand "MERCI" car grâce à toi j'ai réussi à faire ma fonction quizz.
J'ai légèrement modifier mon cahier des charges (j'utilise les lettres du clavier au lieux des chiffres) mais au final le résultat est le même.
J'ai même crée la fonction pour 8 joueurs:


Sub init_touches()
' il faut lancer ce code avant le reste pour initialiser
' la touche 0
Application.OnKey Key:="q", procedure:="quizz1"
Application.OnKey Key:="s", procedure:="quizz2"
Application.OnKey Key:="d", procedure:="quizz3"
Application.OnKey Key:="f", procedure:="quizz4"
Application.OnKey Key:="g", procedure:="quizz5"
Application.OnKey Key:="h", procedure:="quizz6"
Application.OnKey Key:="j", procedure:="quizz7"
Application.OnKey Key:="k", procedure:="quizz8"
End Sub

Sub quizz1()
' si la touche 0 est parametrée, à son appuie je viens ici1
MsgBox "joueur 1 à buzzer en premier"
End Sub
Sub quizz2()
' si la touche 0 est parametrée, à son appuie je viens ici1
MsgBox "joueur 2 à buzzer en premier"
End Sub
Sub quizz3()
' si la touche 0 est parametrée, à son appuie je viens ici1
MsgBox "joueur 3 à buzzer en premier"
End Sub
Sub quizz4()
' si la touche 0 est parametrée, à son appuie je viens ici1
MsgBox "joueur 4 à buzzer en premier"
End Sub

Sub quizz5()
' si la touche 0 est parametrée, à son appuie je viens ici1
MsgBox "joueur 5 à buzzer en premier"
End Sub
Sub quizz6()
' si la touche 0 est parametrée, à son appuie je viens ici1
MsgBox "joueur 6 à buzzer en premier"
End Sub
Sub quizz7()
' si la touche 0 est parametrée, à son appuie je viens ici1
MsgBox "joueur 7 à buzzer en premier"
End Sub
Sub quizz8()
' si la touche 0 est parametrée, à son appuie je viens ici1
MsgBox "joueur 8 à buzzer en premier"
End Sub
Sub zero_normal()
'code permettant de revenir à la normal
Application.OnKey Key:="q"
Application.OnKey Key:="s"
Application.OnKey Key:="d"
Application.OnKey Key:="f"
Application.OnKey Key:="g"
Application.OnKey Key:="h"
Application.OnKey Key:="j"
Application.OnKey Key:="k"
End Sub

Cordialement
spikevba
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 48
5 avril 2010 à 19:37
salut,

ou tout çà factorisé :

private const cKeys as string = "k s d f g h j k"
Sub init_touches()
  'il faut lancer ce code avant le reste pour initialiser la touche 0
  dim i%, k() as string
  k=split(ckeys," ")
  for i=1 to 8
    Application.OnKey Key:=k(i-1), procedure:="quizz(" & i & ")"
  next i
End Sub

Sub quizz(byval iPlayer as integer)
  'si la touche 0 est parametrée, à son appuie je viens ici
  MsgBox "joueur " & cstr(iplayer) & " a buzzé en premier"
End Sub

Sub zero_normal()
  'code permettant de revenir à la normal
  dim i%, k() as string
  k=split(ckeys," ")
  for i=0 to 7
    Application.OnKey Key:=k(i)
  next i
End Sub 


++
[hr]
0
Rejoignez-nous