Calcul d'un classement

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
pgz
Le #6277271
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


ze Titi
Le #6277251
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

Jean-Marc
Le #6277241
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




Jean-Marc
Le #6277111
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.
Willi2004
Le #6277011
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" 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.


Jean-Marc
Le #6277001
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" 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.







Willi2004
Le #6276991
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" 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" 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.









Jean-Marc
Le #6276981
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" 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" 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.














Willi2004
Le #6276891
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" 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" 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" 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.
















Jean-Marc
Le #6276751
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 ;-)
Publicité
Poster une réponse
Anonyme