Microsoft 365 Associer un son à une recherchev

Eric Dé

XLDnaute Occasionnel
Bonjour le Forum,

Je dois scanner toute une série de numéros qui font partie ou non d'une liste.
Au moyen d'une recherchev, je vérifie si le numéro scanné fait partie ou non de la liste.
S'il en fait partie, je souhaiterais associer un son afin de ne pas systématiquement devoir regarder sur le PC pour vérifier visuellement.

Seriez-vous en mesure de m'aider ?
Je vous joins un fichier pour exemple.

Merci d'avance !
Éric
 

Pièces jointes

  • Test son.xlsm
    12.9 KB · Affichages: 8

Cousinhub

XLDnaute Barbatruc
Bonsoir,
Deux solutions dans le fichier joint
- Soit un mot prédéfini dans une cellule, et lu lors de la concordance (option qui impose une petite latence)
- Soit un beep, si concordance
Bonne découverte
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plg As Range, C As Range
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 And Target.Row > 8 Then
    Set Plg = Range("G9:G17")
    Set C = Plg.Find(Target, LookAt:=xlWhole)
    If Not C Is Nothing Then Range("K1").Speak 'option 1 mais qui impose une latence
'    If Not C Is Nothing Then Beep 'autre option plus "véloce"...
End If
End Sub
 

Pièces jointes

  • Copie de Test son.xlsm
    18.5 KB · Affichages: 4

fanch55

XLDnaute Barbatruc
Bonjour à tous ,
Code à mettre dans la feuille :
VB:
Private Declare PtrSafe Function BeepApi Lib "kernel32" Alias "Beep" _
    (ByVal Frequence As Long, ByVal Duree As Long) As Long
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case True
    Case Target.Count > 1
    Case Not Intersect(Target, Range("A9:A22")) Is Nothing
        Target.Offset(, 1).Calculate
        If Target.Offset(, 1) > 0 Then
            BeepApi 400, 300
            BeepApi 600, 200
            BeepApi 400, 300
        End If
    End Select

End Sub
 

Cousinhub

XLDnaute Barbatruc
Bonjour @bhbh
Edit Bonjour @fanch55

Sauf erreur de ma part je ne pense pas que le changement d'une formule soit détecté par Worksheet_Change mais par Calculate ;) comme la fait Fanch55 ou mon post 2

@Phil69970
Bonsoir,
J'utilise "Change", car lors du scan, la valeur est insérée dans la colonne 1 (du moins, si j'ai bien compris...)
Edit, tout comme Fanch, d'ailleurs
Mais je n'utilise pas la formule, je teste la présence du "scan" dans la plage définie
 

fanch55

XLDnaute Barbatruc
L'idée de @bhbh pour le speak est intéressante ( je l'avais oubliée cette option )
VB:
Private Declare PtrSafe Function BeepApi Lib "kernel32" Alias "Beep" _
    (ByVal Frequence As Long, ByVal Duree As Long) As Long
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case True
    Case Target.Count > 1
    Case Not Intersect(Target, Range("A9:A22")) Is Nothing
        Target.Offset(, 1).Calculate
        If Target.Offset(, 1) > 0 Then
            BeepApi 400, 300
            BeepApi Target / 3, 200
            BeepApi 400, 300
            Target.Offset(, 1).Speak  ' @bhbh idea
        End If
    End Select

End Sub
 

Discussions similaires

Réponses
16
Affichages
2 K

Statistiques des forums

Discussions
312 294
Messages
2 086 878
Membres
103 403
dernier inscrit
Kesb75