Tableau à double entrée
Le
arnaud

Bonjour,
J'ai un tableau Excel que j'essaie de réaliser avec access Sans Succès..
J'ai une table CAMARGE qui reprend les CA et la marge par client et par
mois.
Je veux créer une requete qui m'affiche par mois le CA et la Marge (pas de
tableau croisé dynamique)
exemple :
juillet aout Septembre Octobre .
CA 10 15 10 41 .
MARGE 52 54 84 88
Après plusieurs essais , je ne vois pas comment faire !
(Je veux que mes colonnes aillent de juillet à Juin de l'année suivante
(suivant notre exercice comptable))
Merci de votre aide !!
Arnaud
J'ai un tableau Excel que j'essaie de réaliser avec access Sans Succès..
J'ai une table CAMARGE qui reprend les CA et la marge par client et par
mois.
Je veux créer une requete qui m'affiche par mois le CA et la Marge (pas de
tableau croisé dynamique)
exemple :
juillet aout Septembre Octobre .
CA 10 15 10 41 .
MARGE 52 54 84 88
Après plusieurs essais , je ne vois pas comment faire !
(Je veux que mes colonnes aillent de juillet à Juin de l'année suivante
(suivant notre exercice comptable))
Merci de votre aide !!
Arnaud
Salut Arnaud
Si les nom des mois sont déjà des champs de ta table et que tu dispose
d'un code pour distinguer ce qui est ca de ce qui est marge alors je ferais
Select IDClient,iif([Code_CA="CA";"CA";"Marge") as
Lib,Janvier,fevrier,..,Decembre, form CAmarge Order by IdClient,Lib;
@+
Si tes mois sont dans la table au format mm/aa alors tu n'as d'autre
choix que de passer par une requete croisée ;-)
Peux tu donner le detail de ta table
où je peux la récupérer.
Par contre, je ne comprend pas ce que donne ton code ...
On ne peux pas le faire avec le générateur de requete Access ??
Je vais faire des tests de ton code mais je ne comprend pas le principe..
Merci de votre aide.
Arnaud
"Fabien"
J'ai les champs suivant dans la table CA_MARGE
ANNEE MOIS (exemple 2008-01)
COMMERCIAL (je souhaite ajouter un filtre ensutie sur cette requete par
rapport à une Zone de Liste d'un formulaire)
CLIENT
CA HT BRUT
CA HT NET
MARGE BRUTE
MARGE NETTE
et je voudrais :
juillet aout Septembre Octobre
....
CA BRUT 10 15 10 41 ....
CA NET 9 13 9 38
MARGE BRUTE 52 54 84 88 ...
MARGE NETTE 52 54 84 88 ...
Je pense qu'il faut que je passe par plusieurs requetes d'analyse croisées
mais je ne sais pas comment les regrouper ensuite...
Merci de votre aide !
Arnaud
"Fabien"
Effectivement ru n'as pas le choix ;-)
Pour les 'regrouper' utiliste la fonction Union.
Pour cela aprés avoir sauvegarder test diverses requetes tu ouvre
l'outil de requettage, Tu ne choisi aucune table ni requete.
L'outil SQL apparait alors par défaut dans la barre d'outil
Tu clic dessus
Et tu saisi le code sql
Select (la liste des champs) from requeteanalysecroisee 1
Union
Select (la liste des champs) from requeteanalysecroisée 2
et ainsi de suite.
Pour moi tes requetes devrais avoir les champs
Commercial,Libelle,janvier,fevrier,....
Libelle contenant l'intitulé 'CA Ht Brut' ou 'Ca HT Net' Ou 'Marge
Brute' ou 'Marge Net' selon les diverses requetes
Il faut impérativement que le nombre et l'ordre des champs soit le même
dans chaque requete.
Voilà
Pour completer
Requete1
SELECT ca.Commercial, "CA Brut" AS Libellé, Format([Annee-mois],"mmmm")
AS Mois, Sum(ca.[Ca Brut]) AS Ca_Brut
FROM ca
GROUP BY ca.Commercial, "CA Brut", Format([Annee-mois],"mmmm");
Requete2
SELECT ca.Commercial, "CA net" AS Libellé, Format([Annee-mois],"mmmm")
AS Mois, Sum(ca.[Ca Net]) AS Ca_net
FROM ca
GROUP BY ca.Commercial, "CA net", Format([Annee-mois],"mmmm");
Requête1_Analyse croisée
TRANSFORM Sum(Requête1.Ca_Brut) AS SommeDeCa_Brut
SELECT Requête1.Commercial, Requête1.Libellé
FROM Requête1
GROUP BY Requête1.Commercial, Requête1.Libellé
PIVOT Requête1.Mois;
Requete2_Analyse croisée
TRANSFORM Sum(Requete2.Ca_net) AS SommeDeCa_net
SELECT Requete2.Commercial, Requete2.Libellé
FROM Requete2
GROUP BY Requete2.Commercial, Requete2.Libellé
PIVOT Requete2.Mois;
et
SELECT *
FROM [Requête1_Analyse croisée]
Union
Select *
from [Requete2_Analyse croisée];
Mais je te le redis Il faut que le nombre et l'ordre des champs dans tes
requetes croisées soient rigoureusement identiques.
Je pense au Nom de mois, il doivent exister dans toute tes requetes
Le filtre sur commercial ne se faisant que sur la requete d'union.
ex "select * from requeteUnion Where Commercial=" & me.listechoixcommercial
@+
J'essaie...
Merci !!
Arnaud
"Fabien"
Re
Restera a regler le probleme de l'ordre d'affichage des colonnes
contenant le nom de mois.
Un tri est alpha ou numérique. Dans ton cas les colonnes seront triées
par alpha ;-( donc Aout avant Janvier.
Donc laisse les colonnes se nommer aa/mm. le tri sera ok et lors de
l'impression tu traduis les aa/mm en Nom de mois et le tour est joué ;-)
Bon courage
A mon avis, il vaut mieux faire la requête union avant la requête
d'analyse croisée
A voir avec ces 2 requêtes suivantes.
La 1ère requête qui prépare les données nommée "ReqPrepare" :
SELECT COMMERCIAL, [ANNEE MOIS] AS DateEnr,
"CA Brut" AS Libelle, Sum([CA HT BRUT]) AS Valeur
FROM [CA_MARGE]
GROUP BY COMMERCIAL, [ANNEE MOIS]
UNION SELECT COMMERCIAL, [ANNEE MOIS], "CA Net",
Sum([CA HT NET])
FROM [CA_MARGE]
GROUP BY COMMERCIAL, [ANNEE MOIS]
UNION SELECT COMMERCIAL, [ANNEE MOIS], "Marge Brute",
Sum([MARGE BRUTE])
FROM [CA_MARGE]
GROUP BY COMMERCIAL, [ANNEE MOIS]
UNION SELECT COMMERCIAL, [ANNEE MOIS], "Marge Nette",
Sum([MARGE NETTE])
FROM [CA_MARGE]
GROUP BY COMMERCIAL, [ANNEE MOIS];
La 2ème qui donne le résultat
TRANSFORM First(Valeur) AS Valeur1
SELECT COMMERCIAL, Libelle
FROM ReqPrepare
GROUP BY COMMERCIAL, Libelle
ORDER BY COMMERCIAL, Libelle
PIVOT [ANNEE MOIS];
"arnaud"