Son lors d'un changement de valeur d'une cellule

Bonjour à tous,

Je souhaite obtenir un son (discret, genre un "plop"!) lors du changement de valeur dans une cellule excel, quelqu'un a déjà essayé ?

Merci.

RE

Si c'est à la saisie c'est faisable si c'est par calcul, non faisable

Merci pour ta réponse, l'idée c'est d'avoir un son au changement de valeur dans une cellule (cellule qui est mise à jour en fonction d'autres cellules).

exemple :

1 plage définie A2:B6

Si je modifie une des valeurs dans cette plage, je voudrais un beep

En réalité mon application est plus compliquée mais c'est l'idée.

J'imagine qu'avec une macro qui se lance au changement de cellule c'est possible.

RE

Le changement de valeur résultant d'un calcul n'est pas un événement donc non détectable

On peut réagir à chaque changement d'une cellule de la plage A2:B6 mais sauf à avoir inscrit la valeur précédente de la cellule dans une cellule...

Bonjour,

2 exemples à adapter pour la modification d'une cellule (pas recalculée comme précisé par 78chris).

Cdlt.

11olivier44fr.xlsm (19.14 Ko)
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("A2:B6")) Is Nothing And Target.Count = 1 Then
        VBA.Beep
    End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("A2:B6")) Is Nothing And Target.Count = 1 Then
        Application.Speech.Speak "La cellule " & Target.Address(0, 0) & " a été modifiée."
    End If
End Sub

Bonjour et Merci à vous deux,

OK, pour les exemples.

Je vais essayer de m'accrocher un peu (pas beaucoup, promis )

si :

Je met dans A1 la formule "=somme(A2:B6)".

B1 est vide

La macro test A1=B1 et emet un beep si ce n'est pas le cas.

La macro rempli B1 avec A1.

Fin de la macro

Pensez-vous que cela fonctionnerait ?

Re,

Auto réponse :

Je ne sais pas si c'est très propre mais ça fait ce que je veux :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i, j As Integer
i = Range("TEST1").Value
j = Range("TEST2").Value
If i <> j Then
VBA.Beep
End If
Range("TEST2").Value = Range("TEST1").Value
End Sub

Edit : en fait j'ai un problème de position de curseur en fin de macro ...

à voir ensuite si tu veux faire varier l'intensité et la durée du bip

Oui, je voudrais un son plus "doux" que le beep windows

beep(fréquence en hertz, durée en millisecondes)

150 ou 200 millisecondes devraient aller.

Ci-dessous, tableau des fréquences des notes dans 2 octaves différents.

Do 262 523

Do dièse 277 554

Ré 294 587

Ré dièse 311 622

Mi 330 659

Fa 349 698,5

Fa dièse 370 740

Sol 392 784

Sol dièse415 831

La 440 880

La dièse 466 932

Si 494 988

Declare PtrSafe Function Beep Lib "kernel32" (ByVal Frequence As Long, ByVal Duree As Long) As Long
Sub test()
Call Beep(440, 450)
End Sub

à mettre dans un module

Bonjour,

@JoyeuxNoël,

Nécessite la fonction de beep de l’API Window et une carte son

Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Cdlt.

! pas vu ta réponse.

Yes Jean Eric, j'avais zappé ça, je l'ai remis juste avant du coup

edit : et obligation du Ptrsafe pour que ça fonctionne en 32 bits et en 64 bits, non?

Sinon, il y a aussi moyen de faire ça. Mais à chaque changement de cellule, ça risque d'être un peu pénible à la longue.

Par avance désolé pour le fichier non terminé, c'est encore en travaux

22jouer-musique.xlsm (38.40 Ko)
Rechercher des sujets similaires à "lors changement valeur"