Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/02/2012, 10h31   #1
Invité de passage
 
Homme Messaoud Rouabha
Étudiant
Inscription : janvier 2012
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Messaoud Rouabha
Localisation : Algérie

Informations professionnelles :
Activité : Étudiant
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2012
Messages : 18
Points : 3
Points : 3
Par défaut afficher le reste à payer pour chaque commande

Bonjours à tous.

Dans une base de données Access j'ais deux tables tblCommandes et tblVersements qui se présentent comme suit:

tblCommandes
Code :
1
2
3
4
5
6
7
NCommande                    Total
1                            50 000
2                            400 000
3                            300 000
4                            200 000
5                            90 000
tblVesements
Code :
1
2
3
4
5
6
7
8
9
10
11
12
NVersement                  Vesement
1                           10 000
2                           20 000
3                           40 000
4                           100 000
5                           30 000
6                           70 000
7                           25 000
8                           400 000
9                           55 000
10                          130 000
Les versements se font pour payer les commandes l'une après l'autre.
Comment faire pour afficher dans une requête le reste à payer pour chaque commende c.à.d nous devons avoir (pour notre exemple) dans la requête ce qui suit:
Code :
1
2
3
4
5
6
7
NCommande                    Total                     Reste à payer
1                            50 000                    0
2                            400 000                   0
3                            300 000                   0
4                            200 000                   70 000
5                            90 000                    90 000
Faut il utiliser la somme cumulative ou ... j'attend les reponses.
mouhamadrouabha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2012, 17h03   #2
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 598
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 598
Points : 902
Points : 902
Bonjour

Ta structure n'est pas adaptée : il faudrait reprendre le numéro de commande dans les versement et établir une relation entre les tables.

Travailler par ordre chrono n'est pas une bonne méthode.
78chris est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/02/2012, 20h44   #3
Invité de passage
 
Homme Messaoud Rouabha
Étudiant
Inscription : janvier 2012
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Messaoud Rouabha
Localisation : Algérie

Informations professionnelles :
Activité : Étudiant
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2012
Messages : 18
Points : 3
Points : 3
Bon soir 'conseil' et merci pour votre réponse; mais les deux tables sont totalement indépendantes car chaque commande peut être payée en tranches ( Versements ).
De ce fait dans l'exemple précédant, la commande N 1 qui vaut 50 000 est payée en trois tranches ( Versements ):

Versement N 1 qui vaut 10 000
Versement N 2 qui vaut 20 000
Versement N 3 qui vaut 40 000
qui ont un total de 70 000 ( 50 000 pour payer la commande N 1 et 20 000 sera reporter pour la commande suivante N 2 ).
et ainsi de suite.
mouhamadrouabha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2012, 20h48   #4
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 598
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 598
Points : 902
Points : 902
Bonjour

Justement dans ce cas on fait une relation de 1 à n.
78chris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 08h04   #5
Invité de passage
 
Homme Messaoud Rouabha
Étudiant
Inscription : janvier 2012
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Messaoud Rouabha
Localisation : Algérie

Informations professionnelles :
Activité : Étudiant
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2012
Messages : 18
Points : 3
Points : 3
Bonjour 'Conseil'.

Vous n'avez pas bien compris mon problème.
les versements se font independemment des commandes, nous ne préciserons pas à chaque fois que nous saisissons une versement que tel versement concerne tel commande ce la est laisser à access de le déterminer. Il doit à chaque fois comparer la somme cumulative des commandes et la somme cumulative des versements et déterminer quelles sont les commandes qui ne sont pas encore payées en affichant le reste de chaqu'une.

j’espère que c'est claire; analyser bien les deux exemple précédents.
mouhamadrouabha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 08h06   #6
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 952
Points : 30 952
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

C'est clair, sauf qu'il faut bien savoir à quelle commande est lié le ou les versements.

Or ce qui n'est pas ton cas dans ton exemple, car il n'y a pas de notions d'ordres dans une table, si tu changes l'ordre, tout est faux.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 09h25   #7
Invité régulier
 
Femme
Inscription : février 2012
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : février 2012
Messages : 6
Points : 8
Points : 8
Citation:
Envoyé par 78chris Voir le message
Bonjour

Ta structure n'est pas adaptée : il faudrait reprendre le numéro de commande dans les versement et établir une relation entre les tables.

Travailler par ordre chrono n'est pas une bonne méthode.
Oui, je suis d'accord
glenngac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 10h49   #8
Invité de passage
 
Homme Messaoud Rouabha
Étudiant
Inscription : janvier 2012
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Messaoud Rouabha
Localisation : Algérie

Informations professionnelles :
Activité : Étudiant
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2012
Messages : 18
Points : 3
Points : 3
Mon problème est que je voudrais avoir le reste de chaque commande sans savoir aux quelles versements est liée.
je pense que nous devons passer par une fonction.
mouhamadrouabha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 10h53   #9
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 952
Points : 30 952
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Citation:
Envoyé par mouhamadrouabha Voir le message
Mon problème est que je voudrais avoir le reste de chaque commande sans savoir aux quelles versements est liée.
Comme il a été dit par tous les intervenants, ce n'est pas possible.
Une fonction n'y changera rien.

Tu as un problème de conception au départ, et ce n'est pas la faute d'Access, tu auras le même problème quelque soit la base de données.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 10h56   #10
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 598
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 598
Points : 902
Points : 902
Bonjour

Si tu n'utilises aucun des principes de la base de données, autant faire un tableau Excel où l'aspect topographique est la norme.

Comme le rappelle Philippe JOCHMANS, il n'y a pas d'ordre dans une table.
La certitude de prendre les commandes et les réglements dans le même ordre n'est donc pas présente.

Tes numéros de commande et de versement sont-ils des numéros auto et la clé primaire de chaque table ?
Si oui on peut les utiliser, si non, il manque une date dans chaque table ou autre moyen de tracer l'ordre des enregistrements.

Et à part par VBA, je ne vois pas de solution.
78chris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 06h11   #11
Invité de passage
 
Homme Messaoud Rouabha
Étudiant
Inscription : janvier 2012
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Messaoud Rouabha
Localisation : Algérie

Informations professionnelles :
Activité : Étudiant
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2012
Messages : 18
Points : 3
Points : 3
Oui les numéros des commandes et les numéros des versements sont des num auto et sont aussi les clés primaires des deux tables.
Pourriez vous me dire quelles sont les modifications à faire pour avoir les résultats voulus ( avec détails ).
J'attend des suggestions car je suis sure qu'il y a des solutions dans access.
mouhamadrouabha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 07h46   #12
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 952
Points : 30 952
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Citation:
Envoyé par mouhamadrouabha Voir le message
J'attend des suggestions car je suis sure qu'il y a des solutions dans access.
Comme il a été dit précedemment sans point commun pas de solutions.

Exemple :

Je prends la première commande (NumAuto = 1) dans ta première table, donc le premier versement devrait être (NumAuto = 1) dans la deuxième table, mais le deuxième versement appartient toujours à la première commande où est-ce le premier de la deuxième commande ?

A priori tu n'as aucun moyen de savoir, non ? Si c'est le cas, pas de solution.
Donc un problème de conception au départ.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 10h37   #13
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 188
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 188
Points : 2 823
Points : 2 823
Bonjour à tous,

Comme dit précédemment, le mieux est de passer de ta structure (souligné=clé primaire, #=clé étrangère) :
Commande(NCommande, Total, Reste à payer ...) ;
Versement(NVersement, Versement, ...).
à cette structure :
Commande(NCommande, Total, Reste à payer ...) ;
Versement(NVersement, #NCommande, Versement, ...).
Si tu ne veux (peux) pas, alors il te faudra passer par du code. Je ne connais pas VBA, mais l'algorithme devrait être le suivant :
Montant_Reliquat=0
Lecture Commande
EOF => fin fonction
Montant_Commande=Commande.Total
Montant_Versement=Montant_Reliquat
Boucle : lecture Versement
EOF => fin Boucle
Montant_Versement=Montant_Versement+Versement.Versement
Si Montant_Versement >= Montant_Commande
Alors Commande.Reste à payer = 0 ; update Commande ; Montant_Reliquat = Montant_Versement - Montant_Commande ; sortie Boucle
Sinon next Boucle
next Lecture Commande
Pas testé du tout... mais, je pense que tu peux comprendre l'idée, Mouhamadrouabha : à toi de la peaufiner...

Ensuite, une bonne âme codeuse pourra, peut-être, t'aider...
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 10h59   #14
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 598
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 598
Points : 902
Points : 902
Bonjour

Citation:
Envoyé par mouhamadrouabha Voir le message
J'attend des suggestions car je suis sure qu'il y a des solutions dans access.
Adapter les noms de tables, champs...
Code :
1
2
3
4
5
6
7
Requête1 nommée VersTot
SELECT Sum(Versements.montant) AS TotalVersements FROM Versements;
 
Requête2
SELECT cdes.N°, cdes.montant, CDbl(DSum("[montant]","cdes","N° <=" & [])) AS Cumul, IIf([Cumul]-[TotalVersements]<0,0,[Cumul]-[TotalVersements]) AS Solde_a_régler
FROM cdes, VersTot
ORDER BY cdes.N°;
Edit : simplification
Edit 2 : salut Richard, je ne t'avais pas vu
78chris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 12h12   #15
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 952
Points : 30 952
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

@78chris

J'ai du mal à comprendre ton cheminement, peux-tu détailler ?

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 12h35   #16
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 598
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 598
Points : 902
Points : 902
Bonjour

Ta question amène une correction sur la requête 2
Code :
SELECT cdes.N°, cdes.montant, CDbl(DSum("[montant]","cdes","N° <=" & [])) AS Cumul, IIf([Cumul]-[TotalVersements]<0,0,IIf([Cumul]-[TotalVersements]>=[Montant],[Montant],[Cumul]-[TotalVersements])) AS Solde_a_régler FROM cdes, VersTot ORDER BY cdes.N°;
Je cumule les versements par la requête 1.

Ensuite en prenant les commandes dans l'ordre des numéros je calcule le cumul par une fonction somdom.

Si ce cumul est < à la somme des versements, la commande est payée, au delà on calcule l'écart cumul - total des versement.
Cela donne le reste à régler (global) : si cet écart est supérieur au montant de la facture on prend le montant de la facture.
__________________
Chris
----------------------------------------------------------------------------------------------
En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...
78chris est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/02/2012, 12h49   #17
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 952
Points : 30 952
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Oui, mais tu ne prends pas en compte cette hypothèse :

Citation:
Je prends la première commande (NumAuto = 1) dans ta première table, donc le premier versement devrait être (NumAuto = 1) dans la deuxième table, mais le deuxième versement appartient toujours à la première commande où est-ce le premier de la deuxième commande ?
Rien ne te dis que la première commande est soldée.

Si la première est soldée et la deuxième nom et la troisième oui ?

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 14h03   #18
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 598
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 598
Points : 902
Points : 902
Bonjour

Philippe : je suis d'accord avec toi mais si j'ai bien compris la façon dont travaille mouhamadrouabha, il part du principe que les versement apurent le compte commandes dans l'ordre de celles-ci, point barre.
Et si je me réfère à son attente telle que décrite dans le 1er post, mes requêtes donnent exactement cela.

C'est une gestion assez peu orthodoxe et surtout illégale dans notre système comptable.

Mais cela m'a amusé de cherché une solution alors que ma première réaction était "pas logique donc pas possible "...
__________________
Chris
----------------------------------------------------------------------------------------------
En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...
78chris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 14h14   #19
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 952
Points : 30 952
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Si je prends l'exemple dans la première discussion, c'est loin d'être gagné.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 15h52   #20
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 598
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 598
Points : 902
Points : 902
Re

Citation:
Envoyé par Philippe JOCHMANS Voir le message
Re

Si je prends l'exemple dans la première discussion, c'est loin d'être gagné.

Philippe
J'ai ajouté une facture.
Images attachées
Type de fichier : jpg deux.jpg (79,5 Ko, 17 affichages)
__________________
Chris
----------------------------------------------------------------------------------------------
En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...
78chris est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h01.


 
 
 
 
Partenaires

Hébergement Web