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

Messages postés
5
Date d'inscription
lundi 29 mars 2010
Statut
Membre
Dernière intervention
4 mai 2010
- - Dernière réponse : PCPT
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
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
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
25792
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 juin 2019
312
3
Merci
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,

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 140 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
Messages postés
25792
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 juin 2019
312
3
Merci
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,

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 140 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
Messages postés
5
Date d'inscription
lundi 29 mars 2010
Statut
Membre
Dernière intervention
4 mai 2010
0
Merci
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
Commenter la réponse de spikevba
Messages postés
5
Date d'inscription
lundi 29 mars 2010
Statut
Membre
Dernière intervention
4 mai 2010
0
Merci
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
Commenter la réponse de spikevba
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
23
0
Merci
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]
Commenter la réponse de PCPT