Access TOTAUX

Fermé
enlérga - 9 juin 2008 à 11:29
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 - 13 juin 2008 à 12:33
Bonjour,

Bonjour,

J'ai un formulaire qui s'affiche après plusieurs filtres dans lequel il y a les champs:

Budget Prévisionnel (en k€)
Montant Commandé
Montant Réceptionné
Reste à Réceptionner

Qui sont des sommes voici les expressions :
=Somme([Budget Prévisionnel (en k€)])
=Somme([Montant Commandé])
=Somme([Montant Réceptionné])
=Somme([Reste à Réceptionner])

Donc selon ce que l'on rempli dans les filtres avant l'affichage du formulaire, le résultat sera différent.

Il y a un champ de la table qui s'appelle C/I ( Charge ou investissement), un C pour charge et un I pour Inverstissement.

Ce que je voudrais c'est couper les totaux en deux, c'est à dire faire les totaux Budget prév montant commandé ... quand c'est des charges (C), et faire les totaux quand c'est des Investissment (I).

Il faut surement mettre une condition mais je vois pas...car j'utilise pas de requête je tape les expressions direct dans le Source Contrôle

Merci D'avance !

7 réponses

LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
9 juin 2008 à 22:27
Tu dois faire deux champs, que tu totaliseras, le premier s'appelerait par exemple MontantC et dirait VraiFaux([C/I]="I";[Montant];0) et l'autre l'inverse...
0
Si on prend l'exemple du Montant Commandé:

je créer un champ sur le formulaire appelé MontantCom, je met en source controle de ce champ
=somme([Montant Commandé])

Mais Je sais pas ou entrer cette expression : VraiFaux([C/I]="I";[Montant Commandé];0)
Car le champ n'est pas relier à une requête, je met seulement comme source du champ : =somme...
0
Si tu veux je veux le faire de cette manière:

CHARGE

Budget Prévisionnel (en k€) [=Somme([Budget Prévisionnel (en k€)]) ]
Montant Commandé [=Somme([Montant Commandé])]
Montant Réceptionné [ =Somme([Montant Réceptionné])]
Reste à Réceptionner [=Somme([Reste à Réceptionner])]

INVEST

Budget Prévisionnel (en k€) [=Somme([Budget Prévisionnel (en k€)]) ]
Montant Commandé [=Somme([Montant Commandé])]
Montant Réceptionné [ =Somme([Montant Réceptionné])]
Reste à Réceptionner [=Somme([Reste à Réceptionner])]
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
10 juin 2008 à 16:44
C'est dans le détail qu'il faut mettre ce que je t'ai écrit
0
Si je dois faire le total de "Montant1" pour les Charges, j'ai mi dans le detail:

SommeMontant1C [ VraiFaux([C/I]="I";[Montant1];0] <====== ceci tapé dans le champ

Mais je vois pas à quel endroit on fait la somme, car juste comme ça il me met ce message d'erreur: #Nom ?
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
11 juin 2008 à 12:40
C'est Montant1 qui n'existe pas.

Tu crées ce champ Montant1 das le détail ([ VraiFaux([C/I]="I";[MontantReceptionné];0]

Et dans le pied tu fais la somme de Montant1
0
Désolé de t'ennuyer encore avec ça...mais j'y arrive pas

Prenons un seul terme par exemple "Montant commandé" que je dois totaliser sur un même formulaire en séparant les Charges (C) de l'Investissement (I).

Je créer un champs dans Detail appelé "MontantReceptionnéCharge", je lui met comme Source contrôle:
(VraiFaux([C/I]="I";[Montant Receptionné];0)

Et dans le pied de formulaire: je met =Somme([MontantReceptionnéCharge])

Comme ça, ça marche pas!
De plus je ne veux pas avoir le champs "MontantReceptionnéCharge" dans mon formulaire !
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
11 juin 2008 à 15:02
Alors crée le dans la requête sur laquelle est basée l'état, tu résoudras les deux problèmes en même temps!!!

Au pire, si jamais tu es obligé de mettre ce champ dans le détail pour qu'Access fasse le total, mets "Non" dans sa propriété "Visible".
0
J'ai ajouté une colonne dans la requête: MontantReceptCharge
avec comme critère: VraiFaux([C/I]="C";[Montant Réceptionné];0)

au lancement du formulaire, il me demande d'entrer la valeur du paramètre "MontantReceptCharge" et celle de "C/I"
car MontantReceptCharge n'est pas dans la table !!
Si j'ajoute MontantReceptCharge dans la table il demande toujours la valeur du paramètre "C/I"...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
12 juin 2008 à 13:42
Ca n'est pas un critère du tout!!!! C'est ton champ, justement.

Dans le champ tu dois avoir MontantReceptCharge: VraiFaux([C/I]="C";[Montant Réceptionné];0)
0
oK !
Effectivement comme ça, ça marche beaucoup mieux :)

Dernière chose ! Pourrais-tu m'éxpliquer les différents termes de cette expression:
VraiFaux([C/I]="C";[critère];0)

VraiFaux? le '0' a la fin??

Merci bien .
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
12 juin 2008 à 17:02
VraiFaux veut dire SI, mais le terme est "réservé" par VB (En SQL, VraiFaux s'écrit Iif - avec deux i, pour différencier du If)

Donc Si la valeur du champ C/I est C, on prend la valeur du champ MontantReceptionné, sinon on prend Zéro.

Vont donc figurer dans ce champ les montants de toutes les lignes de détail pour lesquelle C/I = C.

Pour récupérer Le montant des champs des lignes pour lesquelles C/I est I, on avait deux choix:
VraiFaux([C/I]="I";[Montant Réceptionné];0)

Ou alors, plus rapide à taper:
MontantRéceptionné - MontantReceptCharge...
0
okok, Merci de l'éxplication!

Car je pense que le tout n'est pas de rentrer l'expression toute faite, mais de la comprendre et de pouvoir la réutiliser !

Merci encore Bon Week End :)
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
13 juin 2008 à 12:33
Alors là, c'est sûrement pas moi qui vais te dire le contraire!!!
0