• Initiateur de la discussion Initiateur de la discussion benj78
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

benj78

XLDnaute Nouveau
Bonsoir,

Je commence à peine les fonctions et je dois dire que j'ai un peu de mal , je n'ai pas encore le "truc".

On a la fonction:

Function Pileface() As Integer
Dim x as double
x=Rnd()
If x<1/2 Then
Pileface=0
Else
Pileface=1
End If
End Function

On veut simuler un lancer de pièce avec les fonctions de tirage aléatoire. Pour cela, on utilise
la fonction aléatoire Rnd() qui renvoie un nombre aléatoire entre 0 et 1. Si le tirage est
inférieur à 1/2 alors le tirage est assimilé à pile, sinon à face.

On me demande d'écrire une macro qui utilise cette fonction, en effectuant un tirage puis affiche, selon le cas,un message indiquant pile ou face

j'ai fais :

Sub pile()
Dim x As Double
x = Rnd * 1
Msgbox("le tirage est" &pileface)
End Sub

Est ce correct ?
 
Re : Fonctions

Bon, tu tombes mal car je n'ai jamais utilisé de Msgbox ni de fonction, mais vue l'heure assez tardive, il ne doit pas y avoir grand monde allors je vais tenter une réponse à base de... suppositions. 🙁

Tu sembles avoir très bien compris le fonctionnement et l'utilisation de la fonction Rnd().
Je pense que, l'utilisation de la fonction Pileface() que tu as créée doit s'utiliser de la même façon.
De même que la fonction Rnd() te renvoie un chiffre entre 0 et 1, ta fonction Pileface() te renvoie 0 ou 1 (suivant le pseudo tirage effectué dans cette fonction).

Dans ta macro tu dois donc, je suppose, utiliser ta fonction Pileface() et un IF pour afficher "Pile" ou "Face" suivant ce que te renvoit ta fonction Pileface().

Ce qui donnerait un truc du genre (que je te laisse traduire en VBA 😉) :
SI Pileface()=0 ALORS
AFFICHER "Pile"
SINON
AFFICHER "Face"
FIN DE SI
 
Re : Fonctions

Bon, tu tombes mal car je n'ai jamais utilisé de Msgbox ni de fonction, mais vue l'heure assez tardive, il ne doit pas y avoir grand monde allors je vais tenter une réponse à base de... suppositions. 🙁

Tu sembles avoir très bien compris le fonctionnement et l'utilisation de la fonction Rnd().
Je pense que, l'utilisation de la fonction Pileface() que tu as créée doit s'utiliser de la même façon.
De même que la fonction Rnd() te renvoie un chiffre entre 0 et 1, ta fonction Pileface() te renvoie 0 ou 1 (suivant le pseudo tirage effectué dans cette fonction).

Dans ta macro tu dois donc, je suppose, utiliser ta fonction Pileface() et un IF pour afficher "Pile" ou "Face" suivant ce que te renvoit ta fonction Pileface().

Ce qui donnerait un truc du genre (que je te laisse traduire en VBA 😉) :
SI Pileface()=0 ALORS
AFFICHER "Pile"
SINON
AFFICHER "Face"
FIN DE SI


Bonjour 🙂

Oui ça me semble être ça j'ai trouvé une correction qui est la même à savoir:

Sub tirage
If pileface()=1 then
Msgbox("face")
Else
Msgbox("pile")
End if
End sub

Par contre il y a une petite chose que je ne comprends pas :

c'est si x<1/2 que c'est pile, or la on semble dire que c'est juste quand =0 ?


Si j'ai bien compris (ce qui n'est pas sûr) une fonction sert à donner les intructions et la macro applique juste ces instructions ?
 
Re : Fonctions

Par contre il y a une petite chose que je ne comprends pas :

c'est si x<1/2 que c'est pile, or la on semble dire que c'est juste quand =0 ?
C'est marrant, mais il y avait une chance sur deux pour que tu fasses cette remarque, car c'est une erreur qu'il est très facile de commettre.

Il y a en fait deux choses bien distinctes qu'il ne faut pas confondre.
Il y a d'un côté le travail effectué à l'intérieur de la fonction. Et une fois qu'elle fonctionne corectement cette fonction, le travail effectué à l'intérieur devient "transparent" pour la personne qui utilise la fonction.
Il y a d'un autre côté le résultat renvoyé par la fonction. Et lorsqu'on utilise une fonction, seule cette valeur nous intéresse.


A l'intérieur de ta fonction Pileface() tu prends un nombre aléatoire, qui n'est autre que le résultat de la fonction Rnd() (tu vois bien ici qu'on ne sait pas ce qui se passe à l'intérieur de cette fonction Rnd() et que ça n'a aucune importance) et si ce nombre est inférieur à 0,5 on défini que la fonction doit renvoyer la valeur 0 (zéro), sinon elle doit renvoyer la valeur 1.

Dans ta macro tu ne vois que la valeur renvoyée par ta fonction Pileface(), c'est à dire soit 0 (zéro) soit 1, zéro représentant "pile" et 1 représentant "face".
Tu vois donc que tu n'as pas, dans ta macro, de valeur inférieure à 0,5 ou supérieure à 0,5 tu as simplement la valeur 0 ou la valeur 1.

Est-ce un peu plus clair ?
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
231
  • Question Question
Réponses
7
Affichages
333
Réponses
5
Affichages
258
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
153
Retour