Bonjour,
J'ai une requ=EAte regroupement pour tirer le CA par mois:
SELECT Month([JourTache]) AS MoisTache, Year([JourTache])=20
AS AnneeTache, Sum(tblSaisieHeures.HEURES) AS=20
SommeDeDuree, Sum([Heures]*[Tarif_Heure]) AS CoutRevient,=20
Format([JourTache],"mmmm") AS Expr1
FROM tblSaisieHeures INNER JOIN tblcontrats ON=20
tblSaisieHeures.NCONTRAT =3D tblcontrats.NCONTRAT
GROUP BY Month([JourTache]), Year([JourTache]), Format
([JourTache],"mmmm")
ORDER BY Month([JourTache]), Year([JourTache]) DESC;
C'est bien car je peux comparer les chiffres d'affaires.
J'aimerai savoir comment rajouter une fonction qui me cr=E9e=20
une table par ann=E9e avec le CA par mois, sans devoir le=20
cr=E9er =E0 l'avance et que les chiffres se saisissent dans=20
cette table sans autre op=E9ration.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric
Bonjour Luis,
En supposant que j'ai bien compris, tu souhaites à partir de cette requête créer 2 tables ou + regroupant les infos par année. C'est ca ?
Si c'est le cas, tu peux créer une procédure comme celle-ci: (Charger les référence Microsoft DAO 3.x Library)
On vérifie si les tables n'existent pas au lancement de cette procédure. (les tables seront nommées Recap suivi du rang de l'année)
Sub CreationTableRecap() Dim strSQL As String, strSQL1 As String Dim rst As DAO.Recordset, tbl As DAO.TableDef ' on verifie si les tables n'existent pas déjà ' si Oui, on les supprime For Each tbl In CurrentDb.TableDefs If Left(tbl.Name, 5) = "Recap" Then CurrentDb.TableDefs.Delete tbl.Name End If Next tbl ' Recherche des années servant de suffixe aux tables à créer strSQL1 = "SELECT DISTINCT Year([JourTache]) AS Annee " strSQL1 = strSQL1 & "FROM tblSaisieHeures ORDER BY Year ([datefacture]);" Set rst = CurrentDb.OpenRecordset(strSQL1) ' Création des dites tables : Ex Recap2003, Recap2004 ... While Not rst.EOF strSQL ="Month([JourTache]) AS MoisTache, Year([JourTache]) " strSQL = strSQL & "AS AnneeTache, Sum(tblSaisieHeures.HEURES) AS " strSQL = strSQL & "SommeDeDuree, Sum([Heures]*[Tarif_Heure]) AS CoutRevient, " strSQL = strSQL & "Format([JourTache],"mmmm") AS Expr1 INTO RECAP" & rst(0) & " " strSQL = strSQL & "FROM tblSaisieHeures INNER JOIN tblcontrats ON " strSQL = strSQL & "tblSaisieHeures.NCONTRAT = tblcontrats.NCONTRAT " strSQL = strSQL & "GROUP BY Month([JourTache]), Year([JourTache]), " strSQL = strSQL & "Format([JourTache],"mmmm") " strSQL = strSQL & "Having year([JourTache])=" & rst(0) & " " strSQL = strSQL & "ORDER BY Month([JourTache]), Year([JourTache]) DESC; CurrentDb.Execute strSQL rst.MoveNext Wend Set rst = Nothing End Sub
J'ai utilisé ton code sql sans le retravailler, juste les modifs pour en faire une requête de création de table. Donc à toi de voir es champs inutiles à conserver ...
A+ Eric
"Luis" écrivait news:099e01c47aeb $5b315740$:
Bonjour, J'ai une requête regroupement pour tirer le CA par mois:
SELECT Month([JourTache]) AS MoisTache, Year([JourTache]) AS AnneeTache, Sum(tblSaisieHeures.HEURES) AS SommeDeDuree, Sum([Heures]*[Tarif_Heure]) AS CoutRevient, Format([JourTache],"mmmm") AS Expr1 FROM tblSaisieHeures INNER JOIN tblcontrats ON tblSaisieHeures.NCONTRAT = tblcontrats.NCONTRAT GROUP BY Month([JourTache]), Year([JourTache]), Format ([JourTache],"mmmm") ORDER BY Month([JourTache]), Year([JourTache]) DESC;
C'est bien car je peux comparer les chiffres d'affaires. J'aimerai savoir comment rajouter une fonction qui me crée une table par année avec le CA par mois, sans devoir le créer à l'avance et que les chiffres se saisissent dans cette table sans autre opération.
Merci pour vos conseils. Luis
Bonjour Luis,
En supposant que j'ai bien compris, tu souhaites à partir de cette
requête créer 2 tables ou + regroupant les infos par année. C'est ca ?
Si c'est le cas, tu peux créer une procédure comme celle-ci:
(Charger les référence Microsoft DAO 3.x Library)
On vérifie si les tables n'existent pas au lancement de cette procédure.
(les tables seront nommées Recap suivi du rang de l'année)
Sub CreationTableRecap()
Dim strSQL As String, strSQL1 As String
Dim rst As DAO.Recordset, tbl As DAO.TableDef
' on verifie si les tables n'existent pas déjà
' si Oui, on les supprime
For Each tbl In CurrentDb.TableDefs
If Left(tbl.Name, 5) = "Recap" Then
CurrentDb.TableDefs.Delete tbl.Name
End If
Next tbl
' Recherche des années servant de suffixe aux tables à créer
strSQL1 = "SELECT DISTINCT Year([JourTache]) AS Annee "
strSQL1 = strSQL1 & "FROM tblSaisieHeures ORDER BY Year
([datefacture]);"
Set rst = CurrentDb.OpenRecordset(strSQL1)
' Création des dites tables : Ex Recap2003, Recap2004 ...
While Not rst.EOF
strSQL ="Month([JourTache]) AS MoisTache, Year([JourTache]) "
strSQL = strSQL & "AS AnneeTache, Sum(tblSaisieHeures.HEURES) AS "
strSQL = strSQL & "SommeDeDuree, Sum([Heures]*[Tarif_Heure]) AS
CoutRevient, "
strSQL = strSQL & "Format([JourTache],"mmmm") AS Expr1 INTO RECAP" &
rst(0) & " "
strSQL = strSQL & "FROM tblSaisieHeures INNER JOIN tblcontrats ON "
strSQL = strSQL & "tblSaisieHeures.NCONTRAT = tblcontrats.NCONTRAT "
strSQL = strSQL & "GROUP BY Month([JourTache]), Year([JourTache]), "
strSQL = strSQL & "Format([JourTache],"mmmm") "
strSQL = strSQL & "Having year([JourTache])=" & rst(0) & " "
strSQL = strSQL & "ORDER BY Month([JourTache]), Year([JourTache])
DESC;
CurrentDb.Execute strSQL
rst.MoveNext
Wend
Set rst = Nothing
End Sub
J'ai utilisé ton code sql sans le retravailler, juste les modifs pour en
faire une requête de création de table. Donc à toi de voir es champs
inutiles à conserver ...
Bonjour,
J'ai une requête regroupement pour tirer le CA par mois:
SELECT Month([JourTache]) AS MoisTache, Year([JourTache])
AS AnneeTache, Sum(tblSaisieHeures.HEURES) AS
SommeDeDuree, Sum([Heures]*[Tarif_Heure]) AS CoutRevient,
Format([JourTache],"mmmm") AS Expr1
FROM tblSaisieHeures INNER JOIN tblcontrats ON
tblSaisieHeures.NCONTRAT = tblcontrats.NCONTRAT
GROUP BY Month([JourTache]), Year([JourTache]), Format
([JourTache],"mmmm")
ORDER BY Month([JourTache]), Year([JourTache]) DESC;
C'est bien car je peux comparer les chiffres d'affaires.
J'aimerai savoir comment rajouter une fonction qui me crée
une table par année avec le CA par mois, sans devoir le
créer à l'avance et que les chiffres se saisissent dans
cette table sans autre opération.
En supposant que j'ai bien compris, tu souhaites à partir de cette requête créer 2 tables ou + regroupant les infos par année. C'est ca ?
Si c'est le cas, tu peux créer une procédure comme celle-ci: (Charger les référence Microsoft DAO 3.x Library)
On vérifie si les tables n'existent pas au lancement de cette procédure. (les tables seront nommées Recap suivi du rang de l'année)
Sub CreationTableRecap() Dim strSQL As String, strSQL1 As String Dim rst As DAO.Recordset, tbl As DAO.TableDef ' on verifie si les tables n'existent pas déjà ' si Oui, on les supprime For Each tbl In CurrentDb.TableDefs If Left(tbl.Name, 5) = "Recap" Then CurrentDb.TableDefs.Delete tbl.Name End If Next tbl ' Recherche des années servant de suffixe aux tables à créer strSQL1 = "SELECT DISTINCT Year([JourTache]) AS Annee " strSQL1 = strSQL1 & "FROM tblSaisieHeures ORDER BY Year ([datefacture]);" Set rst = CurrentDb.OpenRecordset(strSQL1) ' Création des dites tables : Ex Recap2003, Recap2004 ... While Not rst.EOF strSQL ="Month([JourTache]) AS MoisTache, Year([JourTache]) " strSQL = strSQL & "AS AnneeTache, Sum(tblSaisieHeures.HEURES) AS " strSQL = strSQL & "SommeDeDuree, Sum([Heures]*[Tarif_Heure]) AS CoutRevient, " strSQL = strSQL & "Format([JourTache],"mmmm") AS Expr1 INTO RECAP" & rst(0) & " " strSQL = strSQL & "FROM tblSaisieHeures INNER JOIN tblcontrats ON " strSQL = strSQL & "tblSaisieHeures.NCONTRAT = tblcontrats.NCONTRAT " strSQL = strSQL & "GROUP BY Month([JourTache]), Year([JourTache]), " strSQL = strSQL & "Format([JourTache],"mmmm") " strSQL = strSQL & "Having year([JourTache])=" & rst(0) & " " strSQL = strSQL & "ORDER BY Month([JourTache]), Year([JourTache]) DESC; CurrentDb.Execute strSQL rst.MoveNext Wend Set rst = Nothing End Sub
J'ai utilisé ton code sql sans le retravailler, juste les modifs pour en faire une requête de création de table. Donc à toi de voir es champs inutiles à conserver ...
A+ Eric
"Luis" écrivait news:099e01c47aeb $5b315740$:
Bonjour, J'ai une requête regroupement pour tirer le CA par mois:
SELECT Month([JourTache]) AS MoisTache, Year([JourTache]) AS AnneeTache, Sum(tblSaisieHeures.HEURES) AS SommeDeDuree, Sum([Heures]*[Tarif_Heure]) AS CoutRevient, Format([JourTache],"mmmm") AS Expr1 FROM tblSaisieHeures INNER JOIN tblcontrats ON tblSaisieHeures.NCONTRAT = tblcontrats.NCONTRAT GROUP BY Month([JourTache]), Year([JourTache]), Format ([JourTache],"mmmm") ORDER BY Month([JourTache]), Year([JourTache]) DESC;
C'est bien car je peux comparer les chiffres d'affaires. J'aimerai savoir comment rajouter une fonction qui me crée une table par année avec le CA par mois, sans devoir le créer à l'avance et que les chiffres se saisissent dans cette table sans autre opération.
Merci pour vos conseils. Luis
Eric
.../...
Corriger Year([DateFacture]) par Year([JourTache]) dans strSQL1.
En espérant qu'il n' y a pas d'autres erreurs
Eric
.../...
Corriger Year([DateFacture]) par Year([JourTache]) dans strSQL1.
Tu ferais bien de continuer ta nuit, tu en as grandement besoin, ou alors arrête le petit blanc de 9h. -- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Eric" a écrit dans le message de news:
arg !!!!
Bonjour Eric.
Tu ferais bien de continuer ta nuit, tu en as grandement besoin, ou alors
arrête le petit blanc de 9h.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Eric" <f_framZZ@hotmail.com> a écrit dans le message de
news:XnF953D5A6CFF723fframZZhotmailcom@207.46.248.16...
Tu ferais bien de continuer ta nuit, tu en as grandement besoin, ou alors arrête le petit blanc de 9h. -- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Eric" a écrit dans le message de news:
arg !!!!
Eric
Bonjour Raymond,
Me suis trompé où car là je vois pas. Merci de ta réponse
Tu ferais bien de continuer ta nuit, tu en as grandement besoin, ou alors arrête le petit blanc de 9h.
Raymond [mvp]
C'était pour les 3 posts successifs, je n'ai rien lu.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Eric" a écrit dans le message de news:
Bonjour Raymond,
Me suis trompé où car là je vois pas. Merci de ta réponse
Eric
C'était pour les 3 posts successifs, je n'ai rien lu.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Eric" <f_framZZ@hotmail.com> a écrit dans le message de
news:XnF953D712F28418fframZZhotmailcom@207.46.248.16...
Bonjour Raymond,
Me suis trompé où car là je vois pas.
Merci de ta réponse
C'était pour les 3 posts successifs, je n'ai rien lu.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access.vba.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Eric" a écrit dans le message de news:
Bonjour Raymond,
Me suis trompé où car là je vois pas. Merci de ta réponse