IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Transposer une formule EXCEL dans ACCESS [AC-2010]


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Transposer une formule EXCEL dans ACCESS
    Bonsoir,

    Complètement novice en matière d'ACCESS 2010 et de programmation, je me suis lancé dans la construction d'une base de données devant servir à gérer les stocks de matières premières d'un self associatif.

    Cette base comporte 3 tables, 2 formulaires et 2 états :

    Table MERCURIALE : C'est la liste des produits. On y enregistre via le formulaire FORM_MERCURIALE tous les nouveaux produits, avec le nom du fournisseur, la référence, l'unité de facturation etc… Elle donne lieu à l'établissement de l'ETAT_MERCURIALE.

    Table MOUVEMENTS : On y enregistre jours après jours, via le formulaire FORM_MOUVEMENTS, les ENTREES et les SORTIES de produits des stocks.

    Table STOCKS : Elle est censée affichée par référence de produits, le stock initial, la SOMME DES ENTREES ET SORTIES sur une période donnée, le stock final et sa valeur TTC.

    C'est là que se situe mon problème : je n'arrive pas à transposer dans ACCESS (sous forme de requête ou autre) la formule que j'ai mise en place dans EXCEL et qui permet d'aller chercher dans la feuille ENTREES ET SORTIES toutes les entrées et sorties d'un même produit x et de les additionner dans les champs ENTREES et SORTIES de la feuille ETAT DES STOCKS.

    La formule EXCEL est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(B2="";"";SOMME.SI.ENS('entrées et sorties'!C$5:C$1000;'entrées et sorties'!B$5:B$1000;'état des stocks'!C2))
    C'est ce que je souhaiterai obtenir dans ACCESS : En quelque sorte, une requête ou autre macro (je ne sais pas) qui "dise" d'aller chercher et additionner dans la table MOUVEMENTS, pour chaque référence de produits, toutes les ENTREES et SORTIES d'une référence de produit et d'importer, par référence de produit, le total dans les champs ENTREES et SORTIES de la table STOCK.

    Si quelqu'un peut m'apporter la solution pour résoudre ce problème, ce serait formidable.

    Merci de votre aide.

    Très cordialement…

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    La solution à ton problème est une requête de regroupement.

    1. Tu ouvres une nouvelle requête avec l'éditeur de requête.
    2. Tu choisis la table qui t'intéresse et les champs que tu veux.
    3. Puis tu appuis sur l'icône Sigma (celle qui ressemble à un 3 à l'envers). Cela va t'afficher une ligne regroupement. Dans la colonne des quantités tu choisi "Somme".


    Par contre je te recommande de traiter le solde initial comme un mouvement particulier (en fait c'est comme une entrée) cela t'évite d'avoir une table à part et si tu n'as pas de problème de performance lors du cumul c'est mieux.
    Le solde devient alors seulement la différence entre les entrées et les sorties accumulées à une date donnée.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 972
    Points
    83 972
    Billets dans le blog
    15
    Par défaut
    arthurvox, marot_r

    @ arthurvox
    : je pense que ce n'est pas la peine de créer d'autres posts ici pour le même problème, surtout que marot_r a déjà commencé à vous orienter sur la façon de traiter ce cas.

    Bon courage

    Cordialement,
    Malick
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Bonjour.

    La solution à ton problème est une requête de regroupement.

    1. Tu ouvres une nouvelle requête avec l'éditeur de requête.
    2. Tu choisis la table qui t'intéresse et les champs que tu veux.
    3. Puis tu appuis sur l'icône Sigma (celle qui ressemble à un 3 à l'envers). Cela va t'afficher une ligne regroupement. Dans la colonne des quantités tu choisi "Somme".


    Par contre je te recommande de traiter le solde initial comme un mouvement particulier (en fait c'est comme une entrée) cela t'évite d'avoir une table à part et si tu n'as pas de problème de performance lors du cumul c'est mieux.
    Le solde devient alors seulement la différence entre les entrées et les sorties accumulées à une date donnée.

    A+
    Bonjour,
    Merci pour cette réponse, mais comme je l'ai précisé, je suis complètement novice en matière d'ACCESS. J'ai essayé de créer cette requête, mais ça ne fonctionne pas.
    le résultat que je souhaite obtenir dans les champs "ENTREES" et "SORTIES" de la table "stocks" est, pour chaque référence de produits, la somme de ses "entrées" et de ses "sorties" enregistrées dans la table "mouvements".
    De là, comment construire cette requête ?
    Afin que vous compreniez mieux mon problème, je vous mets en pièce jointe une copie de ma base.
    Merci de votre aide...
    Très cordialement...
    Fichiers attachés Fichiers attachés

  5. #5
    Membre du Club Avatar de Logisticien
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Mars 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 71
    Points : 62
    Points
    62
    Par défaut
    bonjour;

    essai d'utiliser les assistants des requêtes !
    vous avez besoin de créer des requêtes de sélections

    @+

  6. #6
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 972
    Points
    83 972
    Billets dans le blog
    15
    Par défaut


    Citation Envoyé par arthurvox Voir le message
    Bonjour,

    le résultat que je souhaite obtenir dans les champs "ENTREES" et "SORTIES" de la table "stocks" est, pour chaque référence de produits, la somme de ses "entrées" et de ses "sorties" enregistrées dans la table "mouvements".
    De là, comment construire cette requête ?
    Quelque chose comme ceci :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT stocks.REFERENCE, Sum(stocks.[STOCK INITIAL]) AS [SommeDeSTOCK INITIAL], Sum(stocks.ENTREES) AS SommeDeENTREES, Sum(stocks.SORTIES) AS SommeDeSORTIES, [ENTREES]-[SORTIES] AS StockFinal
    FROM stocks
    GROUP BY stocks.REFERENCE, [ENTREES]-[SORTIES];

    Pourquoi le champ Stock Final dans la table stocks sachant que le stock final peut être calculé à partir d'une requête ?
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Essai Base Gestion de stock
    Merci de cette réponse, mais où dois-je mettre ce code, et comment ?
    D'autre part, je ne comprends pas la question relative au champ "stock final". En effet, la table stock donne lieu à l'élaboration d'un état qui doit mentionner, pour chaque référence, le nom du produit, son fournisseur, la quantité en stock et la valeur de celui-ci (stock final en fin de période). Tous ces champs sont donc nécessaires dans la table , non ???

    Encore merci de votre aide.

    Cordialement...

  8. #8
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 972
    Points
    83 972
    Billets dans le blog
    15
    Par défaut
    Merci de cette réponse, mais où dois-je mettre ce code, et comment ?
    Dans la fenêtre de création de requêtes, faire un clic sur le bouton SQL et dans c'est dans la fenêtre qui s'ouvre qu'il faudra coller le code. Voir la capture ci-après :

    Nom : Sans titre.png
Affichages : 554
Taille : 88,8 Ko

    D'autre part, je ne comprends pas la question relative au champ "stock final"
    En fait, le stock final est un champ calculé et il est possible de l'obtenir via une requête. Il n'est pas recommandé de conserver des champs calculés dans des tables ; les requêtes le font très bien

    Cordialement,
    Malick
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci de cette réponse.
    En fait, j'ai besoin du stock final, par référence de produit, dans l'état lié à la table stock.
    Cet état comprends les champs suivants :
    "FOURNISSEURS", "ARTICLES", "REFERENCE", "UNITE" (de facturation), "STOCK FINAL" et "VALEUR TTC"
    C'est la raison pour laquelle je pensais qu'il fallait que ce champ figure dans la table "STOCKS".
    Mais, si il y a moyen de faire autrement, je suis preneur de la méthode.
    Encore merci...
    PS : J'ai rentré comme tu me l'as indiqué le code que l'on m'a conseillé, mais cela ne fonctionne pas. Lorsque je saisie des entrées ou des sorties dans la table "MOUVEMENTS", cela ne change rien dans le champ "stock final" de la table "STOCK" ? ? ?

  10. #10
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 412
    Points : 16 254
    Points
    16 254
    Par défaut
    Bonjour
    Citation Envoyé par arthurvox Voir le message
    ...J'ai rentré comme tu me l'as indiqué le code que l'on m'a conseillé, mais cela ne fonctionne pas. Lorsque je saisie des entrées ou des sorties dans la table "MOUVEMENTS", cela ne change rien dans le champ "stock final" de la table "STOCK" ? ? ?
    C'est bien pour cela qu'on ne stocke pas un résultat de calcul dans une table.

    Dans Excel tu saisis des données d'une part et des formules d'autre part : si tes données changent, les formules vont donner d'autres résultats.

    Dans une base de données, pour schématiser, les requêtes remplacent un peu les formules mais les résultats ne sont visibles que quand on exécute la requête dans un champ en quelque sorte virtuel.
    C'est pourquoi l'état doit être basé sur une requête dans la majorité des cas, pas sur une table.
    De plus dans un état tu peux aussi définir des sous-totaux par niveau de rupture.

    Donc selon la structure de ton état tu peux
    • soit récupérer le stock final calculé par la requête,
    • soit, si tu listes les mouvements des chaque article, faire une rupture par code article dans l'état et calculer le stock final en pied de groupe


    C'est une logique différente de celle d'Exel : une fois qu'on a compris, on en voit bien les avantages.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci pour cette réponse, mais comme je l'ai déjà précisé, je suis complètement novice en la matière, et si quelqu'un pouvait me dire comment rédiger la requête qui pourrait me permettre d'obtenir ce résultat (la somme des entrées et des sorties par référence de produit dans un état qui devrait comporter les champs suivants : FOURNISSEUR, PRODUIT, REFERENCE, STOCK INITIAL, STOCK FINAL, VALEUR TTC.

    Merci de votre aide...

    Très cordialement...

  12. #12
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 412
    Points : 16 254
    Points
    16 254
    Par défaut
    Bonjour

    milkoseck t'as déjà donnée le code SQL. Un fois le code SQL saisi puis exécuté comme indiqué, repasse en mode QBE en déroulant le même bouton et prenant l'équerre, puis ajoute les champs dont tu as besoin.

    Tu auras sans doute besoin dans cette requête des tables Mercuriale et Mouvements : as-tu bien mis ces tables en relations 1à N avec intégrité référentielle ?

    Crées ensuite ton état en sélectionnant la requête (sauvegardée au préalable) comme source.

    Il faut que tu comprennes que contrairement à un tableur, dans une base de données on ne mélange pas les données et leur aspect.

    Un peu schématiquement :

    Les données sont stockées dans les tables sans mise en forme particulière et sans tri autre que l'ordre d'entrée.

    Les requêtes permettent de récupérer tout ou partie des données, un peu comme avec un filtre avancé dans Excel, en y ajoutant d'éventuels calculs.
    Mais la requête n'est qu'une paire de lunettes permettant de restituer les données d'une façon particulière : elle ne dupliques pas les données.

    L'état (et le formulaire) sont des moyens de présenter les données : il ne définissent que la mise en forme des données à afficher.

    On saisit donc les données dans les tables (ou on remplit les tables par importation ou autre processus), on les "interroge" via des requêtes et on affiche le résultat de ces requêtes dans un formulaire ou un état plus sexy que celui associé de base. Quand tu exécutes une requête, Access t'affiche les données sélectionnée par la requête via la feuille de données, formulaire basique.

    Tous les calculs sont réalisés majoritairement dans les requêtes, marginalement dans les formulaires et dans les états.

    Comme indiqué par Marot_R, la Table STOCKS ne sert à rien : c'est la table des mouvements qui doit restituer le stock via la requête Table.
    Il faut juste y saisir au départ le stock initial et daté de chaque produit, puis au fil du temps les éventuels correctifs lors des inventaires.

    Tout le monde a été débutant mais je te conseille soit de suivre une formation, soit de passer du temps sur les didacticiels.
    La gestion de bases de données repose sur des concepts bien précis qu'il est nécessite de bien comprendre si on veut que la base soit correctement conçue et fonctionne bien.
    Une bonne base de données c'est 80% d'analyse et conception et 20% de réalisation...
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  13. #13
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 972
    Points
    83 972
    Billets dans le blog
    15
    Par défaut


    Citation Envoyé par arthurvox Voir le message
    Merci pour cette réponse, mais comme je l'ai déjà précisé, je suis complètement novice en la matière
    Voici des tutoriels à lire pour bien débuter avec Access :

    Access - Les Bases : Introduction et Conception

    Comprendre les jointures / Relations dans Access

    Créez facilement vos premières requêtes dans Microsoft Access

    Cordialement
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    J'avance pas à pas et je commence à comprendre. En fait, je n'ai pas besoin de la table "STOCKS". Il faut simplement que je crée une requête qui ira chercher les données dans les bases "MERCURIALE" et "MOUVEMENTS", et que cette requête donne lieu à l'établissement du formulaire dans lequel sera affiché le résultat. C'est bien cela ?

    Dans ce cas, le code que l'on m'a communiqué ne doit plus être bon :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT stocks.REFERENCE, Sum(stocks.[STOCK INITIAL]) AS [SommeDeSTOCK INITIAL], Sum(stocks.ENTREES) AS SommeDeENTREES, Sum(stocks.SORTIES) AS SommeDeSORTIES, [ENTREES]-[SORTIES] AS StockFinal
    FROM stocks
    GROUP BY stocks.REFERENCE, [ENTREES]-[SORTIES]

    En effet, je pense que l'expression SELECT stocks REFERENCE, correspond au champ REFERENCE de la table STOCKS. Mais, si je n'utilise pas cette table et que je rajoute un champ STOCK INITIAL sur la table MERCURIALE, comment s’articulerait alors la requête ?

    Merci de partager vos compétences et de m'apporter votre aide précieuse.

    Cordialement...

  15. #15
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 412
    Points : 16 254
    Points
    16 254
    Par défaut
    Bonjour

    Déjà as-tu bien mis les tables Mercuriale et Mouvements en relations 1 à N avec intégrité référentielle ?

    C'est la première chose à faire

    Ensuite crée une nouvelle requête en y plaçant ces 2 tables et prend dans chacune les champs nécessaires.
    Ensuite, comme expliqué par marot_r au #2, utilise le bouton Sigma et la fonction Somme.
    Si tu as un seul champ quantité dans tes mouvements avec des valeurs positives ou négatives, cela suffit, sinon, il faut faire la somme sur les entrées, la somme sur les sorties et faire un calcul pour soustraire la somme des sorties de la somme des entrées.

    Sans avoir la structure de tes tables, difficile d'être plus précis.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  16. #16
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 412
    Points : 16 254
    Points
    16 254
    Par défaut
    Bonjour

    Merci d'éviter les MP : ma boîte est déjà saturée et le forum ne fonctionne pas par MP.

    J'ai néanmoins à titre très exceptionnel, donc uniquement pour une fois, regardé ta base.

    Il aurait été apprécié que tu appliques déjà les conseils donnés.

    Tes stocks initiaux doivent être dans la table MOUVEMENTS et non dans la table MERCURIALE.

    Ta table des MOUVEMENTS ne contient qu'un enregistrement avec des champs PRODUIT et UNITE non remplis : on ne sait quel est leur rôle... mais la notion d'UNITE a sans doute un impact sur le calcul du stock si elle est spécifique aux mouvements.

    Concernant la structure des tables : il faut dimensionner tes champs : ne pas laisser 255 caractères pour le texte.
    Même si Access 2010 permet les champs calculés dans les tables ce n'est pas la norme et apporte plus de PB que d'avantages.
    Le prix TTC ne devrait pas être dans la table MERCURIALE ni le taux de TVA.
    Le taux peut changer au fil du temps : on utilise une table de TVA avec les champs Code et taux, éventuellement date de début de validité. Ainsi quand le taux change on modifie cette table ou bien on ajoute un enregistrement et on est alors capable de recalculer la TVA et le TTC de tout, en fonction du taux en cours.
    L'intérêt de dater les taux est de pouvoir évaluer le TTC en fonction du taux lors de l'entrée en stock mais le stock avec un taux différent s'il a évolué depuis.

    La table MOUVEMENTS devrait contenir un champ "Type Mouvement" (pour Entrée ou Sortie ou stock initial ou Ajustement inventaire) et un champ quantité (éventuellement à prévoir en négatif ou en positif selon le type).
    Elle devrait également avoir une clé primaire et sans doute un index unique pour éviter le risque de saisir n fois un même mouvement.

    La table FOURNISSEUR serait sans doute utile...

    Tu sembles confondre formulaire qui sert à l'interface écran et état qui sert à l'impression.
    Un état ne doit pas avoir de liste déroulante puisque il est destiné au papier.
    Il n'est pas indispensable de mettre du VBA pour masquer l'interface ACCESS car il existe des options pour limiter l'interface et également empêcher l'accès en mise à jour aux formulaires et états.

    Il est préférable d'avoir une table des UNITES et de s'y référer dans les tables MERCURIALE et MOUVEMENTS plutôt qu'une liste qui peut nécessiter des mises à jour tant dans la structure des tables que des formulaires et états.
    Ci-joint un extrait de ta base en retour :
    • Tables TVA (pour l'instant sans date) et UNITES ajoutées,
    • Tables MERCURIALE et MOUVEMENTS modifiées (je te laisse néanmoins créer la table des types de mouvements),
    • Stock initiaux créés dans la table MOUVEMENTS : il y manque l'unité mais si elle est forcément la même que l'UNITE de vente et si l'info est stable dans le temps, le champ est à supprimer de la table.
    • Requêtes Mercuriale_valorisée, Mouvements_Valorisés et Mouvements_Valorisés créés
    • Etats liés à ces requêtes et adaptés
    • Formulaires adaptés
    Fichiers attachés Fichiers attachés
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    Un grand Merci à 78chris en particulier, mais aussi à tous ceux qui m'ont apporté leur aide, leur concours et leurs précieux conseils pour l'élaboration de ce projet. J'en vois le bout, mais il me reste deux ou trois petites choses à solutionner.

    Suivant les conseils de 78chris, j'ai créé la table "type de mouvement" avec les champs suivants : stock initial, entrée, sortie, ajustement. Doit-elle comporter une clef primaire ? Dois-je créer une relation avec la table "mouvements", et enfin, comment l'utiliser dans le formulaire form_mouvements ?

    Encore merci pour tout...
    Très cordialement...

  18. #18
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 412
    Points : 16 254
    Points
    16 254
    Par défaut
    Bonjour

    NON !

    La table type de mouvement ne doit pas comporter les champs stock initial, entrée, sortie, ajustement mais un seul champ TYPE servant de clés primaire et 4 enregistrements avec ces 4 VALEURS

    Elle doit être en relation 1 à N avec la table MOUVEMENTS et doit être la source d'une liste déroulante du champ TYPE MOUVEMENT de cette table.

    Quand on crée correctement une base, avec d'abord les tables puis les formulaires, la définition de liste déroulante faite dans la structure de la table est automatiquement appliquée à tout nouveau formulaire.
    Si on a déjà créé des formulaires, il faut y reporter ce contrôle par liste déroulante basée sur la table TYPE MOUVEMENTS. Tu as des exemples dans les tables et formulaires que je t'ai envoyés.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Au secours...
    Bonjour,
    Juste quand je touchais enfin au but, j'ai du faire une mauvaise manip et je ne peux plus ouvrir ma bdd.
    j'ai le message suivant qui s'affiche :
    "la base de données a été placée par l'utilisateur "'admin" sur "BUREAU" dans un état l'empêchant d'être ouverte ou verrouillée."

    C'est l'erreur 3734.

    J'ai essayé d'ouvrir ACCESS en tant qu'administrateur puis d'ouvrir ma bdd, mais rien à faire. toujours le même message.
    J'ai regardé sur mon bureau, mais le fichier n'y est pas.

    Comment récupérer et ouvrir ma bdd ?

    Merci de votre aide ...

    Cordialement...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/10/2016, 18h53
  2. Transporter une formule Excel dans Access
    Par celthi dans le forum VBA Access
    Réponses: 16
    Dernier message: 22/09/2015, 23h02
  3. VBA lier une table Excel dans Access
    Par darkspoilt dans le forum VBA Access
    Réponses: 10
    Dernier message: 21/05/2007, 15h33
  4. Réponses: 5
    Dernier message: 20/06/2006, 08h24
  5. [debutant] Traduite une formule excel dans access
    Par zelob dans le forum Access
    Réponses: 5
    Dernier message: 25/02/2006, 05h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo