Variable objet ou variable de bloc with non définie

Résolu

Bonjour à toutes et à tous,

Dans le fichier TESTS CCM THEV.xlsm, tout ce qui concerne dic_produits était prévu pour la création des menus midi retraite, des menus journaliers et des menus viande midi weekend.

Dans le fichier MENUSV2;XLLSM, je tente vainement d'employer également dic_produits pour la création des articles menus. Actuellement, j'ai le message d'erreur Variable objet ou variable de bloc with non définie. Peut-être le nom des dic_produits est-il incorrect ou des instructions sont absentes.

D'avance merci à la personne qui pourra m'apporter la solution à ce problème.

Fichier TESTS CCM THEV.xlsm  :

https://cjoint.com/c/MDrraxKedbp

Fichier MENUSV2.xlsm :

https://cjoint.com/c/MDrrbHPvmop

Bonnes soirée, nuit et continuation à toutes et à tous. Prenez bien soin de vous.


BUDGETS

23 réponses

Résumé de la discussion

Le cœur du sujet est un problème d'exécution VBA lors de l'utilisation de dictionnaires pour générer des articles menus, accompagné de l'erreur 'Variable objet ou variable de bloc With non définie'. Plusieurs réponses évoquent des difficultés à comprendre les dictionnaires et des erreurs de compilation, tandis que d'autres recommandent de repartir de zéro et de coder petit à petit, éventuellement sans dictionnaire. D'autres retours proposent des ajustements concrets, comme remplacer TabDico par une autre référence, et constatent des résultats partiels: certains champs se remplissent, d'autres demeurent vide, notamment tbCodeNatureCréationArticlesMenus et tbCodeNatureArticlesMenus. Enfin, des éléments évoquent des ressources externes et des comparaisons de code pour justifier l'utilisation des dictionnaires et mesurer les approches, tout en restant sur une progression partielle des solutions.

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

    Pour info, j'ai une solution simple de quelques lignes sans dictionnaire à ton pb d'articles menus, mais comme tu as posé la même question sur un autre forum : https://forum.excel-pratique.com/excel/variable-objet-ou-variable-de-bloc-with-non-definie-183341, et que tu y as entrepris une formation sur les dictionnaires qui ne semble pas avoir encore abouti, j'attends de voir ce que tu vas produire pour comparer les deux codes.

    Explique nous au moins pourquoi utiliser des dictionnaires et ce que tu en attends, alors que tu maîtrise mal (c'est un euphémisme) les fonctionnalités de base du vba

    @ f894009 : salut ami, quand cessera-t-on de tout lui dire et de tout lui faire ?

    3
    1. Bonjour Bigoudiii,

      J'ai déjà répondu au pourquoi utiliser des dictionnaires : un contributeur (ici ou un autre forum) m'a proposé l'utilisation des dictionnaires (voir MENUS 2022.xlsm), ce que j'ai accepté et cela fonctionne correctement. J'ai demandé à plusieurs reprises, sans obtenir de réponse, si l'utilisation des dictionnaires de MENUS 2022 pouvait être transposable pour la création des articles. Ce que j'en attends : je n'en sais rien car pour l'instant je n'ai pas encore compris son utilité.

      Le message à F894009 est vraiment hors propos. Inutile de répondre si tu ne veux pas tout me dire me de me faire tout.

      -1
    2. @BUDGETS

      avant qu'on ne réponde plus, montre nous au moins un fichier (MENUS 2022.xlsm ?) qui fonctionne correctement, car pour le moment je n'en ai pas vu

      0
    3. @bigoudiii

      https://cjoint.com/c/MEem2S4sPzp

      Dans ce fichier, dico est utilisé pour la création des menus midi retraite, menus journaliers et menus midi weekend. Autant que je m'en souvienne, il est identique au fichier TESTS CCM THEV qui était joint à mon premier message. Donc, je renouvelle mes deux questions : 1) dico est-il transposable pour la création articles menus ? 2) Pourquoi, j'ai une erreur d'exécution dans menusV2 et comment y remédier alors que le débogage ne signale aucune erreur de compilation ?

      -1
    4. @BUDGETS

      tu rigoles ? ce fichier que tu as déjà transmis plusieurs fois, ne comporte pas l'utilisation de dictionnaires

      0
    5. @bigoudiii

      Milles excuses. C'est le fichier Tests ccm thev qu'il faut prendre en compte. Si pas récupérable, dis-moi le, je te le renverai.

      -1
  2. Bonjour,

    Erreur de doigt

    Test ccm tev:

    Option Explicit
    Dim dic_produits_MMR_légumes As Object, dic_produits_MMR_viandes As Object, dic_produits_MMR_desserts As Object, dic_produits_MJ_légumes As Object
    

    Vous dans Menusv2:

    Option Explicit
    Dim dic_produits_MMR_légumes As Object, dic_produits_MMR_viandes As Object, dic_produits_DMR_dessert As Object, dic_produits_MJ_légumes As Object, dic_produits_MJ_Viandes As Object, _
    
    0
    1. Bonjour f894009,

      Je suppose que tu as voulu mettre Erreur de dim au lieu de doigt. J'avais essayé avec la même chose que dans le programme TESTS CCM THEV, mais j'avais le même problème.


      0
      1. Je n'ai pas encore modifié. Je vais le faire cette après-midi. Je te tiendrai au courant.


        0
        1. j'ai modifié mais le problème persiste toujours. Dans la procédure cbNomArticlesMenus_Change, la première instruction se colore en jaune et, si je passe la souris dessus, j'ai Me.tbCodeArticlesMenus = ""

          Me.tbCodeArticlesMenus = dic_produits_DMR(cbNomArticlesMenus.Value)


          0
          1. Re,

            Vous n'avez rie modifie, c'est 

            Option Explicit
            Dim dic_produits_MMR_légumes As Object, dic_produits_MMR_viandes As Object, dic_produits_MMR_desserts As Object, dic_produits_MJ_légumes As Object
            Me.tbCodeArticlesMenus = dic_produits_MMR(cbNomArticlesMenus.Value)
            0
            1. Je vais essayer avec ces indications.


              0
              1. Bonjour,

                Vous n'avez pas de code pour remplir vos dictionnaires.

                Il y a une procedure qui pourait en rempli un, mais elle n'est jamais appeler: Sub Générationdic_produits()

                Dans le ficher Budgets_TESTS-CCM-THEV, ily a du code pour remplir les dico.

                Dans votre fichier, il faudrait ajouter du code pour faire la meme chose.

                0
                1. Suite:

                  Il manque aussi Private Sub ModificationLibellés(), rien avoir avec les dico mais plantage

                  0
                2. @f894009

                  Bonsoir f894009,

                  Dans le fichier TESTS CCCM THEV, où se trouve le code pour remplir les dico (merci de citer la ou les procédures qui interviennent dans ce fichier afin que je puisse faire pareil). J'avais cru mettre ModificationLibellés en commentaires afin qu'elle n'intervienne pas pour le moment.

                  -1
              2. Hello,

                @ f894009, comment fais-tu pour ne pas t'énerver ?

                @ BUDGETS

                En complément du beau travail de f894009, 3 autres propositions pour le choix de tes articles

                la 1 et la 3 basées sur les tables articles séparées et judicieusement renommées, la 1 à la mode de ton fichier modèle MENUS 2023, (que tu aurais quand même pu reprendre), la 3 basée sur les colonnes des combobox, on a eu la même idée avec f894009

                la solution 2 basée sur la table globale TabProduits et avec un dictionnaire

                Avec la proposition de f894009 tu choisiras celle que tu comprends le mieux, ou celle qui te dépasse le moins !

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

                0
                1. @ f894009, comment fais-tu pour ne pas t'énerver ?

                  Suis peut-etre pas humain, mais une AI...

                   on a eu la même idée avec f894009

                  He oui, perso j'utilise les dico seulement si c'est la meilleur solution. Dans son cas pas vraiment utile, y a pas de recherche sans doublon seulement des listes en partant d'un critere

                  0
                  1. Problème résolu.  j'ai trouvé où était l'erreur  : discordance entre le contenu du tableau structuré TabNatureArticles menus, colonne Nom nature articles menus et le tableau structuré TabProduits, colonne Libelléproduit. Correction effectuée dans ce dernier tableau et tout est rentré dans l'ordre. Bigoudiii, crois-moi ou pas, mais j'ai fait ces rectifications moi-même, sans aucune aide extérieure. D'ailleurs, je me demande maintenant si ce n'est pas ce même problème qui se posait dans MENUSV2

                    0
                    1. Bonjour Bigoudiii,

                      Le dico, outre les procédures que tu as citées dans ton message, doit-il être utilisé dans d'autres procédures ? D4avance merci pour ta réponse

                      0
                      1. Bonsoir Bigoudiii,

                        Dans la procédure private sub NomArticlesMenus, Généeze numéro création articles menus,  il y a format(application.countif. Dans ce tte instruction, quand je tape Format(Application. dans la liste déroulante qui surgit, il n'y a pas de countif. Dans un autre fichier, impossible hélas de me souvenir duquel il s'agit, dans la liste déroulante, il y avait bien countif. Merci de me proposer une solution dans laquelle countif serait présent. là, cela semble marcher tout de même. J'ai retrouvé mon fichier mais il s'agit de countifs et elle était dans une autre procédure (récupérationmenus) Je vais essayer les deux.

                        https://cjoint.com/c/MEhrO6WbxLp

                        0
                        1. Bonjour Bigoudiii,

                          Le tbCodePériodeArticlesMenus ne se remplit pas, que la partie With [Produits] de la procédure cbNomPériodeArticlesMenus_Change soit comme ici ou mise en commentaires. Peut-être ne faut-il pas faire référence à dico ?

                          D'avance merci pour ton aide.

                          https://cjoint.com/c/MEjpTJal7op

                          0
                          1. Bonjour Bigoudiii,

                            Dans un message, autant que je m'en souvienne, tu avais proposé que je refasse le code outil par outil. Dans cette perspective, accepterais-tu, toi et f894009, de m'aider en cas de problème. D'avance merci pour ta réponse. Je vais travailler à partir de ta solution 2 (le dico).

                            Bonnes journée et continuation. Bon weekend. Prends bien soin de toi.

                            0
                            1. Bonjour f894009,

                              Pourquoi le cbNomNatureArticlesMenus et cbNomArticlesMenus (tout comme les tb respectifs d'ailleurs) ne se remplissent-ils pas. D'avance merci pour ta réponse.

                              https://cjoint.com/c/MEmlh00Nkfp

                              0
                              1. Bonjour,
                                juste au passage, simplement les instructions qui manquent, le système ne fait que reproduire ce que vous avez programmé.

                                Bonne suite.

                                0
                                1. Bonjour Le Pingou,

                                  je vais essayer quelque chose : dans userForm_Activate, je vais écrire des instructions d'initialisation pour les deux cb, je vais voir si cela résout ainsi mon problème. Tests effectués : les deux cb se remplissent bien. Par contre les tb ne se remplissent pas. Que faut-il faire pour qu'ils se remplissent. D'avance merci pour votre aide.

                                  0
                                2. Le tbCodeNatureCréationArticlesMenus se remplit bien désormais. Par contre, le tbCodeNatureArticlesMenus ne se remplit toujours pas.

                                  https://cjoint.com/c/MEmoIkGIqAp 

                                  0
                                3. Bonsoir Le Pingou,

                                  Dans la solution 2 (dico), pourquoi le cbNomArticlesMenus_Change ne fonctionne pas ?

                                  D'avance merci pour ta réponse.

                                  0
                              2. J'ai trouvé : il y avait une erreur dans le nom de la procédure.  Maintenant, il faut remplir le cbNomArticlesMenus.

                                0
                                1. Bonjour f894009,

                                  J'ai été occupé, c'est la raison pour laquelle je n'ai pas pu vous répondre plus tôt. J'espère avoir apporté les modifications que vous avez souhaitées mais le problème persiste toujours. Dans le cas contraire, merci de me présenter ce que les dim devraient être sinon pour tout, tout au moins pour DMR, à charge pour moi de compléter avec les autres. Si nécessaire, prévoir également les procédures qui devraient être modifiées pour DMR ou pour dessert midi retraite, je continuerai pour les autres. D'avance merci.

                                  https://cjoint.com/c/MDtpwoiqadp


                                  -1
                                  • 1
                                  • 2