Tout ce qui concerne Légume deux reste absent

Bonjour à toutes et à tous,

Malgré les instruction présentes à la fin de la procédure Private Sub cbLégumes_Change, lorsque je choisis un menu journalier pour le dimanche 10 août 2025 avec comme Légumes : Frites, les contrôles de légume deux n'apparaissent pas. D'avance merci pour votre aide à résoudre ce problème.

Le fichier Arturo (qui me sert d'exemple malgré qu'il soit très incomplet) obéit aux instructions même si il y a des incohérences (code légume deux, période et code période légume deux).

À moins que ce soit encore et toujours un problème de date texte (avec tb comme préfixe) qui devrait être une date (sans le préfixe tb). Mais alors dans quelle (s) procédure (s) ? Apparemment, c'était le cas mais pourquoi, je n'en sais rien. J'ai trouvé un fichier dans lequel tout ce qui concernait légume deux apparaissait dans le formulaire au moment voulu. J'ai regardé le code et, là, surprise, dans l'entête, il y avait un TabDate As String. J'ai testé dans ledit fichier et enfin, j'ai eu tout ce qui concernait Légume deux. J'ai tapé la même chose dans mon fichier mais le résultat attendu est toujours absent. Dans le fichier d'Arturo83, cette mention est absente et il fonctionne tout de même avec des incohérences cependant. Si quelqu'un a une idée sur le pourquoi de la chose, merci de me la communiquer.

Fichier dans lequel j'ai légume deux au moment voulu :

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

Bonjour,

Remplacez la procédure "cbLégumes_change" par celle-ci:

Private Sub cbLégumes_Change()
Dim I As Long
'Message = False
'Récupération des valeurs
'Avec la feuille Listes.
    With Sheets("Listes")
'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 ma _
tricielle 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 be _
soin de la position d'un élément dans une plage au lieu de l'élément proprement dit.
        If Suppr = True Then
'Si la suppression est demandée, alors on fait la recherche dans la feuille BD menus, tableau structuré TabBDMenus, colonne Code légu _
me.
        I = WorksheetFunction.Match(Article, Range("TabBDMenus[Code légume]"), 0)
'Si ce n'est pas une suppression, alors on fait la recherche dans la feuille Listes, tableau structuré TabLégumesViandesDesserts, colonne _
Légumes, Viandes, Desserts. Remarque importante : la ligne suivante est obligatoire sinon la Zone de liste modifiable cbPériodeLégumes _
reste vide.
        Else
            I = WorksheetFunction.Match(cbLégumes, Range("TabLégumesViandesDesserts[Légumes, Viandes, Desserts]"), 0)
        End If
        tbCodeLégumes = Range("TabLégumesViandesDesserts").ListObject.DataBodyRange(I, 4)
        cbPériodeLégumes = Range("TabLégumesViandesDesserts").ListObject.DataBodyRange(I, 5)
       tbCodePériodeLégumes = Range("TabLégumesViandesDesserts").ListObject.DataBodyRange(I, 6)
       cbConditionnementLégumes = Range("TabLégumesViandesDesserts").ListObject.DataBodyRange(I, 7)
       tbCodeConditionnementLégumes = Range("TabLégumesViandesDesserts").ListObject.DataBodyRange(I, 8)
    End With
'Va créer automatiquement le numéro création menu à partir du contenu de la Zone de liste modifiable cbNatureMenuAllégée et l'incré _
menter de 1 à chaque création d'un menu. WorksheetFunction.CountIfs : Compte le nombre de cellules à l'intérieur d'une plage qui répon _
dent à plusieurs critères.
    tbNuméroCréationMenu = tbCodeNatureMenuAllégée & "-" & Format(WorksheetFunction.CountIfs(Range("TabBDMenus[Nature menu allégée]"), _
    cbNatureMenuAllégée.Value) + 1, "00")
'Err.Number : Renvoie ou définit une valeur numérique indiquant une erreur. La propriété Number est la propriété par défaut de l'objet Err. _
Propriété en lecture-écriture.
    If Err.Number > 0 Then tbNuméroCréationMenu = cbNatureMenuAllégée.Value & "-01"
'Recherche existence menu à la datedu menu dans la feuille BD menus, tableau structuré TabBDMenus.
    I = IndiceMenus(tbCodeNatureMenuAllégée, DateMenu)
    If I > 0 Then
'Menu à la date menu proposée existant dans la feuille BF menus, tableau structuré TabBDMenus.
        With Range("TabBDMenus").ListObject
'Si la variable "Message" est à "False", alors on montre le message d'existence du menu à la date proposée, sinon au saute ce message.
            If Message = False Then GoTo Traitement1 Else: GoTo Traitement2
Traitement1:
'Acceptation modification ou suppression du menu. vbCrLf : dans l'aide de Microsoft Visual Basic pour Applications, dans la cadre  en _
haut à gauche, taper Constances diverses. vbCrLf : Visual Basic Caractère de saut de paragraphe. vbLf : Visual Basic Caractère de saut _
de ligne. CrLf : Visual Basic combinaison des caractères de retour de chariot et de saut de ligne. vbInformation : dans l'aide de Microsoft _
Visual Basic pour Applications, dans le cadre en haut à gauche, taper MsgBox Constances. vbInformation : Visual Basic Message d'in _
formation. vbExclamation : message d'avertissement.
'Message d'avertissement.
'            If MsgBox("Le menu du " & tbDateMenu.Value & " " & "existe déjà dans la feuille BD menus, tableau structuré TabBFMenus " & _
'            vbCrLf & vbCrLf & "Voulez-vous le modifier ou le supprimer ?", vbExclamation + vbYesNo) = vbYes Then
                Message = True
Traitement2:
'Modification acceptée : on récupére les infos menus non encore renseignées (toutes les Zones de liste modifiable et de texte concernant _
Période et conditionnement de la Zone de liste modifiable cbNatureNature et de la date menu proposé.
                cbPériodeLégumes.Value = .ListColumns("Période légume").DataBodyRange(I)
                tbCodePériodeLégumes.Value = .ListColumns("Code période légume").DataBodyRange(I)
                cbConditionnementLégumes.Value = .ListColumns("Conditionnement légume").DataBodyRange(I)
                tbCodeConditionnementLégumes.Value = .ListColumns("Code conditionnement légume").DataBodyRange(I)
                cbPériodeLégumeDeux.Value = .ListColumns("Période légume deux").DataBodyRange(I)
                tbCodePériodeLégumeDeux.Value = .ListColumns("Code période légume deux").DataBodyRange(I)
                cbConditionnementLégumeDeux.Value = .ListColumns("Conditionnement légume deux").DataBodyRange(I)
                tbCodeConditionnementLégumeDeux.Value = .ListColumns("Code conditionnement légume deux").DataBodyRange(I)
                tbQuantitéLégume.Value = .ListColumns("Quantité légume").DataBodyRange(I)
                tbQuantitéLégumeDeux.Value = .ListColumns("Quantité légume deux").DataBodyRange(I)
                cbViandes.Value = .ListColumns("Viande").DataBodyRange(I)
                tbCodeViandes.Value = .ListColumns("Code viande").DataBodyRange(I)
                cbPériodeViandes.Value = .ListColumns("Période viande").DataBodyRange(I)
                tbCodePériodeViandes.Value = .ListColumns("Code période viande").DataBodyRange(I)
                cbConditionnementViandes.Value = .ListColumns("Conditionnement viande").DataBodyRange(I)
                tbCodeConditionnementViandes.Value = .ListColumns("Code conditionnement viande").DataBodyRange(I)
                tbRéférenceSemestreViandesMidiWeekend.Value = .ListColumns("Référence semestre viandes midi weekend"). _
                DataBodyRange(I)

                End With
            Else
'Modification refusée : initialiser les infos menus.
                tbDateCréationMenu = Format(Date, "dddddd")
                tbNuméroCréationMenu.Value = tbNuméroCréationMenu.Value & "-" & "00"
            End If
'Appel de la procédure MiseÀJourTitre.
    Call MiseÀJourTitre
'Appel de la procédure AfficherLégumeDeux avec conditions.
    If cbNatureMenu = "Légume weekend dimanche" And cbLégumes = "Frites" Then Call AfficherLégumeDeux
    tbQuantitéLégume.Value = "20,00"
    cbLégumeDeux.Value = "Asperges"
    tbCodeLégumeDeux.Value = "LWED01"
    cbPériodeLégumeDeux = "Dimanche soir"
    tbCodePériodeLégumeDeux = "PAM03"
    cbConditionnementLégumeDeux.Value = "1 bocal ou 1 boîte pour 1 repas (Asperges)"
    tbCodeConditionnementLégumeDeux.Value = "CAM01"
    tbQuantitéLégumeDeux.Value = "1,00"
    'Message = False
End Sub

et dans le bas de la procédure, les valeurs sont imposées, s'il y en a qui ne conviennent pas, remplacez les valeurs et, si l'une d'entre-elles doit être vide alors supprimez la valeur entre guillemets.

Bonjour Arturo83,

Merci Arturo83. Un premier test semble donner le résultat escompté. Toutefois, dans le fichier utilisé chez moi, il manque la procédure Private Sub MasquerLégumeDeux. Je vais chercher un fichier où elle est présente et agir en conséquence. Je vous ferai part du résultat du test. Test réussi : rien sur légume deux à l'ouverture du formulaire, quand les cb et tb légumes sont remplis, apparition de tout ce qui concerne légume deux et les informations sont présentes. J'ai imprimé votre suggestion. Je vais la comparer avec la mienne pour tenter de voir ce qui n'allait pas chez moi. Tout est bon sauf dans le fichier comptabilité 14082025-1.xlsm : mois concerné : il met Octobre 2025 au lieu d'Août 2025, je ne sais pas pourquoi.

Bonjour,

A la fin de la sub "Sub RécupérationMenu" ,mettez cette ligne en remarque(mettre une apostrophe devant la ligne)

       'tbMoisMenu.Value = WorksheetFunction.Proper(Format(DateMenu, "mmmm yyyy"))

Car l'affichage du mois et année est déjà fait dans la sub "tbDateMenu_Change"

Merci. Je vais tester. Pourriez-vous m' indiquer les modifications apportées dans la procédure car je n'en vu aucune. D'avance merci. Dans ce fichier, j'ai remplacé mon cblégumes_Change (par copier-coller) par le votre. J'ai une erreur : end with sans with (juste avant modification refusée). Comme d'habite des erreurs signalées qui ne correspondent pas à la réalité des choses : il ne manque pas un with mais il manque un end if qui a pour conséquence de ne plus signaler d'erreur. Dans votre cblégumes_Change, vous semblez avoir supprimé tout ce qui concernait Cassoulet, Choucroute et Paella. Avez-vous prévu de les remettre ailleurs ? car évidemment; si cassoulet, la ligne viandes ne se remplit plus ! En résumé, modifications apportées : suppression d'un end with à la fin de la procédure qui a été déplacé plus haut, création d'un end if au dessus de ce end with et suppression de tout ce qui concernait Cassoulet, Choucroute et Paella

je n'ai pas parlé de changer "cblégumes_Change".

Votre dernière question était:

Tout est bon sauf dans le fichier comptabilité 14082025-1.xlsm : mois concerné : il met Octobre 2025 au lieu d'Août 2025, je ne sais pas pourquoi.

et j'ai répondu précisément sur ce dernier point et visiblement, vous ne l'avez pas appliqué.

Rechercher des sujets similaires à "tout qui concerne legume deux reste absent"