[Excel - VBA] Déclencher un son quand un seuil est atteint

Déclencher un son quand un seuil est atteint [Excel - VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 24-08-2006 à 18:04:56    

Bonjour,
 
Je débute avec les macros Excel, et je suis confronté à un problème :
 
J'ai une feuille de données qui se remplit par des mesures en provenance d'un module d'acquisition et je veux pouvoir surveiller une cellule pour déclencher un signal sonore quand un seuil critique est atteint.
 
La fonction marche très bien quand je saisi manuellement une valeur dans la cellule mais elle ne fonctionne plus quand la valeur est insérée automatiquement par le biais d'une formule.
 
Une idée ??
 
Voici la fonction :
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A6" )) Is Nothing Then
If Target > 0.444 Then                          'Si la valeur que je surveille (A6) est supérieure à 0,44....
ActiveSheet.Shapes("Object 7" ).Select     'On exécute le son "Object 7"
Selection.Verb Verb:=xlPrimary
Else
Target.Interior.ColorIndex = 9                  'Sinon je colore la case...
End If
End If
End Sub
 
 
Merci de votre aide ;-)

Reply

Marsh Posté le 24-08-2006 à 18:04:56   

Reply

Marsh Posté le 24-08-2006 à 19:18:03    

Bonjour
Utilise (peut-être) l'évènement Calculate.
C'est quoi ce module d'acquisition ? Comment se passe concrètement le nourrissage du tableau ? (requête périodique, lien externe...)
A+


Message édité par galopin01 le 24-08-2006 à 19:19:08
Reply

Marsh Posté le 25-08-2006 à 12:30:36    

Bonjour,
 
Merci de ton aide, je vais me documenter un peu plus sur cet évènement. Il permettrait de "recalculer" ou regénérer la feuille de calcul si j'ai bien compris ? ça permettrait alors de prendre en compte les modifications effectuées par le biais d'une formule ?
 
Je pense que la macro ne voit pas qu'il y a eu une modification car elle n'est pas saisie manuellement, et l'execution automatique de celle ci n'a donc pas lieu.
 
En ce qui concerne le module, c'est une acquisition de différentes choses telles que : température, poids... sur des machines. C'est ensuite un logiciel fournit avec le module d'aacquisition qui envoie les données à Excel.

Reply

Marsh Posté le 25-08-2006 à 15:06:37    

Je ne savais pas qu'un logiciel pouvait "envoyer directement des données" à Excel.
Si c'est Excel qui va les lire (dans un fichier tampon)  Calculate marchera , mais dans ce cas particulier je ne sais pas.
pour utiliser Calculate il suffit de remplacer :
 
Private Sub Worksheet_Change(ByVal Target As Range)
par :
Private Sub Worksheet_Calculate()
A+


Message édité par galopin01 le 25-08-2006 à 15:09:17
Reply

Marsh Posté le 06-09-2006 à 12:57:01    

Salut galopin,
 
Merci de ton aide, je suis de retour de vacances alors je n'ai pas beaucoup donné signe de vie entre temps, mais j'ai fini par trouver la solution, je la poste si ça peut rendre service à quelqu'un !
 
Option Explicit  
Private Declare Function PlaySound Lib "winmm.dll" _  
                Alias "PlaySoundA" ( _  
                ByVal lpszName As String, _  
                ByVal hModule As Long, _  
                ByVal dwFlags As Long) As Long  
 
Private Sub Play()  
       PlaySound "c:\temp\chimes.wav", 0&, &H1  
End Sub  
 
Private Sub Worksheet_Calculate()  
        If [A1].Value > [B1].Value Then Play  
End Sub  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
    On Error Resume Next  
    If (Target = [A1]) Then  
        If [A1].Value > [B1].Value Then Play  
    End If  
End Sub

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed