Budgets 1 : création des produits
RésoluBUDGETS Messages postés 1705 Date d'inscription Statut Membre Dernière intervention -
Les modules Affichage et ModulePA_CréerPa sont-ils corrects ? J'espère que mon bienfaiteur ALS35 va voir ce message. Quand cette partie de création des produits sera terminée, j'entamerai la seconde partie pour enregistrer toutes mes dépenses et recettes journalières, calculer le solde de mon argent, répartir toutes les dépenses et recettes par catégories, fournisseurs, clients, etc.
https://cjoint.com/c/IJDtZwSFEm6
https://cjoint.com/c/IJDuYY2y8D6
Quelqu'un semble avoir répondu mais il m'a été impossible de lire sa réponse et, en plus, elle ne figure pas ici.
107 réponses
Le problème porte sur la fiabilité des modules Affichage et ModulePA_CréerPa et sur leur impact sur la création des produits, les listes en modification ou suppression ne reflétant pas toujours l’ensemble des articles. L'absence d'initialisation de CodeProduit empêche l'affichage du code produit et invite à initialiser la variable ou à l'utiliser directement dans le MsgBox. Des échecs de range et des erreurs de suppression dans le module ABDA, ainsi que des incohérences lors de l'insertion en fin de table et du tri des codes articles, sont relevés. Des points de travail concernent la réorganisation des procédures Alimentaires dans ABDA, la clarification du flux entre les modules MJ et MMR et la synchronisation des feuilles shMenusMj et shBDMenus, notamment pour les menus du week-end ou fériés.
https://cjoint.com/c/ILcrYhrhuV6
Même si cela sautait ux yeux, j'ai mis beaucoup de temps à voir les erreurs que j'avais commises : oublier le mot articles dans les deux dernières lignes de copier les valeurs et CodeProduit au lieu de Code produit.
Pour répondre à ta proposition, je préfère reprendre tout à zéro que de faire un copier-coller de ton fichier ou de le sauvegarder sous le nom de mon fichier. De plus, en tapant chaque ligne, cela me permet d'en comprendre le sens.
Une question : le nom des colonnes est précédé et se termine d'un crochet (tableau de la feuille shArticlesProduitsAlimentaires), le nom des colonnes est précédé et se termine par un double crochet (tableau de la feuille BDProduits) dans le module GénérerABDA_GénérerDonnéesABDA. Pourquoi une fois un simple crochet, une autre fois un double crochet ?
Demain mardi, je m'attaque au module Insérer.
Si je ne t'ai pas de nouveau ce soir, je te souhaite bonnes nuit et continuation.
Oui, bien vu pour les crochets ! Tu peux remplacer les doubles par des simples, il n'y a pas d'incidence mais c'est plus logique. Il y a quelquefois des doubles crochets quand on veut accéder à plusieurs entités de la table comme par exemple Range("TabProduits[#All,[Nom produit]]"), chaque entité étant elle même entre crochets.
Pour le numéro de création, il n'y a pas de noms définis, c'est juste une numérotation des lignes, qui est redontante avec le code article. Ce numéro n'étant pas utilisé par la suite il me paraît inutile.
Cordialement
Demain, je m'occuperai du module Insérer pour le fichier BUDGETS 1. Par rapport au module InsérerMMR, penses-tu que des lignes seront à modifier ou à supprimer compte tenu des dernières modifications apportées dans les différentes instructions du fichier BUDGETS 1.xlsm ?
Bonnes soirées et continuation.
Fichier BUDGETS 1.xlsm
https://cjoint.com/c/ILdun5v3y0I
Ficher MENUS 2020 ASL35.xlsm
https://cjoint.com/c/ILdupzQyKUI
Bien sur que si tu reprends la procédure InsérerMMR tu devras modifier des lignes, le principe reste néanmoins le même, il faut recopier des données d'une feuille de saisie vers une ou plusieurs autres feuilles, mais tu peux faire beaucoup plus simple que ce qui était fait, parce que le contexte n'est pas le même.
Avant de commencer, prends le temps de répondre à quelques questions :
a) que veux-tu faire exactement, ou quel tableau final veux-tu obtenir ?
b) la table BD Produits est-elle nécessaire ?
c) de quelles informations as-tu réellement besoin, quelles sont-celles qui sont vraiment nécessaires ?
d ) la table Articles produits alimentaires (et les suivantes) est-elle bien celle que tu veux ?
e) quelles sont les informations qui te seront utiles pour la gestion de tes dépenses et recettes, ou iras-tu les chercher ?
Essaie de mettre noir sur blanc les différentes opérations à réaliser (d'un point de vue vba) et/ou essaie de décortiquer les différentes parties des procédures InsérerMMR et GénérerDonnéesABDA pour ne garder que ce qui est-utile.
Bon courage
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPour tout ce qui est des questions et suggestions contenues dans ton précédent message, j'y répondrai quand les deux premières parties du programme concernant la création produit ont été créées car nous en aurons besoin pour la troisième partie (la gestion des dépenses et des recettes).
J'ai donc créé la procédure InsérerDonnéesABDA du moduleABDA_InsérerABDA, en me basant sur le module insérerMMR. J'attends tes propositions puisque tu dis qu'autre chose est possible du fait que le contexte n'est pas le même.
Je l'ai enregistré mais je ne me souviens plus ni où ni sous quel nom. Il y a quelques jours, tu m'as envoyé un message avec un partie saisie feuille et une autre saise formulaire. Te souviens-tu du numéro du message ? Si oui, merci de me le communiquer. De mon côté, je vais essayer de le retrouver dans tous les messages venant de toi en octobre et novembre 2019. Bon, je l'ai retrouvé en allant sur mes téléchargements. À partir de tes messages, c'est impossible : cjoint les supprime rapidement malgré que j'ai coché la case Durée illimitée.
Bonnes soirée et continuation.
https://cjoint.com/c/ILetTxtnN2I
Non, je n'ai pas encore testé le code du module Insérer parce que tous les modules ne sont pas encore créés et qu'il manque encore certaine(s) macro(s). Dois-je en déduire de ta question que tu as observé des erreurs qui empêcheraient le bon fonctionnement du programme ?
Cette après-midi, je vais te préparer un fichier xlsm avec tout ce que je veux et toutes les relations entre les différents modules. Déjà, j'ai pensé, cette nuit, qu'il pourrait n'avoir qu'une feuille articles produits (au lieu de huit feuilles) qui comprendrait soit uniquement six colonnes, soit quarante-huit colonnes. La feuille BDProduits resterait telle qu'elle est actuellement.
Bonnes journée et continuation.
J'ai simplement remarqué que le code n'était pas suffisant pour aller au bout du process de création article.
Que manque-t-il pour y arriver ?
C'est cette partie qu'il faut terminer avant toute chose, mais si tu attends d'avoir écrit le code complet de ton application ça va être long et compliqué.
Cordialement
PS
Je peux te fournir un code qui fonctionne, mais ...
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson. Confucius
Donc pour l'instant, il vaut mieux m'apprendre que de fournir un code qui fonctionne.
Dans le moduleABDA_CréerABDA, il n'est pas fait appel à InsérerDonnéesABDA, c'est cela qui manque ?
Quant à l'endroit, dans le moduleABDA_CréerABDA, cet appel doit figurer dans la macro ValiderCréationArticlesBudgétairesDépensesAlimentaires qui n'est pas encore ni créée ni codifiée.
L'important c'est la procédure, les modules permettent juste (en gros) de regrouper les procédures, d'ailleurs à ce propos je regrouperais toutes les procédures (macros) traitant des articles ABDA dans un seul module sinon à la fin tu risques d'en avoir un bon paquet de modules.
Cordialement,
Je crois que je peux simplifier : pour l'instant, prévoir une seule feuille shBDProduits et une seule feuille shArticlesProduits (au lieu de shArticlesProduitsAlimentaires, shArticlesPrdouitsBancaires, etc.) avec six colonnes (tous les produits seraient alors les uns en dessous des autres) ou avec quarante-huit colonnes (six colonnes pour les produits alimentaires, six colonnes pour les produits bancaires, etc.). Qu'en penses-tu ? Personnellement, je pense que six colonnes suffiraient, ce qui impliquerait de modifier certains modules et, dans lesdits modules, certaines procédures (procédure = macro ?). La feuille shAccueilArticlesBudgétaires actuelle resterait telle qu'elle est, il serait créé plusieurs feuilles shSaisie, à moins qu'une seule feuille shSaisie puisse avoir plusieurs cellules prédéfinies (colonne B pour les articles alimentaires, colonne d pour les articles bancaires, etc.). Le principe d'avoir le maximum de chose en une seule fois avec le moins de code possible mais donnant le résultat souhaité. Une seule feuille saisie à plusieurs entrées pourrait avoir pour résultat de modifier la feuille shAccueilArticlesBudgétaires. Si cela est faisable, merci de me faire une proposition (sans le code pour l'instant, j'essaierai d'écrire le code en conséquence).
https://www.cjoint.com/c/ILfoKKfIVaK
Je ne crois pas qu'avoir une seule feuille shArticlesProduits te simplifiera la tâche, cela va t'embrouiller.
J'insiste, écris et teste la procédure que tu as nommée ValiderCréationArticlesBudgétairesDépensesAlimentaires
Cordialement
Do
If shArticlesProduitsAlimentaires.Cells(I, 1).Value = ActiveSheet.Range("B9") Then 'I parce qu'il s'agit de la feuille shArticlesproduitsAlimentaires, 1 pour premièreColonne, B9 car il s'agit de la feuille active shSaisieAA, de la cellule B9.
Éventuellement, ajoute des commentaires car je n'ai pas dû tout comprendre et vérifie tout le contenu de toute cette macro afin de déceler d'éventuelles erreurs. D'avance merci.
Que faire pour trier le tableau (reprendre tout de MMR ou seulement une partie) ?
https://cjoint.com/c/ILfulf7UTdI
Il y a plusieurs anomalies car la structure et la position des tables n'est pas la même que celles de Menus.
a) les tableaux ne commencent pas en ligne 1, il faut adapter en conséquence les indices de lignes (I, Ici, IciBis) pour se positionner sur la première ligne vide en dessous des tableaux
b) l'insertion dans la table Article Alimentaires doit se faire de la même manière que celle de la table Produits alors que dans Menus on parcourait avec une boucle la première colonne pour insérer les infos à la bonne date, ce qui n'est pas le cas ici
c) Il faut trier le table produits sur deux critères , le nom catégorie puis le nom article, il faut trier la table Article Alimentaire sur un seul critère le nom article (à adapter de MMR)
https://www.cjoint.com/c/ILgkBJUzcIk
Je n'ai pas le temps d'en faire plus aujourd'hui
Bon courage
Bravo, cela fonctionne très bien. J'ai fait le trier tableau. Pour la feuille shArticlesalimentaires, pas de problème, bons résultats. Par contre pour BDProduits, cela semble moins convaincant. Je vais m'attaquer aux procédures Modifier et supprimer. Je pense que ces deux procédures doivent aller dans le module ABDA, à moins que tu préfères qu'il vaille mieux les mettre dans deux modules différents.
https://cjoint.com/c/ILhlHA5aMMI
Qu'est-ce qui te chagrines dans le Tri BDProduits ?
Cela dit dans la procédure TrierBDProduits les commentaires et le code ne sont pas cohérents, mais pour le moment cela ne change pas rien.
Pour les procédures Modifier et Supprimer je ne préfère rien du tout, je pense qu'il vaut mieux tout regrouper dans le module ABDA.
Comment vas-tu choisir le produit à modifier ou supprimer ?
Cordialement
Quand I vaut 1, l'instruction shBDProduitsCells(I + 3, 3) pointe sur la ligne n° 4 colonne n° 3 de la table Produits, c'est à dire le premier code article.
Si ce code article est égal à celui saisie sur la feuille SaisieAA cellule B9 alors il y a un message qui indique que le code existe déjà dans la table (MsgBox)
Sinon on passe à l'indice I suivant (Next I), donc la deuxième ligne de la table produits, et par conséquent la ligne n° 5 de la feuille et ainsi de suite jusqu'à la fin de la table produits (shBDProduits.Range("TabProduits[Code produit]").Count
On insère donc les nouvelles données à la fin de chacune des tables, puis on trie les tables pour mettre les codes articles en ordre croissant.
C'était le sens de ma question #96
Comment vas-tu choisir le produit à modifier ou supprimer ?
et ta réponse #97
Pour la modification, d'après le code produit et si à modifier est à oui
Très bien c'est tout à fait logique, mais ma question va plus loin, comment pratiquement vas-tu choisir le code article ?
Cordialement
Pour l'instant, c'est le problème auquel je n'ai pas encore trouvé de solution (s) puisqu'il n'y a pas de date si ce n'est la date de création. Une autre solution consiste, éventuellement, à créer une liste déroulante à côté du bouton de commande Modifier articles budgétaires alimentaires et reprendre le code, en le modifiant, du bouton de commande modifier produit de la feuille shAccueilMenus du fichier Menus ou Menus 2020.
Tu vois bien qu'une procédure est adaptée à un contexte donné et qu'on ne peut pas la reprendre telle quelle dans un autre contexte. Donc soit tu la réécris soit tu reprends celle de MENUS que tu modifies fortement pour l'adapter à ton besoin et au contexte actuel du fichier BUDGETS.
Bon courage