Boucle qui teste une cellule et joue un son quand celle ci .....

dannplr Messages postés 7 Date d'inscription samedi 15 février 2014 Statut Membre Dernière intervention 9 mars 2014 - Modifié par Whismeril le 25/02/2014 à 22:49
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 26 févr. 2014 à 09:44
Bonjour,
voici la macro que j'ai actuellement et qui marchouille ! :):

sub timer()
application.ontime now + timevalue("00:00:01"), "jouer_son"
end sub

private sub jouer_son()
if range("horloge!c3").value = 1 then
chemein = activeworkbook.path
leson = chemin & "\tada.wav"
call playsound(leson, 0&, snd_async or snd_filename
end if
timer
end sub


le but de tout ça, est de vérifier l'état de c3 mais en décalant la boucle de 500 milisecondes pour être sûr de tomber sur ce créneau où c3 passe à 1 que pendant 1 seconde, et de jouer un son.
le soucis que j'ai:
pour être sur de ne pas rater ce créneau de 1s ,j'ai du le passer à 2s( si jamais ma boucle se trouve synchronisée avec l'horloge, je rate le coche)
Maintenant, il arrive que le son joue 2 fois parfois.

Dans le pire des cas, si aucune solution n est simple, y a t'il une commande pour lire le son jusqu'à la fin de ce dernier et une seule fois en sachant que l'alarme suivante arrive 3 minutes après ?

merci

3 réponses

Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
25 févr. 2014 à 22:48
Bonjour, il semble que ta macro soit codée en VBA.
Il ne s'agit donc pas d'un projet VB.Net.
Je déplace le sujet.

Un autre point merci d'utiliser la coloration syntaxique
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code .
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
26 févr. 2014 à 00:10
Bonsoir,

Si le but est de surveiller ta cellule C3 ... pourquoi ne pas utiliser la méthode Change de ta feuille ?

http://msdn.microsoft.com/en-us/library/office/ff839775.aspx

Private Sub Worksheet_Change(ByVal Target As Range)
  Debug.Print Target.Address
  If Target.Address = "$C$3" Then
     If Target.Value = 1 Then MsgBox "je joue du piano debout...^^"
  End If
End Sub



0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 26/02/2014 à 06:17
Bonjour,
As-tu une formule en C3 ?
Car si oui : l'évènement change doit concerner non la cellule C3, mais la cellule XX dont la modification génère celle de C3. Si la cellulle XX a elle-même une formule, il faudra considérer la modification de la cellule YY dont elle dépend, etc .... En bref : utiliser l'évènement Change concernant la toute première cellule sans formule générant un résultat par la formule située en C3. Ou alors utiliser l'évènement Calculate, qui serait toutefois très pénalisant si les recalculs concernent également d'autres cellules que celles directement liées à ton problème.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 févr. 2014 à 06:20
Il est par ailleurs déconseillé de nommer Timer une macro. Timer est une fonction VBA.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
26 févr. 2014 à 09:44
As-tu une formule en C3 ?
Car si oui : l'évènement change doit concerner non la cellule C3, mais la cellule XX
Si il passe par une formule et qu'elle n'utilise que des cellules de la même feuille alors il ne teste pas le Target mais directement la vaeur de C3
Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("C3").Value = 1 Then MsgBox "musicccc..."
End Sub


Mais pour l'instant, sans informations supplémentaires de la part du demandeur sur le fonctionnement de son fichier, on ne pourra faire que des suppositions....
0
Rejoignez-nous