jouer un son en fonction d'une cellule, débutant !!

mrdo

XLDnaute Nouveau
bonsoir à tous,

deux questions en réalité. :rolleyes:

j'ai créer un petit tableau de jeux pour yatsee.
mise en forme conditionnelle pour changement de couleurs en fonction des scores, sous totaux, totaux, condition pour afficher "fin de partie", condition pour afficher "gagnant".

1ère petite question: :eek:

tout marche, mais étant nul en formule pourriez vous m'aider à simplifier cette formule qui marche: :D

=SI(ET(B3<>"-";B4<>"-";B5<>"-";B6<>"-";B7<>"-";B8<>"-";C3<>"-";C4<>"-";C5<>"-";C6<>"-";C7<>"-";C8<>"-";D3<>"-";D4<>"-";D5<>"-";D6<>"-";D7<>"-";D8<>"-";E3<>"-";E4<>"-";E5<>"-";E6<>"-";E7<>"-";E8<>"-";F3<>"-";F4<>"-";F5<>"-";F6<>"-";F7<>"-";F8<>"-";G3<>"-";G4<>"-";G5<>"-";G6<>"-";G7<>"-";G8<>"-";G15<>"-";G16<>"-";G17<>"-";G18<>"-";G19<>"-";G20<>"-";G21<>"-";G22<>"-";G23<>"-";G24<>"-";F15<>"-";F16<>"-";F17<>"-";F18<>"-";F19<>"-";F20<>"-";F21<>"-";F22<>"-";F23<>"-";F24<>"-";E24<>"-";E23<>"-";E22<>"-";E21<>"-";E20<>"-";E19<>"-";E18<>"-";E17<>"-";E16<>"-";E15<>"-";D15<>"-";D16<>"-";D17<>"-";D18<>"-";D19<>"-";D20<>"-";D20<>"-";D21<>"-";D22<>"-";D23<>"-";D24<>"-";C24<>"-";C23<>"-";C22<>"-";C21<>"-";C20<>"-";C19<>"-";C18<>"-";C17<>"-";C16<>"-";C15<>"-";B15<>"-";B16<>"-";B17<>"-";B18<>"-";B19<>"-";B20<>"-";B21<>"-";B22<>"-";B23<>"-";B24<>"-");"Partie Terminée";"Partie en cours") :eek:

quand je sélectionne plusieurs cellule, ex B3:B10<>"-" ça ne marche pas.

2ème petite question, :rolleyes:

j'ai une cellule qui compare les scores, et qui prend en compte la cellule qui marque "partie terminé", elle marque gagné lorsque les conditions sont réunies.

voici ma formule, qui peut certainement être améliorée ( elle marche )

=SI(ET(B29>C29;B29>D29;B29>E29;B29>F29;B29>G29;A28="partie terminée");"GAGNE";"-")

voici donc ma question: :confused:

comment faire jouer un son ( applaudissements ) lorsque la cellule a les conditions pour mettre "gagné"

cela peut vous paraitre simpliste, mais je ne comprends pas grand chose aux macros, et les formules c'est limite.:p

merci d'avance ;)
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : jouer un son en fonction d'une cellule, débutant !!

bonsoir mrdo,

pour ta première question,
dans une cellule inoccupée tu mets
Code:
=NB.SI(B4:B24;"=-")
et tu teste cette cellule qui doit être à 0
Code:
=SI( celluleinoccupée=0;"Partie Terminée";"Partie en cours") [COLOR="Blue"][B]ou  l'inverse [/B][/COLOR]
 

Excel-lent

XLDnaute Barbatruc
Re : jouer un son en fonction d'une cellule, débutant !!

Bonsoir Mrdo,

mrdo à dit:
m'aider à simplifier cette formule qui marche: :D

=SI(ET(B3<>"-";B4<>"-";B5<>"-";B6<>"-";B7<>"-";B8<>"-";C3<>"-";C4<>"-";C5<>"-";C6<>"-";C7<>"-";C8<>"-";D3<>"-";D4<>"-";D5<>"-";D6<>"-";D7<>"-";D8<>"-";E3<>"-";E4<>"-";E5<>"-";E6<>"-";E7<>"-";E8<>"-";F3<>"-";F4<>"-";F5<>"-";F6<>"-";F7<>"-";F8<>"-";G3<>"-";G4<>"-";G5<>"-";G6<>"-";G7<>"-";G8<>"-";G15<>"-";G16<>"-";G17<>"-";G18<>"-";G19<>"-";G20<>"-";G21<>"-";G22<>"-";G23<>"-";G24<>"-";F15<>"-";F16<>"-";F17<>"-";F18<>"-";F19<>"-";F20<>"-";F21<>"-";F22<>"-";F23<>"-";F24<>"-";E24<>"-";E23<>"-";E22<>"-";E21<>"-";E20<>"-";E19<>"-";E18<>"-";E17<>"-";E16<>"-";E15<>"-";D15<>"-";D16<>"-";D17<>"-";D18<>"-";D19<>"-";D20<>"-";D20<>"-";D21<>"-";D22<>"-";D23<>"-";D24<>"-";C24<>"-";C23<>"-";C22<>"-";C21<>"-";C20<>"-";C19<>"-";C18<>"-";C17<>"-";C16<>"-";C15<>"-";B15<>"-";B16<>"-";B17<>"-";B18<>"-";B19<>"-";B20<>"-";B21<>"-";B22<>"-";B23<>"-";B24<>"-");"Partie Terminée";"Partie en cours")

Voici une solution plus courte qui fais la même chose :
Code:
=SI(NB.SI(B3:G8;"-")+NB.SI(B15:G24;"-")=0;"Partie Terminée";"Partie en cours")

Bonne soirée

Edition : Bonsoir phlaurent55
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Dernière édition:

mrdo

XLDnaute Nouveau
Re : jouer un son en fonction d'une cellule, débutant !!

salut,

merci phlaurent55 et excel-lent, de vous occuper des ptits gars comme moi :)

pour la formule simplifiée, excel-lent, trop fort :cool: et merci, ça marche impec. :D

une petite explication STP pour le NB.SI :confused: merci ;) j'aimerais comprendre un tout petit peu ce que je marque, surtout si ça marche, et on sait jamais, je pourrais peut-être l'expliquer à quelqu'un par la suite ;)

pour le son, j'ai rien pigé dans le lien :(
 

Excel-lent

XLDnaute Barbatruc
Re : jouer un son en fonction d'une cellule, débutant !!

Bonsoir Mrdo, Phlaurent55, MyDearFriend!,

Excel-lent à dit:
Code:
[COLOR="Orange"][B]=SI([/B][/COLOR]NB.SI([COLOR="Red"][B]B3:G8[/B][/COLOR];[COLOR="Navy"][B]"-"[/B][/COLOR])[B][U]+[/U][/B]NB.SI([COLOR="Red"][B]B15:G24[/B][/COLOR];[COLOR="Navy"][B]"-"[/B][/COLOR])=0[B][COLOR="Orange"];[/COLOR][/B]"Partie Terminée"[COLOR="Orange"][B];[/B][/COLOR]"Partie en cours"[COLOR="Orange"][B])[/B][/COLOR]

La fonction NB.SI(zone dans laquelle chercher;truc à trouver)

Compte le nombre de "truc à trouver" qui se trouve dans la zone de recherche

Comme tes deux zones étaient distincts, j'ai dû scinder ma formule en deux. J'ai pris ta zone une, puis ta zone deux que j'ai ajouté ensemble.

Fonction SI() basique

Bref lorsque les deux zones :
-> contiennent 0 cellule avec le signe "-", ta formule écrit : "Partie Terminé"
-> s'il y a au moins 1 cellule avec le signe "-", ta formule écrit : "Partie en cours"

Bonne soirée
 
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : jouer un son en fonction d'une cellule, débutant !!

Re,

Tu connais un peu le VBA?

Il s'agit là d'une macro en VBA!

Le plus simple si tu ne connais pas est de prendre la macro ci-dessous (transmise par MyDearFriend!)

Code:
Option Explicit
Private Declare Function Beep& Lib "Kernel32" (ByVal Fq&, ByVal Tm&)

Sub JouerSon() 
    Beep [COLOR="Blue"][B]540[/B][/COLOR], [COLOR="Red"][B]500[/B][/COLOR]
End Sub

La macro ainsi écrite fera le son 540, durant 500 ... (je ne connais pas l'unité de mesure - mais correspond environ à 1,5 secondes), lorsque tu lanceras la macro (en cliquant sur un bouton auquel tu auras associé la macro, ou plus simplement en la lançant manuellement).

Mais si tu veux qu'elle se lance toute seule, ce sera plus compliqué!!!!

Ecrire la macro suivante sur TA feuille et non pas dans Module

Code:
Option Explicit
Private Declare Function Beep& Lib "Kernel32" (ByVal Fq&, ByVal Tm&)

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.[COLOR="Red"][U]Column = 1[/U][/COLOR] And Target.[COLOR="Blue"][U]Row = 5[/U][/COLOR] And Target.Value = "Partie Terminé" Then
       Beep 540, 500
   End If
End Sub

Ceci dans le cas où tu souhaite que le son soit émis lorsque :
-> Il y a le texte "Partie Terminé"

-> dans la cellule : Colonne 1 (plus communément appelé "A"), ligne 5 soit en langage courant : [A5]
(chiffres à remplacer par ceux que tu veux ;)

-> et cela de façon AUTOMATIQUE (sans avoir à cliquer dans une cellule particulière, ni un bouton, ni ...).

Si besoin de plus d'explication sur la mise en place de la macro, n'hésite pas

Bonne soirée
 
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : jouer un son en fonction d'une cellule, débutant !!

Re, (suite et fin)

Ou plus facile à comprendre mais identique :

Code:
Option Explicit
Private Declare Function Beep& Lib "Kernel32" (ByVal Fq&, ByVal Tm&)

Private Sub Worksheet_Change(ByVal Target As Range)
   If [COLOR="Gray"][B]Target.Address = "$A$5"[/B][/COLOR] And Target.Value = "Partie Terminé" Then
       Beep 540, 500
   End If
End Sub


A la place du code donné précédemment :
Code:
Option Explicit
Private Declare Function Beep& Lib "Kernel32" (ByVal Fq&, ByVal Tm&)

Private Sub Worksheet_Change(ByVal Target As Range)
   If [COLOR="Gray"][B]Target.Column = 1 And Target.Row = 5[/B][/COLOR] And Target.Value = "Partie Terminé" Then
       Beep 540, 500
   End If
End Sub

Cette partie écrite différemment signifie exactement la même chose

Bonne fin de soirée

PS. : pas d'inquiétude concernant le fait que le texte "Partie Terminé" soit écrit manuellement ou par le biais d'une formule, ça fonctionneras quand même!
 
Dernière édition:

myDearFriend!

XLDnaute Barbatruc
Re : jouer un son en fonction d'une cellule, débutant !!

Re,

L'ennui Excel-lent, c'est que ta proposition avec l'évènement Change() de la feuille ne se déclenchera que si l'utilisateur modifie manuellement la cellule A5 en écrivant lui-même "Partie Terminée" dans cette cellule.:eek:
L'évènement Change() ne se déclenche pas si l'expression "Partie Terminée" est le résultat d'une formule... donc pas d'accord avec ton PS ci-dessus.

Une façon de contourner ce problème est d'intégrer une fonction personnalisée directement dans la cellule "résultat" (A5).

Voir l'exemple ci-joint et la fonction dans le module de code Module1.

Cordialement,
 

Pièces jointes

  • Pour_mrdo.zip
    8.9 KB · Affichages: 36

Excel-lent

XLDnaute Barbatruc
Re : jouer un son en fonction d'une cellule, débutant !!

Salut MyDearFriend

myDearFriend! à dit:
L'évènement Change() ne se déclenche pas si l'expression "Partie Terminée" est le résultat d'une formule

:eek: Ah oui!!!!

J'étais tellement sûr de moi, que j'ai même pas pensé à vérifier!

Merci pour ton intervention.

Bonne soirée
 

mrdo

XLDnaute Nouveau
Re : jouer un son en fonction d'une cellule, débutant !!

merci à tous,;)

j'ai commencé à tester la macro, ça fonctionne pas tout à fait comme je le voudrais, mais ça BIP en tout cas, j'ai un bouton RAZ qui me fait la mise à zéro du tableau, et ça BIP à ce moment là.
Bon, j'ai certainement mal placé le code:(, je ferai d'autres essais de manip demain ...... je suis claqué:eek:.

je vous tiens au courant

bonne soirée à tous,
 

mrdo

XLDnaute Nouveau
Re : jouer un son en fonction d'une cellule, débutant !!

bonjour à tous,

merci,MyDearFriend ;) ça marche.

j'ai donc changé >> If Range("D3").Value > 9 Then
par >> If Range("A28").Value = "Partie Terminée" Then

ce qui correspond à ma cellule qui marque partie terminée

j'ai fait comme le script, et j'ai désigné un cellule qui reçoit la formule =JouerResultat()

mais maintenant j'ai deux cellules qui m'annoncent "partie terminée, partie en cours.

peut-on modifier ma formule :

=SI(NB.SI(B3:G8;"-")+NB.SI(B15:G24;"-")=0;"Partie Terminée";"Partie en cours")

pour intégrer directement le =JouerResultat() qui fait jouer le son, ou suis-je obligé de passer par un autre cellule.

et quelle est la partie du script à enlever

merci d'avance
 
Dernière édition:

myDearFriend!

XLDnaute Barbatruc
Re : jouer un son en fonction d'une cellule, débutant !!

Bonjour mrdo, phlaurent55, Excel-lent, le Forum,

Ok, tu supprimes la formule dans ta cellule A28 et tu mets à la place :
Code:
=JouerResultat()
Tu modifies le code VBA du Module1 pour la fonction personnalisée comme suit :
Code:
[COLOR=GRAY][B][I]DANS UN MODULE DE CODE STANDARD (MODULE1 PAR EXEMPLE)[/I][/B][/COLOR]

[COLOR=NAVY]Option Explicit[/COLOR]
[COLOR=GREEN]'---------------------------------------------------------------------------------------[/COLOR]
[COLOR=GREEN]' Auteur    : Didier FOURGEOT (myDearFriend!)  -  www.mdf-xlpages.com[/COLOR]
[COLOR=GREEN]' Date      : 17/04/2009[/COLOR]
[COLOR=GREEN]'---------------------------------------------------------------------------------------[/COLOR]
[COLOR=NAVY]Private Declare Function[/COLOR] Beep& [COLOR=NAVY]Lib[/COLOR] "Kernel32" ([COLOR=NAVY]ByVal[/COLOR] Fq&, [COLOR=NAVY]ByVal[/COLOR] Tm&)
 
[COLOR=NAVY]Function[/COLOR] JouerResultat() [COLOR=NAVY]As String
Static[/COLOR] AncVal [COLOR=NAVY]As String
Dim[/COLOR] N [COLOR=NAVY]As Byte
    With[/COLOR] Application
        .Volatile
        N = .CountIf(Range("B3:G8"), "-") + .CountIf(Range("B15:G24"), "-")
    [COLOR=NAVY]End With
    If[/COLOR] N = 0 [COLOR=NAVY]Then
        If[/COLOR] AncVal <> "Partie Terminée!" [COLOR=NAVY]Then[/COLOR]    [COLOR=GREEN]'Avec ce test, on ne jouera le son qu'une seule fois[/COLOR]
            Beep 550, 100
            Beep 625, 100
            Beep 675, 100
            Beep 750, 100
            Beep 850, 100
        [COLOR=NAVY]End If[/COLOR]
        AncVal = "Partie Terminée!"
    [COLOR=NAVY]Else[/COLOR]
        AncVal = "Partie en cours..."
    [COLOR=NAVY]End If[/COLOR]
    JouerResultat = AncVal
[COLOR=NAVY]End Function[/COLOR]
Cette fonction personnalisée gère à la fois le son et l'affichage Partie Terminée ou en cours...

Cordialement,
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T