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

Regroupement de donnes pour etat

5 réponses
Avatar
l.girard
Bonjour,

Voici mon probleme:

J'ai une table et un formulaire qui me permettent d'enregistrer le nom
d'une personne ainsi que ses resultats a trois examens. (Je me suis
cr=E9er un champs qui fait la moyenne des trois examens)
Je voudrais etre capable de generer dans un etat 4 groupes. Exemple,
les 25% de ceux qui ont obtenu la meilleur moyenne aux 3 examens
appartiendrait au groupe A. Les 25% suivant au groupe B et ainsi de
suite...

Comment on fait pour faire ca????

Un gros merci =E0 ceux ou celles qui vont m'aider

5 réponses

Avatar
Fabien
Salut Girard
Voici une solution en 4 requetes a faire passer dans l'ordre
A la fin tu a une table avec ton code groupe A,B,C ou D .Reste a faire
l'état qui va bien

Requête 'moyenne'
SELECT Tblnotes2.N°, Tblnotes2.Nom, Tblnotes2.Note1, Tblnotes2.Note2,
Tblnotes2.Note3, ([Note1]+[Note2]+[note3])/3 AS moyenne
FROM Tblnotes2
ORDER BY ([Note1]+[Note2]+[note3])/3 DESC;

C'est sur cette requête que s'appuient les suivantes


Creation de la table avec le code groupe "A"
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "A" AS Groupe INTO Groupe
FROM Moyenne;

Ajout des code groupe "B"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "B" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;

Ajout des code groupe "C"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "C" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;

Ajout des code groupe "D"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "D" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;

A toi de tester .... ;-)




Bonjour,

Voici mon probleme:

J'ai une table et un formulaire qui me permettent d'enregistrer le nom
d'une personne ainsi que ses resultats a trois examens. (Je me suis
créer un champs qui fait la moyenne des trois examens)
Je voudrais etre capable de generer dans un etat 4 groupes. Exemple,
les 25% de ceux qui ont obtenu la meilleur moyenne aux 3 examens
appartiendrait au groupe A. Les 25% suivant au groupe B et ainsi de
suite...

Comment on fait pour faire ca????

Un gros merci à ceux ou celles qui vont m'aider



Avatar
Fabien
Ben non aprés reflexion c'est pas bon :-(
Parce qu'a chaque requete je prend 25 % de ce qui reste sans affectation
de groupe et non pas 25 % de tous les éléves.
Faut chercher autre chose désolé ;-)

Salut Girard
Voici une solution en 4 requetes a faire passer dans l'ordre
A la fin tu a une table avec ton code groupe A,B,C ou D .Reste a faire
l'état qui va bien

Requête 'moyenne'
SELECT Tblnotes2.N°, Tblnotes2.Nom, Tblnotes2.Note1, Tblnotes2.Note2,
Tblnotes2.Note3, ([Note1]+[Note2]+[note3])/3 AS moyenne
FROM Tblnotes2
ORDER BY ([Note1]+[Note2]+[note3])/3 DESC;

C'est sur cette requête que s'appuient les suivantes


Creation de la table avec le code groupe "A"
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "A" AS Groupe INTO Groupe
FROM Moyenne;

Ajout des code groupe "B"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "B" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;

Ajout des code groupe "C"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "C" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;

Ajout des code groupe "D"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "D" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;

A toi de tester .... ;-)




Bonjour,

Voici mon probleme:

J'ai une table et un formulaire qui me permettent d'enregistrer le nom
d'une personne ainsi que ses resultats a trois examens. (Je me suis
créer un champs qui fait la moyenne des trois examens)
Je voudrais etre capable de generer dans un etat 4 groupes. Exemple,
les 25% de ceux qui ont obtenu la meilleur moyenne aux 3 examens
appartiendrait au groupe A. Les 25% suivant au groupe B et ainsi de
suite...

Comment on fait pour faire ca????

Un gros merci à ceux ou celles qui vont m'aider





Avatar
Fabien
Toujours en s'appuyant sur la requete 'moyenne' et en utilisant la table
Groupe
Avec cette procedure
Sub Groupage()
Dim Db As DAO.Database
Dim Rst As DAO.Recordset
Dim Nbr_Enreg As Integer
Dim Compteur As Integer
Dim Lettre As String
Dim StrSQl As String
Set Db = CurrentDb
Set Rst = Db.OpenRecordset("Moyenne")
Nbr_Enreg = Rst.RecordCount * 25 / 100 ' Calcul des 25 % d'enreg
contenu dans la requete Moyenne
Compteur = 0
Lettre = "A"
StrSQl = ""
DoCmd.SetWarnings False
DoCmd.RunSQL "Delete * from Groupe"
While Not Rst.EOF
Compteur = Compteur + 1
If Compteur > Nbr_Enreg Then 'A t on atteint les x% d'enreg
Compteur = 1 'Si oui alors on replace le
compteur a 1
Lettre = Chr(Asc(Lettre) + 1) 'On Calcul de la lettre suivante
End If
StrSQl = "INSERT INTO Groupe ( N°, Nom, Note1, Note2, Note3,
moyenne, Groupe ) "
StrSQl = StrSQl & "SELECT " & Rst("N°") & ",'" & Rst("Nom") &
"', " & Rst("Note1") & ", " & Rst("Note2") & ", " & Rst("Note3") & ", "
& Replace(Rst("moyenne"), ",", ".") & ", '" & Lettre & "' AS Groupe ;"
DoCmd.RunSQL StrSQl
Rst.MoveNext
Wend
DoCmd.SetWarnings True
Set Db = Nothing
Rst.Close
Set Rst = Nothing

End Sub



Ben non aprés reflexion c'est pas bon :-(
Parce qu'a chaque requete je prend 25 % de ce qui reste sans affectation
de groupe et non pas 25 % de tous les éléves.
Faut chercher autre chose désolé ;-)

Salut Girard
Voici une solution en 4 requetes a faire passer dans l'ordre
A la fin tu a une table avec ton code groupe A,B,C ou D .Reste a faire
l'état qui va bien

Requête 'moyenne'
SELECT Tblnotes2.N°, Tblnotes2.Nom, Tblnotes2.Note1, Tblnotes2.Note2,
Tblnotes2.Note3, ([Note1]+[Note2]+[note3])/3 AS moyenne
FROM Tblnotes2
ORDER BY ([Note1]+[Note2]+[note3])/3 DESC;

C'est sur cette requête que s'appuient les suivantes


Creation de la table avec le code groupe "A"
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "A" AS Groupe INTO Groupe
FROM Moyenne;

Ajout des code groupe "B"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "B" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;

Ajout des code groupe "C"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "C" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;

Ajout des code groupe "D"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "D" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;

A toi de tester .... ;-)




Bonjour,

Voici mon probleme:

J'ai une table et un formulaire qui me permettent d'enregistrer le nom
d'une personne ainsi que ses resultats a trois examens. (Je me suis
créer un champs qui fait la moyenne des trois examens)
Je voudrais etre capable de generer dans un etat 4 groupes. Exemple,
les 25% de ceux qui ont obtenu la meilleur moyenne aux 3 examens
appartiendrait au groupe A. Les 25% suivant au groupe B et ainsi de
suite...

Comment on fait pour faire ca????

Un gros merci à ceux ou celles qui vont m'aider







Avatar
l.girard
On 12 sep, 04:31, Fabien wrote:
Toujours en s'appuyant sur la requete 'moyenne' et en utilisant la table
Groupe
Avec cette procedure
Sub Groupage()
Dim Db As DAO.Database
Dim Rst As DAO.Recordset
Dim Nbr_Enreg As Integer
Dim Compteur As Integer
Dim Lettre As String
Dim StrSQl As String
Set Db = CurrentDb
Set Rst = Db.OpenRecordset("Moyenne")
Nbr_Enreg = Rst.RecordCount * 25 / 100 ' Calcul des 25 % d'enreg
contenu dans la requete Moyenne
Compteur = 0
Lettre = "A"
StrSQl = ""
DoCmd.SetWarnings False
DoCmd.RunSQL "Delete * from Groupe"
While Not Rst.EOF
Compteur = Compteur + 1
If Compteur > Nbr_Enreg Then 'A t on atteint les x% d'enreg
Compteur = 1 'Si oui alors on replace le
compteur a 1
Lettre = Chr(Asc(Lettre) + 1) 'On Calcul de la lettre suiv ante
End If
StrSQl = "INSERT INTO Groupe ( N°, Nom, Note1, Note2, Note3,
moyenne, Groupe ) "
StrSQl = StrSQl & "SELECT " & Rst("N°") & ",'" & Rst("Nom") &
"', " & Rst("Note1") & ", " & Rst("Note2") & ", " & Rst("Note3") & ", "
& Replace(Rst("moyenne"), ",", ".") & ", '" & Lettre & "' AS Groupe ;"
DoCmd.RunSQL StrSQl
Rst.MoveNext
Wend
DoCmd.SetWarnings True
Set Db = Nothing
Rst.Close
Set Rst = Nothing

End Sub




Ben non aprés reflexion c'est pas bon :-(
Parce qu'a chaque requete je prend 25 % de ce qui reste sans affectation
de groupe et non pas 25 % de tous les éléves.
Faut chercher autre chose désolé ;-)

Salut Girard
Voici une solution en 4 requetes a faire passer dans l'ordre
A la fin tu a une table avec ton code groupe A,B,C ou D .Reste a faire
l'état qui va bien

Requête 'moyenne'
SELECT Tblnotes2.N°, Tblnotes2.Nom, Tblnotes2.Note1, Tblnotes2.Note2,
Tblnotes2.Note3, ([Note1]+[Note2]+[note3])/3 AS moyenne
FROM Tblnotes2
ORDER BY ([Note1]+[Note2]+[note3])/3 DESC;

C'est sur cette requête que s'appuient les suivantes

Creation de la table avec le code groupe "A"
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "A" AS Groupe INTO Groupe
FROM Moyenne;

Ajout des code groupe "B"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "B" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;

Ajout des code groupe "C"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "C" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;

Ajout des code groupe "D"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "D" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;

A toi de tester .... ;-)

Bonjour,

Voici mon probleme:

J'ai une table et un formulaire qui me permettent d'enregistrer le nom
d'une personne ainsi que ses resultats a trois examens. (Je me suis
créer un champs qui fait la moyenne des trois examens)
Je voudrais etre capable de generer dans un etat 4 groupes. Exemple,
les 25% de ceux qui ont obtenu la meilleur moyenne aux 3 examens
appartiendrait au groupe A. Les 25% suivant au groupe B et ainsi de
suite...

Comment on fait pour faire ca????

Un gros merci à ceux ou celles qui vont m'aider- Masquer le texte d es messages précédents -




- Afficher le texte des messages précédents -


Merci beaucoup de prendre le temps de m'aider

Peut-etre ma question va t'apparaitre basic, mais ou est-ce que je la
met la procedure que tu me propose?




Avatar
Fabien
Bonjour
On 12 sep, 04:31, Fabien wrote:
Toujours en s'appuyant sur la requete 'moyenne' et en utilisant la table
Groupe
Avec cette procedure
Sub Groupage()
Dim Db As DAO.Database
Dim Rst As DAO.Recordset
Dim Nbr_Enreg As Integer
Dim Compteur As Integer
Dim Lettre As String
Dim StrSQl As String
Set Db = CurrentDb
Set Rst = Db.OpenRecordset("Moyenne")
Nbr_Enreg = Rst.RecordCount * 25 / 100 ' Calcul des 25 % d'enreg
contenu dans la requete Moyenne
Compteur = 0
Lettre = "A"
StrSQl = ""
DoCmd.SetWarnings False
DoCmd.RunSQL "Delete * from Groupe"
While Not Rst.EOF
Compteur = Compteur + 1
If Compteur > Nbr_Enreg Then 'A t on atteint les x% d'enreg
Compteur = 1 'Si oui alors on replace le
compteur a 1
Lettre = Chr(Asc(Lettre) + 1) 'On Calcul de la lettre suivante
End If
StrSQl = "INSERT INTO Groupe ( N°, Nom, Note1, Note2, Note3,
moyenne, Groupe ) "
StrSQl = StrSQl & "SELECT " & Rst("N°") & ",'" & Rst("Nom") &
"', " & Rst("Note1") & ", " & Rst("Note2") & ", " & Rst("Note3") & ", "
& Replace(Rst("moyenne"), ",", ".") & ", '" & Lettre & "' AS Groupe ;"
DoCmd.RunSQL StrSQl
Rst.MoveNext
Wend
DoCmd.SetWarnings True
Set Db = Nothing
Rst.Close
Set Rst = Nothing

End Sub




Ben non aprés reflexion c'est pas bon :-(
Parce qu'a chaque requete je prend 25 % de ce qui reste sans affectation
de groupe et non pas 25 % de tous les éléves.
Faut chercher autre chose désolé ;-)
Salut Girard
Voici une solution en 4 requetes a faire passer dans l'ordre
A la fin tu a une table avec ton code groupe A,B,C ou D .Reste a faire
l'état qui va bien
Requête 'moyenne'
SELECT Tblnotes2.N°, Tblnotes2.Nom, Tblnotes2.Note1, Tblnotes2.Note2,
Tblnotes2.Note3, ([Note1]+[Note2]+[note3])/3 AS moyenne
FROM Tblnotes2
ORDER BY ([Note1]+[Note2]+[note3])/3 DESC;
C'est sur cette requête que s'appuient les suivantes
Creation de la table avec le code groupe "A"
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "A" AS Groupe INTO Groupe
FROM Moyenne;
Ajout des code groupe "B"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "B" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;
Ajout des code groupe "C"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "C" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;
Ajout des code groupe "D"
INSERT INTO Groupe ( N°, Nom, Note1, Note3, moyenne, Groupe )
SELECT TOP 25 PERCENT Moyenne.N°, Moyenne.Nom, Moyenne.Note1,
Moyenne.Note3, Moyenne.moyenne, "D" AS Groupe
FROM Moyenne LEFT JOIN Groupe ON Moyenne.N° = Groupe.N°
WHERE (((Groupe.N°) Is Null))
ORDER BY Moyenne.moyenne DESC;
A toi de tester .... ;-)
Bonjour,
Voici mon probleme:
J'ai une table et un formulaire qui me permettent d'enregistrer le nom
d'une personne ainsi que ses resultats a trois examens. (Je me suis
créer un champs qui fait la moyenne des trois examens)
Je voudrais etre capable de generer dans un etat 4 groupes. Exemple,
les 25% de ceux qui ont obtenu la meilleur moyenne aux 3 examens
appartiendrait au groupe A. Les 25% suivant au groupe B et ainsi de
suite...
Comment on fait pour faire ca????
Un gros merci à ceux ou celles qui vont m'aider- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -





Merci beaucoup de prendre le temps de m'aider

Peut-etre ma question va t'apparaitre basic, mais ou est-ce que je la
met la procedure que tu me propose?



Cette fonction il faut la copier dans un module. Puis l'exécuter soit en
étant dans le module ,dans la fonction et faire F5
Soit créer une macro qui va executer la fonction.
Cette fonction doit être modifiée en fonction de tes noms de tables et
de champs!
@+