Budgets.xlsm : procédure private sub cbNomArticlesBudgets

Dans la feuille liste, tableaux structurés TabArticlesBudgetAlimentaire et TabArticlesBudgetNonAlimentaire, Code articles DA001, DA002 et ainsi de suite, pareil pour les DNA, car, autant que je m'en souvienne, lors du tri alphabétique, la colonne code ne correspondait pas à ce qu'elle est actuellement. Si j'avais du temps, ce qui n'est pas le cas, je pourrais refaire pour voir exactement ce qui se produisait.

ça, je l'ai vu, mais question est: quand on ouvre le formulaire, lequel d'abord? et à partir de là, que fait-on? que doit-on trouver ? A quel endroit?

les codes sont bien avec 3 chiffres, donc qu'attendez-vous?

Bref, j'ai besoin que vous me détailliez le processus.

Je n'ai pas connaissance de l'outil, donc il faut me précisez certains points, partant de là, je peux refaire le processus et voir ce qui va ou ne va pas.

Hélas, je ne me souviens pas du pourquoi des trois chiffres. Ce n'est pas important puisqu'actuellement, avec deux chiffres, cela semble fonctionner et c'est ce qui m'intéresse.

Ceci mis à part, la procédure Private Sub Prédéfinitions ne s'exécute pas (pour l'instant sur Ananas).

13budgets.xlsm (92.83 Ko)

Si ça marche, mais le select case doit aller chercher "cbNomCatégorie.Value" et non pas "cbNomCréationBudgets.Value"

Private Sub Prédéfinitions()
    'Prédéfinition des cbNomPériodeArticlesBudgets, cbNomConditionnementArticlesBudgets, tbQuantitéPourUnRepas, tbQuantitéPourLaJournée. Va permettre de remplir les cb et
    'les tb concernés automatiquement, ce qui évitera d'avoir à les saisir soi-même.
    'Select Case exécute l'un des blocs d'instructions indiqués. Selon la valeur d'une expression (ici, cbNomNatureArticlesBudgets), va exécuter l'instruction indiquée sur la ligne
    'qui suit Case.
    Select Case cbNomCatégorie.Value 'cbNomCréationBudgets.Value
        Case Is = "Dépenses alimentaires"
            Select Case cbNomArticlesBudgets.Value
                Case Is = "Ananas"
                    cbNomPériodeArticlesBudgets.Value = "Selon menu": cbNomConditionnementArticlesBudgets.Value = "Unité : 1 pour 4 repas (ananas)"
            End Select
    End Select
End Sub

Que ferais-je sans vous ? Vous êtes un Saint. Je n'avais pas réalisé que j'avais mal choisi la source.

Je n'ai pas pu répondre plus tôt car j' n'avais pas de connexion à Internet.

À l'exécution, catégorie : dépenses alimentaires, nom article : par rapport au tabkeau structuré, Agneau n'apparaît pas, il ne commence qu'à Ananas. Peut-être faut-il réintroduire les index ?

Bonjour,

Dans la macro 'Liste_Noms_Produits", il faut commencer la boucle "For I " à la 3ème ligne et non à la 4ème.

For i = 3 To DerLig_f2 'Pour i qui part de la 3ème ligne jusqu'à la dernière ligne de F2 

Cdlt

Merci Arturo83 : cela fonctionne.

UserForm UF01_CréationArticlesBudgets : procédure Private Sub cbNomConditionnementArticlesBudgets_Change() : ligne tbCodeNomConditionnementArticlesBudgets.Value = WorksheetFunction.VLookup(cbNomConditionnementArticlesBudgets.Value, .DataBodyRange, 2, False) : impossible de lire la propriété VLookup de la classe WorksheetFunction. J'ai fait un copier-coller de la procédure Période en changeant pérode par conditionnement. D'avance merci pour votre aide. Cela a été dur mais j'ai trouvé : dans le tableau structuré, il y avait un end qui apparaissait à la fin de la parenthèse mais qui n'était pas repris dans le code du formulaire. Ce end supprimé, tout est rentré dans l'ordre.

8budgets.xlsm (96.17 Ko)

Bonjour Arturo83,

J'ai des problèmes sur un autre fichier. La personne qui s'en est occupé semble ne pas trouver de solution et envisage de ne plus s'y intéresser. Je lui ai fait une nouvelle proposition pour laquelle il ne m'a pas encore répondu. Puisse-je vous envoyer le fichier en soulevant les problèmes rencontrés pour voir si vous pouvez trouver les solutions adéquates, quitte à modifier les deux formulaires concernés ?

En gros, il y a des restrictions de prédéfinies pour les menus midi retraite (uniquement possible de créer un menu midi retraite si ce n'est pas un samedi ni un dimanche, viande du mardi au vendredi inclus identique à la viande du lundi, cas spécial si le légume est du maïs ou des radis, dessert du mardi au vendredi inclus identique au dessert du lundi qui sera toujours Pomme); Menu journalier : légume mardi identique à celui du lundi, légume jeudi identique à celui du mercredi, dessert du lundi au vendredi inclus : toujours Pomme, dessert dimanche identique à celui du samedi, si légume du dimanche est Frites, le légume deux sera toujours Asperges, Menu viande midi weekend : uniquement possible de créer un tel menu si c'est un samedi ou un dimanche). La personne mentionnée plus haut a trouvé une solution pour la procédure Function RécupérationMenus afin que les chiffres après la virgule soient pris en compte. Je crois n'avoir rien oublié. Outre ce fichier, je vous joindrai également le fichier qui me sert de modèle.

Bonjour,

Envoyer toujours, on verra bien, j'y jetterai un oeil mais, je ne garanti pas que je puisse trouver une solution à votre problème, tellement ça me paraît compliqué rien que de le lire.

Cdlt

Bonsoir Arturo83

J'ai rempli manuellement la feuille BD menus, tableau structuré TabBDMenus. Exécution Création menus : procédure RécupérationInfosMenus : Menu midi retraite : tout est parfait, pas de problème. Menu journalier (8 octobre 2023 et 9 octobre 2023 : aucun cb ni tb ne se remplit. Menu viande midi weekend (07 octobre 2023) : les cb et tb ne se remplissent pas.

Merci pour votre

9menus.xlsm (302.19 Ko)

aide éventuelle.

Bonjour,

C'est curieux que vous disiez: " Menu midi retraite : tout est parfait, pas de problème.", si je suis la procédure avec la date du 07/10 je n'ai rien!

Sinon, essayez ceci pour le "Menu journalier":

8budgets-menus.xlsm (240.45 Ko)

Cdlt

Bonjour Arturo73,

Normal que vous n'ayez rien pour le 7 octobre en menu midi retraite puis il n'y a rien à cette date dans le tableau structuré (d'ailleurs, il n'y aura aucun menu midi retraite si le jour tombe un samedi ou un dimanche).

J'ai téléchargé votre fichier mais je n'ai toujours rien en menu journalier pour la date spécifiée (8 octobre 2023 et 09 octobre 2023) ni pour menu viande midi weekend (7 octobre 2023). Avez-vous modifié le code et, si oui, dans quelle(s) procédure(s) ?

Bonnes journée et continuation. Prenez bien soin de vous.

Dans la fonction " Private Function VérifDateMenu() As Boolean", j'ai ajouté ceci

            Case Is = "Menu midi retraite", "Menu journalier"
                If Weekday(tbDateMenu.Value, vbMonday) >= 6 Then
                    MsgBox "Menu midi retraite : saisir une date du lundi au vendredi inclus !", vbExclamation
                End If

et pour le fonctionnement, voici la vidéo

budgets

A moins que le problème ne situe pas ici, dans ce cas , réexpliquez-moi.

Merci pour le renseignement.

Feuille accueil : clic sur création menus

UserForm UF02_CréationMenus : Nom nature création menu : Menu journalier Date : 8 octobre 2023 : le message m'avertissant de l'existence de ce menu pour cette date ne s'affiche pas, d'où l'impossibilité de cliquer sur OK à son apparition, d'où certainement le nom remplissage des cb et des tb. Pour Menu journalier, il n'y a aucune restriction de création quelle que soit le jour de la semaine. Le message de l'existence d'un menu ne doit pas s'afficher si il s'agit de la création d'un menu qui n'existe pas encore, il ne doit apparaître uniquement pour un menu qui figure bien dans TabBDMenus.

Bon, je n'ai pas assimilé encore toutes les subtilités de ce fichier, mais:

"UserForm UF02_CréationMenus : Nom nature création menu : Menu journalier Date : 8 octobre 2023 : le message m'avertissant de l'existence de ce menu pour cette date ne s'affiche pas, d'où l'impossibilité de cliquer sur OK à son apparition, d'où certainement le nom remplissage des cb et des tb."

Quel bouton "OK" ?

Si je suis bien votre procédure,après avoir sélectionner une date, les cb se chargent bien comme c'était demandé.

Quant au message qui ne s'affiche pas, c'est parce que l'index I est égal à 0 dans :

Private Sub RécupérationMenu()
    'Recherche existence menu.
    I = IndiceMenu(cbNomNatureCréationMenu.Value, DateValue(tbDateMenu.Value))
    If I > 0 Then
        'Menu existant dans la feuille BD menu, tableau structuré TabBDMenus : récupération infos menu.
        MsgBox "Le menu " & cbNomNatureCréationMenu & " du" & Format(tbDateMenu, "dddd d mmmm yyyy") & " exite déjà dans la feuille BD menus, tableau structuré tabBDMenus " & vbCrLf & vbCrLf & "Vous pouvez le modifier ou le supprimer.", vbExclamation
        Call RécupérationInfosMenu(I)

Feuille accueil : clic sur création menus

UserFormUF02_CréationMenus : Nom nature création menu : clic sur Menu midi retraite : date : 6 octobre 2023

Merci d'effectuer les manipulations ci-dessus : va surgir à l'écran le message Le menu midi retraite du 6 octobre 2023 existe déjà, vous pouvez le modifier ou le supprimer : dans cette boîte de dialogue clic sur OK : les cb et les tb se remplissent.

Index I égale 0 : il s'agit de l'indice if I >0 then : si c'est celui-là, que faut-il mettre à sa place ?

Problème détecté, dans la feuille "BD menus", le tableau structuré n'est pas bien dimensionné, $A$3:$A$4 au lieu de $A$3:$A$7, c'est pour cela que le menu journalier situé sur la deuxième ligne ne peut pas être vu. malgré cela il subsiste en cor un problème dans le code, je regarde ça dans un moment et vous ferez le retour bientôt.

Edit, en fait c'est tout le tableau qu'il faut prendre soit: $A$3:$AJ$7

Je n'avais pas pensé que cela pouvait venir du tableau structuré.

Menu journalier du 8 octobre : il ne s'affiche pas.

Menu journalier du 9 octobre 2023 : il s'affiche

Menu viande midi weekend du 07 octobre 2023 : il s'affiche bien mais la viande n'est pas conforme au tableau structuré (affichage : Rôti de porc; tableau structuré : Bœuf) ni le nom période viande midi weekend (PAM05 au lieu de second semestre)

Rechercher des sujets similaires à "budgets xlsm procedure private sub cbnomarticlesbudgets"