Création de MENUS

Bonjour à toutes et à tous,

Dans la procédure Private Sub cmdValidationCréationArticleMenu_Click, merci de m'aider à résoudre ce problème d'incompatibilité de type. J'ai supprimé les mots de passe, la sauvegarde et désormais je ne vous soumets que ce fichier.

https://www.cjoint.com/c/MHmlybEEL5s


BUDGETS

4 réponses

Résumé de la discussion

Le problème porte sur une incompatibilité de type dans Private Sub cmdValidationCréationArticleMenu_Click après suppression des mots de passe et de la sauvegarde, et la soumission d’un seul fichier. La solution ayant fonctionné consiste à conserver le code tel quel et de renommer les tableaux structurés concernés. Cet ajustement a conduit à une réussite totale de l’exécution, avec des libellés modifiés non repris mais sans incidence, et un projet de création du deuxième formulaire UF02-CréationMenus. Les échanges suivants portent sur la structure des données, les duplications éventuelles de tables et l’amélioration de la lisibilité et de l’indentation du code pour faciliter les contributions futures.

Bobot (l’IA à votre service)
  1. Bonjour,

    Plutôt que de jouer au rafistolage, j'ai tout repris votre programme. En fait j'ai tout simplifié en supprimant beaucoup d'infos inutiles. Cela fonctionne comme j'ai cru comprendre. Si ça vous convient tant mieux sinon tant pis, le 30 je plie les gaules.

    https://www.cjoint.com/c/MHzpAvAhatH

    (pas de mention de modification car absolument toutes les procédures ont été modifiées)

    0
    1. Bonjour Bertrand,

      Un grand merci pour votre aide et la réussite totale de l'exécution qui correspond très bien à ce je souhaitais, excepté modification libellés qui n'a pas été repris mais cela ne va pas me poser de problème.. 

      Je vous souhaite une réussite totale dans ce que vous allez faire après le 30 août. reviendrez-vous de temps en temps. Je vais entreprendre la création du deuxième formulaire. Si vous envoie le fichier concerné, pensez-vous que auriez le temps de le lire et d'apporter les modifications qui vous sembleraient nécessaires, quitte à le refaire entièrement (il s'agira de l'UserForm UF02-CréationMenus (à moins que vous n'ayez encore le fichier MENUS 2022 ou MENUS 2023) ? Merci de me tenir au courant.

      Encore un grand merci.

      0
    2. @BUDGETS

      En principe non, je ne reviendrai pas.

      Pour les libellés, vous n'êtes pas sans avoir remarqué que j'ai remplacé une information affichée sept fois par une seule affichée une seule fois en gros et en faut du formulaire !

      N’est-ce pas mieux ?

      0
    3. @bertrand

      Dommage. Je ne l'ai pas vu du premier coup : c'est en lisant l'impression du programme que je m'en suis rendu compte avec miseàjourtitre.  Oui, c'est beaucoup mieux ainsi.

      0
    4. @bertrand

      Bonsoir Bertrand,

      J'ai trouvé : l'erreur était dans la procédure UserForm : il ne fallait pas mette les crochets avec leur contenu. Par contre, dernière ligne de la procédure cbnomnaturearticlesmenus : la méthode range a échoué. Pour le nom des tableaux commençant par Tab et suivis de DMR, DS, DW, etc. dans mon fichier tab est suivi du nom entier, est-ce la cause ? Quelques tests effectués, c'est oui. Donc dans me, je remplace la fin de l'instruction par Nom (je supprime le mot code) ou dans ma feuille listes, je remplace tab par le nom de la colonne code et non par le nom de la colonne Nom.

      0
  2. Bonjour, je reprends votre programme pour les quelques jours qu'il me reste. Pourquoi ne voulez-vous pas faire correctement l'indentation sur les procédures que je n'ai pas modifiées et pourquoi ne voulez-vous pas non plus aligner vos commentaires avec les instructions et non pas en début de ligne. Cela vous aiderait à comprendre la structure du programme et à détecter les erreurs

    0
    1. Bonjour Bertrand,

      Vous pensez que les commentaires devraient également subir l'indentation. Pour les procédures, j'essaie de comprendre comment pratiquer mais j'avoue que cela me dépasse, me décourage car je n'y comprends rien du tout. À part cela, j'espère que vous allez trouver une solution pour l'affichage du message concernant l'existence de l'article qui pourra être modifié (uniquement les cbPériode et cbConditionnement);la modification devra apparaître dans le tableau structuré TabBDArticlesMenus sans création d'une nouvelle ligne.     

      0
    2. @BUDGETS

      Il est mieux que les commentaires suivent l'indentation du code. D'ailleurs c'est ce que vous m'obligez à faire sur vos procédures, code et commentaires, pour les comprendre avant de les modifier, sinon la lecture est difficile. Je vous conseille de le faire pour faciliter le travail de vos futurs contributeurs ainsi que le votre. Je crois avoir compris votre code, je vous soumettrai une version à ma façon d'ici peu.

      0
    3. @bertrand

      Si vous avez le temps, présentez-moi une procédure avec toutes les indentations nécessaires. Cela me permettra les autres procédures D'avance merci.

      -2
  3. Bonjour Bertrand, Quelqu'un du forum m'a proposé le LCNNAM pour voir la liste des différents desserts, légumes et viandes et cela a fonctionné mais il ne m'a pas précisé si je devais l'utiliser ailleurs. Partout où il se trouve dans la suite est de ma propre initiative et effectivement cela semble ne pas avoir d'heureuses conséquences. Donc merci Bertrand de m'indiquer tout ce qui doit être supprimé ou de me faire parvenir un fichier rectifié ou de m'envoyer un fichier avec toutes les instructions transformées en commentaires qui vous semble inutiles, avec le cas échéant, pour chaque procédure concernée, la mention Modification Bertrand avec ou sans date de modification.


    -1
    1. Je n'ai pas tout compris. Il semble y avoir plusieurs erreurs ! J'ai repris l'indentation des procédures modifiées, on y voit plus clair, vous n'aviez pas répondu à ma question. J'ai laissé le format xltm bien que cela m'enquiquine Vous vous êtes bien compliqué la vie en mettant des listes déroulantes différentes pour dessert, légume et viande Une version modifiée qui ne plante pas. https://www.cjoint.com/c/MHpnpF5lbnI

      0
    2. @bertarnd

      Bonjour Bertrand, Merci beaucoup pour votre aide. J'ai testé : le tri se fait bien. La renumérotation ne se fait pas correctement. https://www.cjoint.com/c/MHppj0i04Ws

      -1
    3. @bertarnd

      Le fichier en xlsm. https://www.cjoint.com/c/MHppJCuUVFs

      -1
    4. @BUDGETS

      Très bien pour le xlsm. Il ne vous reste plus qu'à faire l'indentation correcte maintenant. Sinon je ne sais pas ce qu'est la renumérotation mais j'ai du mettre en commentaire l'appel de la procédure RenuméroterCréationArticlesMenus qui fait appel à une table qui n'existe pas !

      0
    5. @bertrand

      Bonsoir Bertrand, Appel renuméroter : enlevé le commentaire. Procédure renuméroter : correction des erreurs et tout refonctionne. Sub RécupérationCréationArticlesMenus(ByVal I As Long) : le message pour un article qui existe déjà ne s'affiche pas. Qu'appelez-vous une indentation correcte ? Pour l'instant, je ne peux pas essayer la suppression puisque le message désiré n'apparaît pas à l'écran.

      -1
  4. Bonjour, Effort louable, enfin ! Si vous n'êtes pas pressé j'aurais un peu de temps en milieu de semaine prochaine.

    0
    1. Bonsoir Bertrand, Merci pour le compliment. Oui, je peux attendre un peu. Vous faites comme bon vous semble : 1) Vous supprimez ou corrigez tout ce qui doit être supprimé ou corrigé et vous m'envoyez le fichier modifié. 2) Dans le fichier, vous modifiez ce qui doit l'être soit en mettant les instructions en commentaires, soit en effectuant des corrections, soit en ajoutant des instructions. Partout où vous aurez fait une quelconque modification, correction, mise en commentaires, vous mettez la mention '//Modification Bertrand. D'avance merci pour votre aide.

      -1
    2. @BUDGETS

      Bonjour, Je commence à regarder votre fichier et ce n'est pas facile de comprendre car le code est assez mal écrit. Pourquoi diable ne respectez-vous pas l'indentation préconisée ? Je ne comprends absolument pas le code que vous avez mis après : 'Trier la feuille BD articles menu, ... Dans cette procédure, vous avez des blocs With imbriqués ce qui génère des erreurs lors des accès aux tables. Qu'avez vous voulu faire avec le code : If LCNNAM = "D" Then For I = 1 To .ListRows.Count I = 0 'DataBodyRange : cette propriété renvoie un objet Range qui représente la plage de valeurs, à l'exception de la ligne d'en-tête dans une table. Type de données en lecture seule. I = Application.Match(cbNomNatureArticleMenu & cbNomDessert, .ListColumns("Clé article").DataBodyRange.Value, 0) IndiceCréationArticlesMenus = I Next I End If ou encore celui-ci : If LCNNAM = "D" Then For I = 1 To .ListRows.Count .Range.Sort key1:=.ListColumns("Code article menu"), order1:=xlAscending, keader:=xlYes Next I

      0
    3. Bonsoir Bertrand,

      Au tout début, il n'y avait pas pas de TabProduits mais des Tab dessert soir, Dessert midi etraite, etc. Puis quelqu'un m'a proposé une TabProduits pour simplifier. J'ai donc gardé les deux procédés.

      Si vous avez quelque chose à me proposer de plus simple avec le même résultat final, je ne dis pas non. La tabProduits va servir pour la création des menus midi retraite, menus journaliers et menus viandes midi weekend à partir d'un deuxième formulaire.

      J'espère que vous reviendrez quand de temps en temps ici après votre stage d'été.

      -1