OVH Cloud OVH Cloud

CALCUL EN FONCTION DU NOMBRE DE JUGES

18 réponses
Avatar
Yves_Lyon
Bonjour,
Je souhaite faire des calculs en fonction du nombre de juges d'une compétition
avec 3 JUGES: total des 3 notes divisé par 3 et multiplié par 5
avec 5 JUGES: total des notes en enlevant la plus haute et la plus basse des 5
divisé par 3 et multiplié par 5
avec 6 JUGES: total des notes en enlevant la plus haute et la plus basse des 6
divisé par 4 et multiplié par 5
avec 7 juges : total des notes en enlevant la plus haute et la plus basse
des 7
Je sais le faire avec la fonction HorsExtreme de Raymond mais sur un seul
cas, et je ne vois pas comment je peux sélectionner un calcul en fonction du
nombre de juges ?
Merci d'avance
Yves

8 réponses

1 2
Avatar
Yves_Lyon
Bonjour,
C'est vrai les profs ont toujours raison et ils pensent qu'ils ont la
science infuse !!!!!
je vais essayer d'être un bon élève et de répondre à tes questions
Si c'est c'est exactement ce que r'envoie ta fonction c'est que je suis un
blaireau et que j'utilise mal ta fonction;
J'ai donc employé une requetes avec tous mes champs, j'ai rajouter un champ
Total
avec ta fonction (je l'avais intégrér dans un module)
Total: PointsJury([C1];[C2];[C3];[C4];[C5];[C6];[C7])
je balaye donc les 7 valeurs des 7 juges et c'est vrai lorsque je n'ai que 3
juges
C1 C2 C3 les autres valeurs des juges sont à zéro.
J'ai utilisé le même principe que la fonction Hors extreme que je t'ai
envoyé mais la j'ai du faire une erreur de requete !!!!!!
Le mauvais élève doit faire comment ?
merci encore de ta patience et désolé si je suis resté dans mon idée.
yves



"3stone" a écrit :

Salut,

Yves_Lyon wrote:
> Bonsoir,
> les résultats ne sont toujours pas bons sauf pour 7 juges.
> exemple
> 5 JUGES
> 40 30 50 70 60 on enlève la plus haute 70 on enleve la plus basse 30
> il reste: 150 on divise par 3 et on multiplie par 5
> Le résultats est 250
> 6 juges
> 20 10 40 50 60 80 On enlève la plus haute 80 on enlève la plus basse
> 10
> il reste:170 divisé par 4 et multiplié par 5
> le résultats est : 212,5


Mais c'est EXACTEMENT ce que renvoie ma fonction !!!


> On divise toujours par le nombre de notes restantes et on multiplie
> par 5 Quand il y a 7 juges il reste 5 notes divisé par 5 et
> multiplie Par 5 donc c'est le total des 5 notes restantes

oui, mais...


> Si j'ai bien compris ta fonction elle fait des calculs toujours sur
> l'ensemble des 7 notes .

Non !

Tu es prof ?? et tu ne réponds pas aux questions ?
car j'avais demandé :


>> Mais, que transmets tu *exactement* à cette fonction ?


Car, pour que ton résulat soit mauvais, je suppose que tu
envoie TOUJOURS 7 valeurs, celle non renseignées valant zéro :-/

Donc je répète, que transmets tu à la fonction ?
ou, dit autrement, comment utilises-tu la fonction ??

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)

.

Avatar
3stone
Salut,

Yves_Lyon wrote:
[...]
avec ta fonction (je l'avais intégrér dans un module)
Total: PointsJury([C1];[C2];[C3];[C4];[C5];[C6];[C7])
je balaye donc les 7 valeurs des 7 juges et c'est vrai lorsque je
n'ai que 3 juges
C1 C2 C3 les autres valeurs des juges sont à zéro.




Nous y voilà ;-)

Tu n'envoies pas entre 3 et 7 valeur à la fonction, mais toujours 7 !
De ces 7 valeurs, il ne faut garder que les X premières qui ne
sont pas à zéro...

Voilà donc la fonction qui fait cela:


Function PointsJury(ParamArray Points() As Variant) As Double
Dim Total As Double
Dim i As Integer, NbrPts As Integer
Dim vMin As Variant, vMax As Variant

'Nombre de points transmis
Do Until Points(i) = 0
i = i + 1
Loop
NbrPts = i
'
'Recherche des extremes
vMax = 0
vMin = Points(0)
For i = 0 To NbrPts - 1
Total = Total + Points(i)
If Points(i) > vMax Then vMax = Points(i)
If Points(i) < vMin Then vMin = Points(i)
Next i
'
'Nombre de points transmis
Select Case NbrPts
Case 3
PointsJury = (Total / 3) * 5
Case 4
PointsJury = (Total / 4) * 5
Case 5
PointsJury = ((Total - vMin - vMax) / 3) * 5
Case 6
PointsJury = ((Total - vMin - vMax) / 4) * 5
Case 7
PointsJury = (Total - vMin - vMax)
End Select
'
End Function


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Yves_Lyon
Bonjour,
Enfin un élève qui écoute ce n'est pas trop tôt, je te remercie encore de ta
patience, dés fois de se faire remettre à sa place de temps en temps fait du
bien; et ta fonction est parfaite; je vais maintenant l'intégrer à la vrai
base car je faisais des tests sur une simple base avec seulement 7 champs,
une liste déroulante, et un champ total. En plus maintenant je vais regarder
pour éviter d'utiliser une valeur numérique par défaut 0 ce qui n'est pas
jolie dans un champ ,la fonction
nz([C1]).
Je vais créer encore une autre fonction PointsJury2 pour une autre série de
7 notes.
Ta première va servir pour noter le mérite technique
La deuxième l'impréssion artistique
L'ensemble est combiné avec une % de chaque valeur et on aussi le combiner
avec les notes d'imposées.
Tes conseils sont toujours aussi précieux et ce n'est pas la première fois
que tu m'aide sur ce forum
A+
Yves


"3stone" a écrit :

Salut,

Yves_Lyon wrote:
[...]
> avec ta fonction (je l'avais intégrér dans un module)
> Total: PointsJury([C1];[C2];[C3];[C4];[C5];[C6];[C7])
> je balaye donc les 7 valeurs des 7 juges et c'est vrai lorsque je
> n'ai que 3 juges
> C1 C2 C3 les autres valeurs des juges sont à zéro.


Nous y voilà ;-)

Tu n'envoies pas entre 3 et 7 valeur à la fonction, mais toujours 7 !
De ces 7 valeurs, il ne faut garder que les X premières qui ne
sont pas à zéro...

Voilà donc la fonction qui fait cela:


Function PointsJury(ParamArray Points() As Variant) As Double
Dim Total As Double
Dim i As Integer, NbrPts As Integer
Dim vMin As Variant, vMax As Variant

'Nombre de points transmis
Do Until Points(i) = 0
i = i + 1
Loop
NbrPts = i
'
'Recherche des extremes
vMax = 0
vMin = Points(0)
For i = 0 To NbrPts - 1
Total = Total + Points(i)
If Points(i) > vMax Then vMax = Points(i)
If Points(i) < vMin Then vMin = Points(i)
Next i
'
'Nombre de points transmis
Select Case NbrPts
Case 3
PointsJury = (Total / 3) * 5
Case 4
PointsJury = (Total / 4) * 5
Case 5
PointsJury = ((Total - vMin - vMax) / 3) * 5
Case 6
PointsJury = ((Total - vMin - vMax) / 4) * 5
Case 7
PointsJury = (Total - vMin - vMax)
End Select
'
End Function


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)

.

Avatar
Yves_Lyon
J'ai crié victoire trop tôt
la fonction marche bien avec 3,4,5,6 mais pas avec 7 juges
ereeur d'execution 9 l'indice n'appartient pas à la sélection,
En faite, dès que je saisie une note dans la la 7° case une erreur
d'execution s'affiche; je ne m'en étais pas rendu compte tout de suite.
A bientôt
Yves

"Yves_Lyon" a écrit :

Bonjour,
Enfin un élève qui écoute ce n'est pas trop tôt, je te remercie encore de ta
patience, dés fois de se faire remettre à sa place de temps en temps fait du
bien; et ta fonction est parfaite; je vais maintenant l'intégrer à la vrai
base car je faisais des tests sur une simple base avec seulement 7 champs,
une liste déroulante, et un champ total. En plus maintenant je vais regarder
pour éviter d'utiliser une valeur numérique par défaut 0 ce qui n'est pas
jolie dans un champ ,la fonction
nz([C1]).
Je vais créer encore une autre fonction PointsJury2 pour une autre série de
7 notes.
Ta première va servir pour noter le mérite technique
La deuxième l'impréssion artistique
L'ensemble est combiné avec une % de chaque valeur et on aussi le combiner
avec les notes d'imposées.
Tes conseils sont toujours aussi précieux et ce n'est pas la première fois
que tu m'aide sur ce forum
A+
Yves


"3stone" a écrit :

> Salut,
>
> Yves_Lyon wrote:
> [...]
> > avec ta fonction (je l'avais intégrér dans un module)
> > Total: PointsJury([C1];[C2];[C3];[C4];[C5];[C6];[C7])
> > je balaye donc les 7 valeurs des 7 juges et c'est vrai lorsque je
> > n'ai que 3 juges
> > C1 C2 C3 les autres valeurs des juges sont à zéro.
>
>
> Nous y voilà ;-)
>
> Tu n'envoies pas entre 3 et 7 valeur à la fonction, mais toujours 7 !
> De ces 7 valeurs, il ne faut garder que les X premières qui ne
> sont pas à zéro...
>
> Voilà donc la fonction qui fait cela:
>
>
> Function PointsJury(ParamArray Points() As Variant) As Double
> Dim Total As Double
> Dim i As Integer, NbrPts As Integer
> Dim vMin As Variant, vMax As Variant
>
> 'Nombre de points transmis
> Do Until Points(i) = 0
> i = i + 1
> Loop
> NbrPts = i
> '
> 'Recherche des extremes
> vMax = 0
> vMin = Points(0)
> For i = 0 To NbrPts - 1
> Total = Total + Points(i)
> If Points(i) > vMax Then vMax = Points(i)
> If Points(i) < vMin Then vMin = Points(i)
> Next i
> '
> 'Nombre de points transmis
> Select Case NbrPts
> Case 3
> PointsJury = (Total / 3) * 5
> Case 4
> PointsJury = (Total / 4) * 5
> Case 5
> PointsJury = ((Total - vMin - vMax) / 3) * 5
> Case 6
> PointsJury = ((Total - vMin - vMax) / 4) * 5
> Case 7
> PointsJury = (Total - vMin - vMax)
> End Select
> '
> End Function
>
>
> --
> A+
> Pierre (3stone) Access MVP
> Perso: http://www.3stone.be/
> MPFA: http://www.mpfa.info/ (infos générales)
>
> .
>
Avatar
3stone
Salut,

Yves_Lyon wrote:
J'ai crié victoire trop tôt



Mes excuses, comme quoi il faut mieux tester...
Ce coup ci, cela doit être bon.


Function PointsJury(ParamArray Points() As Variant) As Double
Dim Total As Double
Dim i As Integer, j As Integer, NbrPts As Integer
Dim vMin As Variant, vMax As Variant
'
'Nombre de points transmis
For i = 1 To 7
If Points(i - 1) > 0 Then NbrPts = i Else Exit For
Next
'Recherche des extremes
vMax = 0
vMin = Points(0)
For i = 0 To NbrPts - 1
Total = Total + Points(i)
If Points(i) > vMax Then vMax = Points(i)
If Points(i) < vMin Then vMin = Points(i)
Next i
'
'Nombre de points transmis
Select Case NbrPts
Case 3
PointsJury = (Total / 3) * 5
Case 4
PointsJury = (Total / 4) * 5
Case 5
PointsJury = ((Total - vMin - vMax) / 3) * 5
Case 6
PointsJury = ((Total - vMin - vMax) / 4) * 5
Case 7
PointsJury = (Total - vMin - vMax)
End Select
End Function


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Yves_Lyon
Bonjour,
J'ai fais les tests avec tous les jurys possibles et les calculs sont bons,
mais je pense que le champ NbrPts n'a aucune influence sur le résultat. Cela
m'arrange, car je n'ai pas besoin de sélectionner cette liste puisque le
calcul se fait en fonction de la saisie dans le champ C1 C2 C3 C4 C5 C6 C7 ,
qu'en penses-tu?
A bientôt et merci encore.
yves

"3stone" a écrit :

Salut,

Yves_Lyon wrote:
> J'ai crié victoire trop tôt

Mes excuses, comme quoi il faut mieux tester...
Ce coup ci, cela doit être bon.


Function PointsJury(ParamArray Points() As Variant) As Double
Dim Total As Double
Dim i As Integer, j As Integer, NbrPts As Integer
Dim vMin As Variant, vMax As Variant
'
'Nombre de points transmis
For i = 1 To 7
If Points(i - 1) > 0 Then NbrPts = i Else Exit For
Next
'Recherche des extremes
vMax = 0
vMin = Points(0)
For i = 0 To NbrPts - 1
Total = Total + Points(i)
If Points(i) > vMax Then vMax = Points(i)
If Points(i) < vMin Then vMin = Points(i)
Next i
'
'Nombre de points transmis
Select Case NbrPts
Case 3
PointsJury = (Total / 3) * 5
Case 4
PointsJury = (Total / 4) * 5
Case 5
PointsJury = ((Total - vMin - vMax) / 3) * 5
Case 6
PointsJury = ((Total - vMin - vMax) / 4) * 5
Case 7
PointsJury = (Total - vMin - vMax)
End Select
End Function


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)

.

Avatar
3stone
Salut,

Yves_Lyon wrote:
J'ai fais les tests avec tous les jurys possibles et les calculs sont
bons, mais je pense que le champ NbrPts n'a aucune influence sur le
résultat. Cela m'arrange, car je n'ai pas besoin de sélectionner
cette liste puisque le calcul se fait en fonction de la saisie dans
le champ C1 C2 C3 C4 C5 C6 C7 , qu'en penses-tu?




La fonction utilise une variable NbrPts à laquelle il ne faut pas toucher.

Dans ton formulaire, une liste ou autre pour sélectionner le
nombre des points/juges n'est pas utilite ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Yves_Lyon
je te remercie pour tout, et je vais m'emprésser de finaliser l'ensemble car
j'en ai besoin pour le 1° mai à Bourg
A+
yves


"3stone" a écrit :

Salut,

Yves_Lyon wrote:
> J'ai fais les tests avec tous les jurys possibles et les calculs sont
> bons, mais je pense que le champ NbrPts n'a aucune influence sur le
> résultat. Cela m'arrange, car je n'ai pas besoin de sélectionner
> cette liste puisque le calcul se fait en fonction de la saisie dans
> le champ C1 C2 C3 C4 C5 C6 C7 , qu'en penses-tu?


La fonction utilise une variable NbrPts à laquelle il ne faut pas toucher.

Dans ton formulaire, une liste ou autre pour sélectionner le
nombre des points/juges n'est pas utilite ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)

.

1 2