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/ILipIptdN1I
Regarde la feuille shAccueilMenus du fichier ci-dessous (mots de passe : MENUS 2020 puis encore MENUS 2020), place toi en C7, dans la barre texte en haut, C7 apparaît bien et non pas rectangle 1, à moins que cela ne soit pas un rectangle.
https://cjoint.com/c/ILipOjXQ8aI
Dans MENUS, c'était juste un fond de couleur entourant les boutons.
Ici cela donnerait quelque chose comme ceci, ça prend un peu plus de place.
https://www.cjoint.com/c/ILiqLWDQG6o
Bonne continuation
Pour les jours, 01, 02,etc. on le formate en personnalisée et dans type, on tape 00;dans la feuille Accueil articles budgétaires, faut-il également personnaliser ? À première vue, je dirais oui car malgré l'utilisation du nom défini lors de la validation des données, si je clique sur 01, il sort 1.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPourquoi cette erreur de else sans if dans le moduleABDA, macro CréerABDA ?
https://cjoint.com/c/ILjn0rvLQDI
Je te laisse faire, mais là je crois que tu t'embarques dans une grosse galère !
a) le numéro de création n'obéit pas aux instructions
Je t'ai déjà dit à plusieurs reprises qu'il y avait un problème avec le numéro de création et que j'avais refait une formule qui fonctionne et que voici
="DA"&TEXTE(LIGNE()-LIGNE(TabArticlesProduitsAlimentaires[[#En-têtes];[Numéro création produit alimentaire]]);"000")
Et je t'ai dit aussi plusieurs fois que ce numéro de création me paraissait inutile.
b) Pourquoi cette erreur de else sans if dans CréerABDA
Parce que tu n'as pas respecté la syntaxe de l'instruction IF précédente, tu as placé l'instruction qui suit le then sur la même ligne que celui-ci, dans ce cas l'instruction If est considérée comme complète et le mot clé Else qui suit est considéré comme orphelin (sans If)
De plus ne coupe pas tes instructions n’importe comment en bout de ligne mais à des endroits judicieux pour la lisibilité du code.
Voici un code qui fonctionne
'Initialiser ou effacer la date création
If shAccueilArticlesBudgétaires.Range("E7").Value <> "" And _
shAccueilArticlesBudgétaires.Range("D7").Value <> "" And _
shAccueilArticlesBudgétaires.Range("C7").Value <> "" Then
.Range("B7").Value = DateSerial(shAccueilArticlesBudgétaires.Range("E7").Value, _
Month("01 " & shAccueilArticlesBudgétaires.Range("D7").Value), _
shAccueilArticlesBudgétaires.Range("C7").Value)
Else
.Range("B7").ClearContents
End If
Je pense aussi que, comme le numéro de création, cette date de création me semble inutile.
C'est toi qui définit tes besoins.
Cordialement
https://cjoint.com/c/ILjpLLdd8oI
https://cjoint.com/c/ILjt3ms3G6I
Bien pour ta procédure EffacerDonnéesSaisiesAA.
Pour le numéro de création c'est bien automatique mais supprime toutes tes lignes vides ne contenant que ce numéro, cela ne sert à rien. On n'est pas dans un tableau de type MENUS !
Il y a aussi deux choses qui m'énervent, c'est ton mot de passe, supprime-le une bonne fois pour toutes, et la procédure Masquer les feuilles, c'est peut-être bien à la fin mais en phase de mise au point c'est casse-pieds ou alors fait au moins une procédure d'affichage de toutes les feuilles.
Cordialement
Excuses-moi, si tu as reçu un fichier avec mot de passe, c'est une erreur involontaire. Je n'ai pas compris ton problème pour Masquer les feuilles.
https://cjoint.com/c/ILkpbVM6OII
Tu supprimes les quelques 450 (!) lignes vides de la table (supprimer et pas simplement effacer), tu te positionnes en F6 et tu utilises la poignée de recopie, le petit carré noir en bas à droite, pour tirer la formule jusqu'en bas de la colonne (F13).
Maintenant ça doit être bon quand tu ajoutes un article.
Justement ce que je veux dire avec MasquerFeuilles, c'est que quand tu fais Valider création article, tu masques les feuilles à la fin de la procédure et il faut systématiquement les ré-afficher pour voir le résultat.
Soit tu mets MasquerFeuilles en commenatires, soit tu crées une procédure AfficherFeuilles et un bouton qui permet facilement de les réafficher toutes en une seule fois.
Cordialement
- soit sur la date création avec à modifier à oui (ma préférée puisque faite sur le modèle des menus)
- soit sur le numéro création avec à modifier à oui
- soit, dernière possibilité, sur le code produit avec à modifier à oui
https://cjoint.com/c/ILkvgT6JR6I
Comme souvent, tu prends le problème à l'envers, ce n'est pas ton fichier qu'il faut à tout prix adapter à une macro qui était vraie dans un autre contexte, mais plutôt l'inverse.
La règle dans une base de données c'est d'avoir un identifiant unique qui permet de référencer un enregistrement, ici une ligne de la Table produits (ou Table Article alimentaire).
La date de création n'est pas unique
Le numéro de création dans sa version actuelle est juste un numéro d'affichage du numéro de ligne dans la table et est donc variable selon le remplissage de la table
Le code article (ou nom article) est unique puisqu'on interdit d'un avoir un deuxième lors de la création
et tu sais aussi ce que je pense de la date et du numéro de création !
(Dans MENUS, un menu était identifié par une date unique, pas la date de création mais la date calendaire)
C'est toi qui décides.
Cordialement
Donc, si je suis ton raisonnement, je dois modifier d'après le code article en le déclarant comme dim codearticle as string. À part, une liste déroulante, y-a-t-il une méthode qui permettrait d'accéder aux codes articles du même genre que les menus qui se faisait par la date calendaire. La date de création n'est pas unique : si tu lis bien mon précédent message, la date création serait unique puisque j'ai prévu un article créé, date de création : mercredi 11 décembre 2019. Un autre article créé ce mercredi, la date de création sera jeudi 12 décembre 2019 (évidemment, pour éviter d'éventuels problèmes de date de création, je commencerai au 01 janvier 2019).
Dans ton raisonnement, la date de création variable n'est donc plus une date de création mais un moyen d'identifier de manière unique un article, mais cela tu l'as déjà via le code ou le nom article et de manière plus simple.
Dans MENUS, le choix de la date se faisait par trois listes déroulantes (jour, mois, année) et il fallait reconstituer la date calendaire, avec le code article (ou le nom) il n'y a qu'une seule liste et il n'y a rien à reconstituer. Que veux-tu dire par "en le déclarant comme dim codearticle as string" ?
Maintenant pose-toi aussi la question de l'utilité de la fonction Modification, est-elle vraiment nécessaire, quels sont les éléments d'un article que tu vas vouloir modifier ?
Cordialement
https://cjoint.com/c/ILlu36haKxI
2) Prévoir l'interdiction de modifier les cellules B3 à B10 incluses.
Bonnes nuit et continuation. À demain.
Clic sur Modification articles budgétaires alimentaires : aucun effet. Problème résolu.
https://cjoint.com/c/ILmokPxbDtI
Remplace l’instruction
If shBDProduits.Cells(I + 3, 11).Value = DateCréationArticleAlimentaire And shBDProduits.Cells(I + 3, 10).Value = "Oui" Then Ici = I + 3
par celle-ci
If shBDProduits.Cells(I + 3, 11).Value = DateCréationArticleAlimentaire Then Ici = I + 3
et tant qu'on y est remplace plus loin
'Date création
shBDProduits.Range("K" & Ici).Copy 'Colonne K de la feuille shBDProduits : date création
shModifABDA.Range("B7").PasteSpecial Paste:=xlPasteValues 'Cellule B7 de la feuille shModifABDA : Date création articles budgétaires dépenses alimentaires
simplement par
shModifABDA .Range("B7").Value = shBDProduits.Range("K" & Ici)
et à suivre pour les autres
Bon courage