XL 2016 Son et Msgbox avec condition dans une colonne

Pablo2020

XLDnaute Nouveau
Bonjour tout le monde,

J'ai un petit soucis avec une macro pour émettre un son.
Dans mon fichier ( en attachement ) , lorsque dans la colonne H , il apparait dans une cellule "OUI", ca émet un son.
Le soucis que j'ai, c'est que le son ne se joue que si je fais un double click dans la cellule H et que j'appuie sur la touche Enter
Or, ce que j'aimerais, c'est que dès que le "OUI" apparait, le son se joue.

En parallèle, je voulais que si "OUI" apparait, un msgbox apparait avec un simple texte "bla bla bla"
Mais la, j'avoue que je galère aussi car j'ai essayé plein de trucs mais j'ai le même soucis qu'avec le "OUI" et le fait d'appuyer sur Enter.

Je vous remercie pour votre aide qui me sera précieuse.
 

Pièces jointes

  • test neutre.xlsm
    370 KB · Affichages: 12

Pablo2020

XLDnaute Nouveau
Bonjour D.D.

Merci pour ta réponse mais cela ne fonctionne pas ... enfin, si j'ai bien compris que je devais remplacer par ton bout de code.

Ceci dit, même si cela fonctionnait, je perds mon "case" pour prévoir plusieurs plusieurs cas dans la colonne H.

Bien à toi,
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Vous ne changez jamais la cellule en H puisque sa valeur est déterminée par une formule qui ne change pas !
Tout en testant bien la valeur de la H, il semble que ce soit plutôt un changement de la Target en F qu'il faille détecter.
 
Dernière édition:

D.D.

XLDnaute Impliqué
Bonjour D.D.

Merci pour ta réponse mais cela ne fonctionne pas ... enfin, si j'ai bien compris que je devais remplacer par ton bout de code.

Ceci dit, même si cela fonctionnait, je perds mon "case" pour prévoir plusieurs plusieurs cas dans la colonne H.

Bien à toi,
Hello,

Le code est effectivement très simplifié mais fonctionne chez moi.
Si je change quelque chose en G, qui influencera le résultat de H, alors j'ai un son + msgbox si la cellule correspondante en H est "Oui".
Après, j'avoue ne pas avoir pris en compte les Cases parce que je n'ai pas compris comment ils fonctionnait (à aucun moment H peut prendre la valeur "completed" ou "not completed").
 

Dranreb

XLDnaute Barbatruc
En tout cas dans une Sub Worksheet_Change ne vérifiez pas si Target fait partie d'une plage ne contenant que des formules. À moins qu'une d'elles y soit revalidée, ce ne sera jamais vrai si elle aura seulement changé de valeur.
 

D.D.

XLDnaute Impliqué
Il faut donc testez si la cellule qui a changée fait partie des antcédents constants, directs et indirects de la formule.


Désolée, je ne vois pas trop ou est le problème par rapport au code que j'ai écrit....
Dans ce que j'ai vu les formules de la colonne H étaient dépendante d'une modification manuelle des cellules de la colonne G.
Mais peut être faut-il remonter un peu à la source...

@Pablo2020 Qui ou quoi fait changer le résultat dans H ? Une action manuelle (ailleurs dans la feuille) en est-elle la cause ?
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour tous ; Slt Bernard
Oui j'ai remarqué une erreur de "Target" il faut que ce soit G
Sinon ci joint un essai que j'ai repris d'un de mes fichiers (très vieux) mais qui fonctionne
c'est la meilleure solution que j'av ais eu à l'époque , j'avais même créé mes wav parlant via un logiciel
Le principe :
créer un répertoire des sons (WAV) ajouter ceux que l'on désire dedans : ce rep doit être dans le même que le fichier .xlsm
Ne pas oublier de déclarer la fonction du sound play

PS : pour les tests j'ai supprimé quelques formules en G mettre une valeur à la main
 

Pièces jointes

  • Play wav.zip
    598.5 KB · Affichages: 13

Pablo2020

XLDnaute Nouveau
Merci à tous pour votre aide et vos idées/suggestions.

Pour être plus précis sur l'utilisation de mon fichier, la valeur qui est en F est introduite par un scanner avec saut à la ligne automatique.
Donc, par exemple, je suis en H9 , je scan et je passe à la ligne H10 , je scan et je passe à H11 ... ainsi de suite.
Tout ce qui est dans la colonne G et H son en fonction de ce qui est scanné dans la colonne H
 

Dranreb

XLDnaute Barbatruc
Incompréhensibles vos explications. Dans votre classeur joint la colonne H ne contenait pas de constante pouvant résulter d'un scan, mais une formule en fonction de laquelle vous vouliez émettre un son.
Si c'est toujours comme ça, je vous propose ça, avec une petite fonction récursive :
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim CelH As Range
   Set CelH = CelluleImpactée(Dans:=[H:H], Par:=Target)
   If CelH Is Nothing Then Exit Sub
   Select Case CelH.Value
      Case "Completed": PlayTheSound "chimes.wav"
      Case "Not Completed": PlayTheSound "chord.wav"
      Case "OUI": PlayTheSound "tada.wav"
      End Select
   End Sub
Private Function CelluleImpactée(ByVal Dans As Range, ByVal Par As Range) As Range
   Dim Cel As Range, DirDep As Range
   On Error Resume Next
   Set DirDep = Par.DirectDependents: If Err Then Exit Function
   On Error GoTo 0
   For Each Cel In DirDep
      Set CelluleImpactée = Intersect(Cel, Dans)
      If CelluleImpactée Is Nothing Then Set CelluleImpactée = CelluleImpactée(Dans, Cel)
      If Not CelluleImpactée Is Nothing Then Exit Function
      Next Cel
   End Function
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
D'ailleurs je viens de voir qu'il n'est pas nécessaire que la function soit récursive puisqu'un Range a aussi une propriété Dependents qui inclut, semble-t-il les dépendants indirects.
VB:
Private Function CelluleImpactée(ByVal Dans As Range, ByVal Par As Range) As Range
   Dim Cel As Range, Depdts As Range
   On Error Resume Next
   Set Depdts = Par.Dependents: If Err Then Exit Function
   On Error GoTo 0
   For Each Cel In Depdts
      Set CelluleImpactée = Intersect(Cel, Dans)
      If Not CelluleImpactée Is Nothing Then Exit Function
      Next Cel
   End Function
 

Discussions similaires

Réponses
21
Affichages
1 K

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou