CodeNomDessert par cbNomDessert

Bonjour à toutes et à tous,

J'ai de nouveau besoin d'aide.

Feuille accueil : clic sur Création menus.

Formulaire uf02_CréationMenus : Nom nature création menu : clic sur menu journalier; Date menu : clic sur 18 octobre 2023; Nom légume : clic sur Petits pois et jeunes carottes; Nom dessert : il ressort bien Pomme (c'est bon); Code nom dessert : il sort DMR01 alors qu'il devrait sortir DS01. D'avance merci de m'aider à régler ce problème.

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

14menus.zip (367.33 Ko)

Voir dans le fichier ci-dessous la solution que j'ai trouvée seul (procédure PrédéfinitionsSpécifiques, partie Menu journalier). Si vous avez une autre solution, merci de me la communiquer. Un commentaire sur cette solution sera le bienvenu.

8menus.zip (370.40 Ko)

Bonjour,

Ça manque d'explications, "Pomme" fait référence à 2 codes différents "DMR01" pour "Code dessert midi retraite" et "DS01" pour "Code dessert soir".

A quel endroit c'est stipulé qu'il faille prendre un ou l'autre?

Le code va chercher "Pomme" dans la table "TabBDArticlesMenus" où il n'y a nulle part "Nom nature création", ("Menu journalier" entre autres). il faut rechercher "Pomme" mais aussi "Menu Journalier" pour prendre le bon code.

Cdlt

Bonjour Arturo83,

J'ai compris ce que vous avez mis (cela m'arrive quelques fois de comprendre rapidement). Dans MENUS.xlsm, UserForm UF02_CréationMenus, serait-il possible de lui indiquer d'aller chercher l'information dans la feuille BD articles menus, tableau structuré TabBDArticlesMenus, colonne c ou colonne D (ou les deux à la fois) ? Si oui, dans quelle procédure et comment rédiger l'instruction adéquate ?

D'avance merci pour votre aide.

Non, ça ne me convient pas, là, vous m'indiquez des emplacements, mais ça ne m'aide pas beaucoup, je préfère que vous me donniez toutes les actions à faire, et à partir de là, me donner le résultat attendu.

Vous connaissez par coeur votre fichier et, moi je me contente d'essayer de le déchiffrer et d'y apporter quelques retouches afin d'obtenir le résultat souhaité.

Alors, il vous faut raisonner comme si vous étiez à ma place.

je préfère que vous me donniez toutes les actions à faire, et à partir de là, me donner le résultat attendu.

1) Feuille Accueil : clic sur Création menus
2) UserForm UF02_Création menus : Zone de liste modifiable cbNomNatureCréationMenu : cliquer sur Menus journalier; Zone de texte tbDateMenu : choisir 13 octobre 2023;Zone de liste modifiable cbNomLégume : Tomates; Zone de liste modifiable cbNomViande : cliquer sur saucisson;Zone de liste modifiable cbNomDessert : du fait de la procédure PrédéfinitionsSpécifiques, le nom Pomme est inscrit d'office; Zone de texte tbCodeNomDessert : il met DMR01 au lieu de DS01.
Pour exécuter ces instructions, il faut prendre le premier fichier de mon message d'hier de 12h49. Si vous ne pouvez pas le télécharger, je vous le renverrai.

Ceci est-il correct?

9menus-1.zip (286.75 Ko)

oui, c'est bon. Dans quelle procédure avez-vous effectué une modification pour obtenir ce résultat souhaité ?

ici:

Private Function IndiceArticle(ByVal NomArticle As String) As Long
    If NomArticle = cbNomLégumeDeux.Value Then
        CodeRecherche = tbCodeNomLégumeDeux.Value
        For Chiff = 0 To 9
            CodeRecherche = Replace(CodeRecherche, Chiff, "")
        Next Chiff
        IndiceArticle = MATCH2(Range("TabBDArticlesmenus[Code nom nature articles menus]"), CodeRecherche, Range("TabBDArticlesMenus[Nom articles menus]"), NomArticle)
    Else
    'Worksheetfunction.match : Renvoie la position relative d'un élément dans une matrice (matrice : permet de créer des formules uniques permettant d’obtenir plusieurs résultats
    'et qui agissent sur un groupe d’arguments répartis dans des lignes et des colonnes. Une plage matricielle partage une même formule tandis qu’une constante matricielle est
    'un groupe de constantes qui sert d’argument.), qui correspond à une valeur spécifiée dans un ordre spécifié. Utilisez la fonction MATCH au lieu de l'une des fonctions
    'LOOKUP lorsque vous avez besoin de la position d'un élément dans une plage au lieu de l'élément proprement dit.
        'cbNomNatureCréationMenu
        If cbNomNatureCréationMenu.Value = "Menu journalier" And NomArticle = "Pomme" Then
            IndiceArticle = WorksheetFunction.Match("Dessert soir", Range("TabBDArticlesMenus[Nom nature articles menus]"), 0)
        Else
            IndiceArticle = WorksheetFunction.Match(NomArticle, Range("TabBDArticlesMenus[Nom articles menus]"), 0)
        End If
    End If
End Function

et plus précisément:

        If cbNomNatureCréationMenu.Value = "Menu journalier" And NomArticle = "Pomme" Then
            IndiceArticle = WorksheetFunction.Match("Dessert soir", Range("TabBDArticlesMenus[Nom nature articles menus]"), 0)
        Else
            IndiceArticle = WorksheetFunction.Match(NomArticle, Range("TabBDArticlesMenus[Nom articles menus]"), 0)
        End If

merci. Je vais rectifier, après quoi je mettrai le fil en résolu.

Rechercher des sujets similaires à "codenomdessert cbnomdessert"