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

Aide sur DSum SVP

9 réponses
Avatar
Emilie
Bonjour à toutes et à tous ,

Voilà j'aimerais avoir un petit coup de main sur la fonction DSum que je
connais très mal ( pour ne pas dire pas du tout ;-) )
Dabns mon appli, j'ai un champs "Prix " dans mon sousformulaire inséré au
form principal ; dans ce champs, je saisie des prix et cela pour chaque
enregistrement ; dans mon formulaire principal, j'ai un champs " Total " ;
j'aimerais que celui-ci me calcule la somme du champs " Prix " pour chaque
enregistrement et le rajoute au fur et à mesure ; ex ; Client1 " Prix " =
100 ?
Cliennt 2 " Prix" = 250 ?

J'aimerais, arrivé au client 2, que mon champs " Total " qui est dans mon
form principal m'indique 350 ? ( 100 + 250 ) ; si le Client 3 à dans mon
champs " Prix " 150 ?, mon champs "Total" devriat m'indiquer 500 ? et ainsi
de suite

Merci de votre aide

A+

Emilie

9 réponses

Avatar
Jessy Sempere [MVP]
Bonjour

Ce que tu peux faire, c'est créer une zone de texte dans le pied de
formulaire
de ton sous formulaire et comme source contrôle, tu lui mets :

=Somme([TonChampPrixDuSousFormulaire])

Ensuite dans ton formulaire principale, tu mets une zone de texte
avec comme source contrôle :

=TonSousFormulaire.Formulaire!TaZoneDuSousFormulaire

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Emilie" a écrit dans le message news:

Bonjour à toutes et à tous ,

Voilà j'aimerais avoir un petit coup de main sur la fonction DSum que je
connais très mal ( pour ne pas dire pas du tout ;-) )
Dabns mon appli, j'ai un champs "Prix " dans mon sousformulaire inséré au
form principal ; dans ce champs, je saisie des prix et cela pour chaque
enregistrement ; dans mon formulaire principal, j'ai un champs " Total " ;
j'aimerais que celui-ci me calcule la somme du champs " Prix " pour chaque
enregistrement et le rajoute au fur et à mesure ; ex ; Client1 " Prix " > 100 ?
Cliennt 2 " Prix" = 250 ?

J'aimerais, arrivé au client 2, que mon champs " Total " qui est dans mon
form principal m'indique 350 ? ( 100 + 250 ) ; si le Client 3 à dans mon
champs " Prix " 150 ?, mon champs "Total" devriat m'indiquer 500 ? et
ainsi

de suite

Merci de votre aide

A+

Emilie




Avatar
Emilie
Bonjour,

Jessy Sempere [MVP]...
wrote:
Bonjour

Ce que tu peux faire, c'est créer une zone de texte dans le pied de
formulaire
de ton sous formulaire et comme source contrôle, tu lui mets :

=Somme([TonChampPrixDuSousFormulaire])

Ensuite dans ton formulaire principale, tu mets une zone de texte
avec comme source contrôle :

=TonSousFormulaire.Formulaire!TaZoneDuSousFormulaire


Il me semble avoir déjà essayé quelque chose comme ça sans succès ; de toute
façon j' essaie et je reviens te tenir au courant.

Merci de ton aide

A+

Emilie

Avatar
Emilie
Re Jessy

Donc c'est bien ce que je disais, ça ne fonctionne pas ; en fait ça
m'additionne les eventuels montants que j'ai à l'interieur d'un même
enregistrement ; moi, ce que j'aimerais c'est que cela m'additionne *tous*
les enregitrements :

Cde 1 Mr Machin Champs "Prix " 0 ? ( à ce moment là, ma zone
de texte de mon form m'indique : 150 ? )
enregistrement suivant
Cde 2 Mr Bidule Champs "Prix " = 100 ? ( à ce moment là,
j'aimerais que ma zone de texte du form principal indique : 250 ? )

Comprends tu ce que je veux dire ?

Merci

A+

Emilie
Avatar
enrelation
La formule de Jessy est correcte.

Problème de syntaxe ou bien d'endroit (pied de formulaire) ou encore de nom
de champ utilisé.


Pierre

http://www.access-developpement.com



"Emilie" a écrit dans le message de
news:%
Re Jessy

Donc c'est bien ce que je disais, ça ne fonctionne pas ; en fait ça
m'additionne les eventuels montants que j'ai à l'interieur d'un même
enregistrement ; moi, ce que j'aimerais c'est que cela m'additionne *tous*
les enregitrements :

Cde 1 Mr Machin Champs "Prix " 0 ? ( à ce moment là, ma zone
de texte de mon form m'indique : 150 ? )
enregistrement suivant
Cde 2 Mr Bidule Champs "Prix " = 100 ? ( à ce moment là,
j'aimerais que ma zone de texte du form principal indique : 250 ? )

Comprends tu ce que je veux dire ?

Merci

A+

Emilie




Avatar
Emilie
Bonjour.........


enrelation... Wrote :

La formule de Jessy est correcte.


Je n'ai pas dit le contraire et de toute façon je ne me permettrais pas ;
toujours est il que cela ne correspond pas à ce que je cherche

Problème de syntaxe ou bien d'endroit (pied de formulaire) ou encore
de nom de champ utilisé.




Honnêtement je ne crois pas ; ma syntaxe est bonne, le nom de mes champs
bien respecté et l'endroit aussi ( je mets bien mon controle dans le pied de
formulaire ).
Par contre, il est possible que j'ai mal formulé ma demande et que je me
sois mal exprimé .

A+

Emilie


Avatar
Eric
Bonjour Emilie

Ca va être un peu long l'explication mais tiens bon !!!

Transposons ton cas:
J'ai un form principal sur des clients et en sous formulaire des factures
Je veux afficher au pied du formulaire principal, le total des factures
du client et le total cumulé des factures chaque fois que je passe à
l'enregistrement suivant du formulaire principal(Total Client1+Total
Client2+...) Ok, tu me suis ?



Pour résoudre le prob, faire de la maniere suivante:
Mettre en pied du formulaire principal, 2 zones de texte indépendantes,
par ex :Total1 et Total2, Total1 donne le total du client visualisé,
Total2 le total des clients en avancant dans le jeu d'enregistrement
comme en reculant.
La source de données de Total1 est la suivante :
=SomDom("[MontantHT]";"tFacture";"NumClient=" & [NumClient])

La valeur de Total2 va être définie en VBA

Dans le module du formulaire principal, il faut définir les variables qui
seront utilisées lors de tes déplacements dans le jeu d'enregistrements
Elles sont de portée Module donc à mettre sous le Option Compare Database

Dim SousTotal As Currency, positionAVANT As Integer
Dim positionAPRES As Integer
Dim OldValeur As Currency, NewValeur As Currency

PositionAVANT et Position APRES sont des variables qui vont stocker le n°
de l'enregistrement courant et donc permettre de mettre à jour Total2 si
tu avances ou reviens en arrière dans le jeu. Ainsi le Total2 affiché est
toujours bon.
SousTotal est le cumul des factures des clients qui remplira le Total2.
OldValeur et NewValeur : variables qui stockent les valeurs cumulées de
chaque client et donc corrigent le SousTotal.

Sur l'évènement Load(Chargement) de ton formulaire principal, mettre la
proc évènementielle suivante:

Private Sub Form_Load()
positionAVANT = 0: positionAPRES = 0
'on initialise les positions courantes
End Sub

Sur l'évènement Activation(Current) de ce formulaire principal:

Private Sub Form_Current()
Me.Refresh
'On initialise OldValeur à la NewValeur qui n'étant pas définie
'la 1ere fois vaut 0
OldValeur = NewValeur
positionAVANT = positionAPRES
'On stocke dans positionAPRES le n° de l'enregistrement Courant
positionAPRES = Me.CurrentRecord
'On affecte à NewValeur la valeur de Total1. J'ai mis la fonction Nz
() dans le cas où Total1 est Null (pas défini).
NewValeur = Nz(Me.Total1)
'Si on avance dans le jeu (ou dans le formulaire, c pareil)
If positionAPRES > positionAVANT Then

SousTotal = SousTotal + NewValeur ' on incrémente

ElseIf positionAPRES < positionAVANT Then ' si on revient en arriere
SousTotal = SousTotal - OldValeur ' on soustrait la valeur de
l'enregistrement que l'on quitte avant d'arriver sur celui qu'on désire
Else
SousTotal = Nz(Me.Total1)
End If
Me!Total2 = SousTotal ' on met à jour Total2, c a d le cumul des
totaux clients
End Sub

Enfin sur le SOUS-formulaire, sur la procédure : Après Mise à jour
tu mets le code suivant :

Private Sub Form_AfterUpdate()
Me.Parent.Requery
End Sub


Voila, en espérant ne pas avoir trop compliqué les chôses et que ca
répond en partie à ton problème.

Bon Week-end

A+
Eric





"Emilie" écrivait
news::

Bonjour.........


enrelation... Wrote :

La formule de Jessy est correcte.


Je n'ai pas dit le contraire et de toute façon je ne me permettrais
pas ; toujours est il que cela ne correspond pas à ce que je cherche

Problème de syntaxe ou bien d'endroit (pied de formulaire) ou encore
de nom de champ utilisé.




Honnêtement je ne crois pas ; ma syntaxe est bonne, le nom de mes
champs bien respecté et l'endroit aussi ( je mets bien mon controle
dans le pied de formulaire ).
Par contre, il est possible que j'ai mal formulé ma demande et que je
me sois mal exprimé .

A+

Emilie






Avatar
Emilie
Bonsoir Eric,

Eric... Wrote:

Ca va être un peu long l'explication mais tiens bon !!!


Je tiens bon ! ! ! !
Merci beaucoup pour ces explications ; j'ai tout mon dimanche pour me
pencher dessus ! !
En tout cas, tu m'as donné du travail ! ! !

Merci de cette aide

A+

Emilie

Avatar
Eric
Bonjour Emilie

"Emilie" écrivait



j'ai tout mon dimanche pour me
pencher dessus ! !


J'espère que tu as utilisé la journée pour sortir, d'Access, quand même. Ca
serait dommage de ne pas profiter du printemps !


Bon courage pour la suite
A+
Eric

Avatar
Emilie
Bonjour Eric,

Eric... Wrote :

Bonjour Emilie


J'espère que tu as utilisé la journée pour sortir, d'Access, quand
même. Ca serait dommage de ne pas profiter du printemps !


Oui pas de soucis ; je ne m'enferme pas non plus pendant des heures pour
rester devant Access ( surtout quand il fait beau ! )
Merci encore de ton
aide........................................................................
..........................même si j'ai eu des soucis ;-)

A+

Emilie