Certains cb ne se remplissent pas ou se remplissent avec de mauvaises donné

Bonjour à toutes et à tous,

Feuille accueil création : clic sur Création;

Nature création : Menu journalier;

Date menu : 13 février 2023;

Nom légume : le cb reste vide;

Nom viande : c'est la liste des légumes qui apparaît;

Nom dessert : le cb reste vide.

Merci à celle ou à celui qui pourra m'aider à remplir correctement ces trois cb. Peut-être d'autres instructions sont nécessaires dans une ou plusieurs autres procédures. Voir le fichier MENUS 2023.xslm pour toutes les spécificités prévues (premier mot de passe : MENUS 2023 Deuxième mot de passe : MENUS 2023

18tests-ccm-thev.xlsm (214.71 Ko)

edit modo --> fichier Menu-2023 déjà disponible dans ce fil --> Cet article existe déjà : ne s'exécute pas

Si date menu est 12 février 2023, nom légume : le cb liste partiellement les menus des mercredi et jeudi; nom viande ; c'est la liste des légumes du vendredi qui apparaît; nom dessert : il semblerait que c'est la bonne liste qui est utilisée.

Re,

Ligne 299

        Case "MJ"
'Viande toute la semaine, dessert cas le plus fréquent.
           cbNomLégume.List = dic_produits_MJ_légumes.keys
           cbNomViande.List = dic_produits_MJ_viandes.keys
           cbNomDessert.List = dic_produits_MJ_desserts.keys

A+ François

Bonjour Fanfan38,

1) La ligne 299 ne correspond pas à case MJ.

2) Si j'ajoute tes trois lignes à la case MJ, le problème n'est pas résolu, désolé.

Si la date du menu est un lundi, pour menu journalier, il devra afficher la liste des légumes du lundi mardi (LSLM); si c'est un mardi, il devra reprendre le légume du lundi. Si c'est un mercredi, il devra afficher la liste des légumes du mercredi jeudi (LSMJ); si c'est un jeudi, il devra reprendre le légume du mercredi et ainsi de suite. Pour vendredi, samedi et dimanche, pas de reprise du légume de la veille. Pour légume dimanche, il y a des spécificités.

Desserts menu journalier : du lundi au vendredi inclus : un seul dessert (pomme) de la liste DS; pour le samedi et le dimanche : liste DW (dessert dimanche identique au dessert samedi).

Viande menu journalier : liste VS.

Bonjour Fanfan38,

Mon fichier modifié mais il ne me donne toujours pas satisfaction (voir procédure private sub tbDateMenu_Change, case MJ).

D'avance merci pour ton aide.

12tests-ccm-thev.xlsm (215.66 Ko)

Bonjour

' Dessert midi retraite DMR
' Dessert soir DS
' Desserts weekend DW
' Légumes midi retraite LMR
' Légumes soirs lundi mardi LSLM
' Légumes soirs mercredi jeudi LSMJ
' Légumes soirs vendredi LSV
' Légumes weekend samedi LWS
' Légumes weekend dimanche LWD
' Viande menu midi retraite VMR
' Viande menu midi weekend VMW
' Viande menu soir VS

Je ne vois pas dans l'usf de midi et soir?

A quoi correspond retraite?

Je pense que c'est plus au chargement des données dans le dico qu'il faut agir

exemple pour le lundi et le mardi: If .ListColumns("Code produit").DataBodyRange(j) Like "LSLM*" Then dic_produits_MJ_légumes(clé) = "LSM"

A+ François

Bonjour Fanfan38,

Non, dans l'USF je n'ai pas fait de distinction entre retraite et soir afin de ne pas trop encombrer le formulaire.

Retraite correspond aux repas (légumes, viandes et dessert) du lundi au vendredi inclus pour le midi.

Je vais essayer de modifier le if pour voir ce que cela donne.

Bonjour Fanfan38,

Pour lundi et mardi, menu journalier, liste des légumes ok. Pour mercredi et jeudi, menu journalier, liste des légumes : liste du lundi augmentée de la liste du mercredi jeudi : serait-il possible pour mercredi et jeudi de n'avoir que la liste des légumes mercredi jeudi ? Si oui, quelle en serait l'instruction ? D'avance merci pour ta réponse.

10tests-ccm-thev.xlsm (216.33 Ko)

deplacer ligne 311: JourSemaine = Weekday(CDate(date_menu), vbMonday)

    With [TabProduits].ListObject
        For j = 1 To .ListRows.Count
            clé = .ListColumns("Nom produit").DataBodyRange(j)
            If .ListColumns("Code produit").DataBodyRange(j) Like "LMR*" Then dic_produits_MMR_légumes(clé) = "LMR"
            If .ListColumns("Code produit").DataBodyRange(j) Like "VMR*" Then dic_produits_MMR_viandes(clé) = "VMR"
            If .ListColumns("Code produit").DataBodyRange(j) Like "DMR*" Then dic_produits_MMR_desserts(clé) = "DMR"
            If JourSemaine < 3 Then
             If .ListColumns("Code produit").DataBodyRange(j) Like "LSLM*" Then dic_produits_MJ_légumes(clé) = "LSM"
            Else
             If .ListColumns("Code produit").DataBodyRange(j) Like "LSMJ*" Then dic_produits_MJ_légumes(clé) = "LSM"
            End If
            If .ListColumns("Code produit").DataBodyRange(j) Like "LSV*" Then dic_produits_MJ_viandes(clé) = "LSV"
            If .ListColumns("Code produit").DataBodyRange(j) Like "DW*" Then dic_produits_MJ_desserts(clé) = "DW"            
        Next j
    End With
    'Si tbCodenatureCréation.....

A+ François

JourSemaine = Weekday(CDate(date_menu), vbMonday)

Je déplace cette ligne pour la mettre au dessus de With [TabProduits].ListObject ?

Je l'ai fait, cela semble correct. Mais pour passer d'un jour à l'autre, je dois fermer le formulaire sinon cela ne marche pas. Par contre, pour un menu du vendredi, pas de liste correcte.

Est ce que ça correspond à tes souhaits

16tests-ccm-thev-2.xlsm (203.12 Ko)

A+ François

Merci, oui les premiers tests effectués correspondent bien à mes souhaits. J'ai testé lundi, mardi, mercredi, jeudi et vendredi. Je vais testé samedi et dimanche : les listes apparaissent incomplètes (respectivement Pâtes à la sauce tomate et asperges sont absents de leur liste respective). Je n'ai testé que pour légumes. Dessert et viande, cela va venir très prochainement. Peut-être faut-il dans 'génération dictionnaires dic_produits_MMR_légumes, dic_produits_MMR_viandes et dic_produits_MMR_desserts faut-il prévoir les lws et lwd ? Si ce n'est pas indiscret et si ce n'est pas classé "Défense", peux-tu me dire ce que tu as fait afin je ne sois pas obligé de fermer le formulaire si je change la date du menu ?

Je ne comprends pas moi si je change la date les listes changent sans devoir relancer l'userform

ce que j'ai fait: j'ai mis un select case au chargement des données dans les dictionnaires. (ligne 318)

A+ François

Merci. et pour la liste des légumes samedi et dimanche, que peut-on faire pour qu'elles soient complètes ?

Je n'avais pas changé la clef

19tests-ccm-thev-2.xlsm (203.31 Ko)

A+ François

Listes toujours incomplètes. Cela te dérangerait-il si je sauvegardais mon fichier avec ton pseudo dans son nom ?

Pour viandes soir, j'ai trouvé tout seul ce qui n'allait pas : c'était marqué LSV au lieu de VS.

J'ai rajouté une ligne pour DS. Mais la liste contient les desserts DMR, DS ET DW. là, faut donc une liste à 1 seul article pour dessert DMR, une liste à 1 seul article pour dessert DS (du lundi soir au vendredi soir inclus), une liste à 21 articles pour desserts DW (samedi et dimanche).

Bonjour Fanfan38,

Dans la procédure tbDateMenu_Change, j'ai ajouté de nouvelles instructions pour Nom nature création (MVMW) après avoir déclaré la variable mais la liste reste vide. Merci de m'aider de manière que cette liste apparaisse.

12tests-ccm-thev.xlsm (196.23 Ko)

J'ai rectifié cette ligne sans succès : If .ListColumns("Code produit").DataBodyRange(j) Like "VMW*" Then dic_produits_MVMW_viandes(clé) = "VMW". J'ai remplacé MJ_Viandes par MVMW_viandes.

Bonjour Fanfan38,

Formulaire UF01_Création (objet) : pourrais-tu regarder le troisième cadre et, plus particulièrement le tbNomPériodeMenuViandeMidiWeekend : la valeur de value n'est pas pris en compte.

16tests-ccm-thev.xlsm (202.52 Ko)

Message de 16 heure 33 : problème résolu.

Bonjour Fanfan38,

Il semblerait que le fichier envoyé hier jeudi ne corresponde pas à la réalité, je ne sais pas pourquoi. J'ai apporté les modifications nécessaires mais les problèmes soulevés dans mes messages d'hier (sauf celui de 16 heures 33) demeurent.

19tests-ccm-thev.xlsm (217.38 Ko)
Rechercher des sujets similaires à "certains remplissent pas mauvaises donne"