Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Calcul d'un classement

11 réponses
Avatar
Jean-Marc
Bonjour
Dans un formulaire (FicheCandidat) un contrôle (TotalNet) permet de calculer
une somme de points à partir d'autres contrôles. Un autre contrôle
(TotalNetCtrl) permet gràce à une procédure événementielle de récupérer la
valeur du contrôle TotalNet pour la mettre dans le champ TotalNet de la table
Candidat. Jusque là, tout marche.
Je souhaite calculer dans un contrôle (Classement) le classement du candidat
en comparant son total net à celui des autres candidats, le total net le plus
élevé donnant la place de numéro 1. Pour ce faire et grâce à l'aide de deux
intervenants du forum j'ai mis dans le contrôle Classement l'expression
suivante :
=CpteDom("*";"Candidat";"TotalNet>" & [TotalNetCtrl])+1
Malheureusement, quand je bascule en mode formulaire, le contrôle affiche
"Erreur".
Quelqu'un peut-il m'aider
Merci d'avance aux contributeurs

10 réponses

1 2
Avatar
pgz
Bonjour.

Le message est #erreur et non pas #nom. Donc pas de pb avec les désignations
de variables, mais une erreur de calcul.
Le pb pourrait bien venir du format de nombre pour totalnet, qui ne doit pas
être entier mais réel ou décimal...
Je te suggère d'essayer :
=CpteDom("*";"Candidat";"TotalNet>" & Remplacer([TotalNetCtrl];",";"."))+1

Bon courage,

--
pgz
_____________________________




Bonjour
Dans un formulaire (FicheCandidat) un contrôle (TotalNet) permet de calculer
une somme de points à partir d'autres contrôles. Un autre contrôle
(TotalNetCtrl) permet gràce à une procédure événementielle de récupérer la
valeur du contrôle TotalNet pour la mettre dans le champ TotalNet de la table
Candidat. Jusque là, tout marche.
Je souhaite calculer dans un contrôle (Classement) le classement du candidat
en comparant son total net à celui des autres candidats, le total net le plus
élevé donnant la place de numéro 1. Pour ce faire et grâce à l'aide de deux
intervenants du forum j'ai mis dans le contrôle Classement l'expression
suivante :
=CpteDom("*";"Candidat";"TotalNet>" & [TotalNetCtrl])+1
Malheureusement, quand je bascule en mode formulaire, le contrôle affiche
"Erreur".
Quelqu'un peut-il m'aider
Merci d'avance aux contributeurs


Avatar
ze Titi
Bonjour Jean-Marc

Malheureusement, quand je bascule en mode formulaire, le contrôle affiche
"Erreur".
Tu bascules à partir de quoi vers ce mode ?


Dans ton message
Bonjour
Dans un formulaire (FicheCandidat) un contrôle (TotalNet) permet de calculer
une somme de points à partir d'autres contrôles. Un autre contrôle
(TotalNetCtrl) permet gràce à une procédure événementielle de récupérer la
valeur du contrôle TotalNet pour la mettre dans le champ TotalNet de la table
Candidat. Jusque là, tout marche.
Je souhaite calculer dans un contrôle (Classement) le classement du candidat
en comparant son total net à celui des autres candidats, le total net le plus
élevé donnant la place de numéro 1. Pour ce faire et grâce à l'aide de deux
intervenants du forum j'ai mis dans le contrôle Classement l'expression
suivante :
=CpteDom("*";"Candidat";"TotalNet>" & [TotalNetCtrl])+1
Malheureusement, quand je bascule en mode formulaire, le contrôle affiche
"Erreur".
Quelqu'un peut-il m'aider
Merci d'avance aux contributeurs


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Jean-Marc
Un grand merci à "PGZ".

Bonne continuation


Bonjour.

Le message est #erreur et non pas #nom. Donc pas de pb avec les désignations
de variables, mais une erreur de calcul.
Le pb pourrait bien venir du format de nombre pour totalnet, qui ne doit pas
être entier mais réel ou décimal...
Je te suggère d'essayer :
=CpteDom("*";"Candidat";"TotalNet>" & Remplacer([TotalNetCtrl];",";"."))+1

Bon courage,

--
pgz
_____________________________




Bonjour
Dans un formulaire (FicheCandidat) un contrôle (TotalNet) permet de calculer
une somme de points à partir d'autres contrôles. Un autre contrôle
(TotalNetCtrl) permet gràce à une procédure événementielle de récupérer la
valeur du contrôle TotalNet pour la mettre dans le champ TotalNet de la table
Candidat. Jusque là, tout marche.
Je souhaite calculer dans un contrôle (Classement) le classement du candidat
en comparant son total net à celui des autres candidats, le total net le plus
élevé donnant la place de numéro 1. Pour ce faire et grâce à l'aide de deux
intervenants du forum j'ai mis dans le contrôle Classement l'expression
suivante :
=CpteDom("*";"Candidat";"TotalNet>" & [TotalNetCtrl])+1
Malheureusement, quand je bascule en mode formulaire, le contrôle affiche
"Erreur".
Quelqu'un peut-il m'aider
Merci d'avance aux contributeurs




Avatar
Jean-Marc
Bonjour

Désormais j'arrive à obtenir pour un candidat C1 son classement dans le
contrôle ClassementCtrl et à le transférer dans le champ Classement de la
table Candidat à l'aide du contrôle Classement. Mon problème vient du fait
que si je modifie la valeur d'un des contrôles intervenant dans le calcul du
contrôle TotalNetCtrl qui détermine la valeur du contrôle ClassementCtrl,
j'obtiens une mise à jour immédiate du classement de C1. Cette mise à jour
n'est transférée au champ Classement de la table Candidat via le contrôle
Classement que lorsque je passe à un autre candidat en navigant dans le
formulaire. De plus, pour les autres candidats si leur classement affiché
dans le formulaire tient compte du nouveau classement de C1 la valeur de ce
nouveau classement n'est pas transférée à la table tant que je n'ai pas
modifié l'un des contrôle affectant le contrôle TotalNetCtrl.

Ce que je souhaite : obtenir une mise à jour pour tous les candidats de leur
champ dans la table Candidat dès qu'un candidat change de classement.

Merci d'avance à ceux qui voudront bien m'aider.
Avatar
Willi2004
Bonjour Jean-Marc
Sur l'évènement "Après MAJ" de chacun des contrôles intervenant dans le
calcul du
contrôle TotalNetCtrl, essayes le code suivant:

Private Sub NomDuContrôle_AfterUpdate()
Me.Dirty = False
Me.Recalc
End Sub


"Jean-Marc" a écrit dans le message de
news:
Bonjour

Désormais j'arrive à obtenir pour un candidat C1 son classement dans le
contrôle ClassementCtrl et à le transférer dans le champ Classement de la
table Candidat à l'aide du contrôle Classement. Mon problème vient du fait
que si je modifie la valeur d'un des contrôles intervenant dans le calcul
du
contrôle TotalNetCtrl qui détermine la valeur du contrôle ClassementCtrl,
j'obtiens une mise à jour immédiate du classement de C1. Cette mise à jour
n'est transférée au champ Classement de la table Candidat via le contrôle
Classement que lorsque je passe à un autre candidat en navigant dans le
formulaire. De plus, pour les autres candidats si leur classement affiché
dans le formulaire tient compte du nouveau classement de C1 la valeur de
ce
nouveau classement n'est pas transférée à la table tant que je n'ai pas
modifié l'un des contrôle affectant le contrôle TotalNetCtrl.

Ce que je souhaite : obtenir une mise à jour pour tous les candidats de
leur
champ dans la table Candidat dès qu'un candidat change de classement.

Merci d'avance à ceux qui voudront bien m'aider.


Avatar
Jean-Marc
Merci Willi2004

Ta solution fonctionne pour mettre à jour le classement dans la table
candidat du candidat dont on modifie un des contrôles intervenant dans son
totalNet. Que faut-il désormais faire pour qu'à cette occasion, les
classements des autres candidats soient également recalculés et actualisés
dans la table ?

Merci encore et j'espère d'avance.

Cordialement


Bonjour Jean-Marc
Sur l'évènement "Après MAJ" de chacun des contrôles intervenant dans le
calcul du
contrôle TotalNetCtrl, essayes le code suivant:

Private Sub NomDuContrôle_AfterUpdate()
Me.Dirty = False
Me.Recalc
End Sub


"Jean-Marc" a écrit dans le message de
news:
Bonjour

Désormais j'arrive à obtenir pour un candidat C1 son classement dans le
contrôle ClassementCtrl et à le transférer dans le champ Classement de la
table Candidat à l'aide du contrôle Classement. Mon problème vient du fait
que si je modifie la valeur d'un des contrôles intervenant dans le calcul
du
contrôle TotalNetCtrl qui détermine la valeur du contrôle ClassementCtrl,
j'obtiens une mise à jour immédiate du classement de C1. Cette mise à jour
n'est transférée au champ Classement de la table Candidat via le contrôle
Classement que lorsque je passe à un autre candidat en navigant dans le
formulaire. De plus, pour les autres candidats si leur classement affiché
dans le formulaire tient compte du nouveau classement de C1 la valeur de
ce
nouveau classement n'est pas transférée à la table tant que je n'ai pas
modifié l'un des contrôle affectant le contrôle TotalNetCtrl.

Ce que je souhaite : obtenir une mise à jour pour tous les candidats de
leur
champ dans la table Candidat dès qu'un candidat change de classement.

Merci d'avance à ceux qui voudront bien m'aider.







Avatar
Willi2004
Peux-tu envoyer ta base (via www.cjoint.com) si sa taille le permet?
Cela vaut parfois mieux que de simples explications qu'on ne perçoit pas
toujours correctement.
Je suis sûr qu'il se trouvera quelqu'un pour y jeter un coup d'oeil.



"Jean-Marc" a écrit dans le message de
news:
Merci Willi2004

Ta solution fonctionne pour mettre à jour le classement dans la table
candidat du candidat dont on modifie un des contrôles intervenant dans son
totalNet. Que faut-il désormais faire pour qu'à cette occasion, les
classements des autres candidats soient également recalculés et actualisés
dans la table ?

Merci encore et j'espère d'avance.

Cordialement


Bonjour Jean-Marc
Sur l'évènement "Après MAJ" de chacun des contrôles intervenant dans le
calcul du
contrôle TotalNetCtrl, essayes le code suivant:

Private Sub NomDuContrôle_AfterUpdate()
Me.Dirty = False
Me.Recalc
End Sub


"Jean-Marc" a écrit dans le message
de
news:
Bonjour

Désormais j'arrive à obtenir pour un candidat C1 son classement dans le
contrôle ClassementCtrl et à le transférer dans le champ Classement de
la
table Candidat à l'aide du contrôle Classement. Mon problème vient du
fait
que si je modifie la valeur d'un des contrôles intervenant dans le
calcul
du
contrôle TotalNetCtrl qui détermine la valeur du contrôle
ClassementCtrl,
j'obtiens une mise à jour immédiate du classement de C1. Cette mise à
jour
n'est transférée au champ Classement de la table Candidat via le
contrôle
Classement que lorsque je passe à un autre candidat en navigant dans le
formulaire. De plus, pour les autres candidats si leur classement
affiché
dans le formulaire tient compte du nouveau classement de C1 la valeur
de
ce
nouveau classement n'est pas transférée à la table tant que je n'ai pas
modifié l'un des contrôle affectant le contrôle TotalNetCtrl.

Ce que je souhaite : obtenir une mise à jour pour tous les candidats de
leur
champ dans la table Candidat dès qu'un candidat change de classement.

Merci d'avance à ceux qui voudront bien m'aider.









Avatar
Jean-Marc
C'est disponible là :
http://cjoint.com/?eCoykgTVFX

Merci d'avance


Peux-tu envoyer ta base (via www.cjoint.com) si sa taille le permet?
Cela vaut parfois mieux que de simples explications qu'on ne perçoit pas
toujours correctement.
Je suis sûr qu'il se trouvera quelqu'un pour y jeter un coup d'oeil.



"Jean-Marc" a écrit dans le message de
news:
Merci Willi2004

Ta solution fonctionne pour mettre à jour le classement dans la table
candidat du candidat dont on modifie un des contrôles intervenant dans son
totalNet. Que faut-il désormais faire pour qu'à cette occasion, les
classements des autres candidats soient également recalculés et actualisés
dans la table ?

Merci encore et j'espère d'avance.

Cordialement


Bonjour Jean-Marc
Sur l'évènement "Après MAJ" de chacun des contrôles intervenant dans le
calcul du
contrôle TotalNetCtrl, essayes le code suivant:

Private Sub NomDuContrôle_AfterUpdate()
Me.Dirty = False
Me.Recalc
End Sub


"Jean-Marc" a écrit dans le message
de
news:
Bonjour

Désormais j'arrive à obtenir pour un candidat C1 son classement dans le
contrôle ClassementCtrl et à le transférer dans le champ Classement de
la
table Candidat à l'aide du contrôle Classement. Mon problème vient du
fait
que si je modifie la valeur d'un des contrôles intervenant dans le
calcul
du
contrôle TotalNetCtrl qui détermine la valeur du contrôle
ClassementCtrl,
j'obtiens une mise à jour immédiate du classement de C1. Cette mise à
jour
n'est transférée au champ Classement de la table Candidat via le
contrôle
Classement que lorsque je passe à un autre candidat en navigant dans le
formulaire. De plus, pour les autres candidats si leur classement
affiché
dans le formulaire tient compte du nouveau classement de C1 la valeur
de
ce
nouveau classement n'est pas transférée à la table tant que je n'ai pas
modifié l'un des contrôle affectant le contrôle TotalNetCtrl.

Ce que je souhaite : obtenir une mise à jour pour tous les candidats de
leur
champ dans la table Candidat dès qu'un candidat change de classement.

Merci d'avance à ceux qui voudront bien m'aider.














Avatar
Willi2004
Il fallait vraiment voir de près. Ca ne pouvait pas marcher comme ça.
Il m'a fallu passer par 2 requêtes:
Une première pour effectuer les calculs que tu avais faits dans le
formulaire, et une seconde pour obtenir le classement, puis j'ai basé le
formulaire sur cette dernière requête.
Je crois qu'à présent ça fonctionne comme tu veux.
A toi de tester.
http://cjoint.com/?eCvQnpy8ts


"Jean-Marc" a écrit dans le message de
news:
C'est disponible là :
http://cjoint.com/?eCoykgTVFX

Merci d'avance


Peux-tu envoyer ta base (via www.cjoint.com) si sa taille le permet?
Cela vaut parfois mieux que de simples explications qu'on ne perçoit pas
toujours correctement.
Je suis sûr qu'il se trouvera quelqu'un pour y jeter un coup d'oeil.



"Jean-Marc" a écrit dans le message
de
news:
Merci Willi2004

Ta solution fonctionne pour mettre à jour le classement dans la table
candidat du candidat dont on modifie un des contrôles intervenant dans
son
totalNet. Que faut-il désormais faire pour qu'à cette occasion, les
classements des autres candidats soient également recalculés et
actualisés
dans la table ?

Merci encore et j'espère d'avance.

Cordialement


Bonjour Jean-Marc
Sur l'évènement "Après MAJ" de chacun des contrôles intervenant dans
le
calcul du
contrôle TotalNetCtrl, essayes le code suivant:

Private Sub NomDuContrôle_AfterUpdate()
Me.Dirty = False
Me.Recalc
End Sub


"Jean-Marc" a écrit dans le
message
de
news:
Bonjour

Désormais j'arrive à obtenir pour un candidat C1 son classement dans
le
contrôle ClassementCtrl et à le transférer dans le champ Classement
de
la
table Candidat à l'aide du contrôle Classement. Mon problème vient
du
fait
que si je modifie la valeur d'un des contrôles intervenant dans le
calcul
du
contrôle TotalNetCtrl qui détermine la valeur du contrôle
ClassementCtrl,
j'obtiens une mise à jour immédiate du classement de C1. Cette mise
à
jour
n'est transférée au champ Classement de la table Candidat via le
contrôle
Classement que lorsque je passe à un autre candidat en navigant dans
le
formulaire. De plus, pour les autres candidats si leur classement
affiché
dans le formulaire tient compte du nouveau classement de C1 la
valeur
de
ce
nouveau classement n'est pas transférée à la table tant que je n'ai
pas
modifié l'un des contrôle affectant le contrôle TotalNetCtrl.

Ce que je souhaite : obtenir une mise à jour pour tous les candidats
de
leur
champ dans la table Candidat dès qu'un candidat change de
classement.

Merci d'avance à ceux qui voudront bien m'aider.
















Avatar
Jean-Marc
Une fois de plus un grand merci pour tant de dévouement.

J'ai testé, tout fonctionne. Dans la solution que tu proposes la table
Candidat ne reçoit pas aucun des résultats de calcul (TotalBrut, TotalNet,
Classement).
Est-ce une impossibilité ou une trop grand source de complication ?

Encore une fois merci pour cette aide précieuse.

p.s.: je m'interdirais de poser de nouvelles questions durant toute la
journée du 1er mai ;-)
1 2