Beep stressant à chaque 0

new morning

XLDnaute Nouveau
Bonjour,

Je voudrait créer une feuille permettant de rentrer toute une colonne de 1 et de 0 selon que la réponse donnée est juste ou fausse. Comment faire pour que 2 sons distincts soient utilisés à chaque entrée clavier ?

L'idée est que 1 donne "Son_Doux" et que 0 donne "Buzz_Desagreable" sur toute la colonne, au fur et à mesure de la saisie, sur toute la hauteur de la colonne, sans avoir à cliquer sur un bouton.

J'imagine qu'une procédure évènementielle sur la touche "Entrée" pourrait faire l'affaire, avec les codes de son que j'ai trouvé ici et là, mais je ne sais pas vraiment le faire, et encore moins comment l'appliquer à toute la colonne.

Quelqu'un accepterait-il de m'aider ?

Merci :)
 
G

Guest

Guest
Re : Beep stressant à chaque 0

Bonjour New Morning,

Une solution serait d'appeler la macro idoine sur l'évènement change de la feuille qui contient la colonne où sont entrés les 0 et 1.

voici un code où AppelSon est le nom d'une macro qui lance les sons suivant la valeur de la cellule. Macro que tu a déjà trouvée si j'ai bien compris ton message.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    ' Si la colonne n'est pas la première on sort
    If Target.Column() <> 1 Then Exit Sub
 
    If Target=0 Or Target=1 then Call [COLOR=darkolivegreen]AppelSon[/COLOR](Target)    
End Sub

Est-ce que cela convient?

A bientôt
 

new morning

XLDnaute Nouveau
Re : Beep stressant à chaque 0

Merci :)

Ca ressemble tout a fait à ce que je cherche.

Pour bien faire, je voudrait différencier le 1 du 0 et leur attribuer deux sons différents avec la méthode ci-dessous récupérée ici. Par contre, je suis débutant et je ne sais pas vraiment comment intégrer ce code à ta solution...

Code:
Option Explicit
 
Private Declare Function Beep& Lib "Kernel32" (ByVal Fq&, ByVal Tm&)
 
Sub JouerSon()     'A adapter... (faire des tests)
'Beep tonalité, durée
    Beep 500, 500
    Beep 550, 100
    Beep 625, 100
    Beep 675, 100
    Beep 750, 100
    Beep 850, 100
End Sub
 
G

Guest

Guest
Re : Beep stressant à chaque 0

Re,

Cela pourrait ressembler à ceci:

Dans le module de la feuille:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    ' Si la colonne n'est pas la première on sort
    If Target.Column() <> 1 Then Exit Sub
 
    If Target=0 Or Target=1 then Call [COLOR=darkolivegreen]Jouer[/COLOR](Target.Value)    
End Sub

Dans un module public:
Code:
Private Declare Function Beep& Lib "Kernel32" (ByVal Fq&, ByVal Tm&)
 
Sub JouerSon(ModeSon As Byte)
    Const Doux As Byte = 1
    If ModeSon = Doux Then
        Beep 500, 500
        Beep 550, 100
        Beep 625, 100
        Beep 675, 100
        Beep 750, 100
        Beep 850, 100
    Else
        Beep 750, 50
        Beep 750, 50
        Beep 850, 50
        Beep 1000, 50
    End If
End Sub

A toi d'adapter les son pour qu'il devienne doux ou désagréable

A bientôt
 

new morning

XLDnaute Nouveau
Re : Beep stressant à chaque 0

JCGL : c'est exactement ça, même si je ne comprend pas bien comment ça marche : en macro, je ne vois pas où est fait le test 1 ou 0... mais ça marche :)

Hasco : je ne comprend pas comment on fait un module "public", d'ailleurs je ne sais pas vraiment pourquoi il faudrait les différencier... :confused: Sans doutes ais-je trop de lacunes pour ces finesses :eek:
 

chris

XLDnaute Barbatruc
Re : Beep stressant à chaque 0

Bonjour
Un module Public est un module non attaché à un objet (classeur,feuille ou autre) : quand tu enregistres une macro avec l'enregistreur, Excel te crée Module1.
Si tu veux taper du code, il faut dans l'environnement VBE utiliser le menu insertion Module.
Pour le module de feuille if faut sélectionner la feuille dans VBE : elles sont affichées à gauche et il faut double cliquer dessus puis taper le code à droite.

La ligne
If Target=0 Or Target=1 then Call Jouer(Target.Value)
invoque la procédure jouant le son si la valeur saisie est 0 ou 1 et lui transmet cette valeur.

La ligne
Sub JouerSon(ModeSon As Byte)

récupère cette valeur et
Const Doux As Byte = 1
Considère que Doux correspond à 1
 
Dernière édition:

new morning

XLDnaute Nouveau
Re : Beep stressant à chaque 0

Merci pour ces explications Chris ! Grâce à toi j'ai mieux compris où était "caché" le test du doc de JCGL.

Par contre, je n'ai pas su faire tourner le code de Hasco, faute de comprendre ce que me voulait le deboguer : "Sub ou Fonction non définie". J'ai cru qu'il fallait ajouter "option explicit" devant mais ça n'a pas suffit :(
 

JCGL

XLDnaute Barbatruc
Re : Beep stressant à chaque 0

Bonjour à tous,

Rajoute Son à Call Jouer pour avoir :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    ' Si la colonne n'est pas la première on sort
    If Target.Column() <> 1 Then Exit Sub
 
    If Target=0 Or Target=1 then Call [COLOR=darkolivegreen]JouerSon[/COLOR](Target.Value)    
End Sub

A+
 
Dernière édition:
G

Guest

Guest
Re : Beep stressant à chaque 0

Bonjour New Morning,
Bonjour à toutes et tous,
Bonjour JC:)

Heureusement que l'oeil averti de JC a détécté mon erreur.
Effectivement, il faut appeler la macro par Call JouerSon(Target.Value)

bonne journée.
 

new morning

XLDnaute Nouveau
Re : Beep stressant à chaque 0

Ben voila, c'était que ça ! Je voyais bien une histoire de variable mais n'ayant pas l'habitude du code je me perds vite... Me reste plus qu'à trouver un gros son de buzz bien méchant pour remplacer ces mélodies gentillettes, et ce sera parfait :D

Merci à tous ;)
 

Statistiques des forums

Discussions
312 185
Messages
2 086 010
Membres
103 090
dernier inscrit
Createlier