Message d'existence ne s'affiche pas

Bonjour,

Feuille Accueil : clic sur création menus; formulaire UF02CréationMenus : Nature menu : clic sur légume weekend dimanche; Nature menu allégée : clic sur Menu journalier; Date menu : clic sur 10 août 2025 Le message d'existence ne s'affiche pas. Merci pour votre aide.

comptabilitev2.xlsm (274.65 Ko)

Bonjour à tous,

Sur quel champ voulez-vous faire le test ?

  • tbCodeNatureMenu qui peut contenir les références à : 'Légumes WeekEnd samedi', 'Légume Weekend dimanche', 'Dessert weekend ou bien
  • tbCodeNatureMenuAllégée qui peut contenir la référence à : Menu midi viande weekend

Voici les modifications pour tenir compte de la valeur de : tbCodeNatureMenu

Private Function VérifDateMenu() As Boolean
    'NOTE "Cette fonction ne devrait avoir qu'une utilité c'est de vérifier les dates elle ne devrait pas afficher de message.
    VérifDateMenu = True
    Select Case True
        Case tbCodeNatureMenu.Value Like "MMR"              ' // On vérifie si la zone de texte contient le texte "MMR"
            If Weekday(DateMenu, vbMonday) >= 6 Then
                MsgBox "Menu midi retraite : saisir une date du lundi au vendredi inclus !", vbExclamation
                VérifDateMenu = False
            End If

        Case tbCodeNatureMenu.Value Like "*WE*"             ' // On vérifie si la zone de texte contient le texte "WE"
            If Weekday(DateMenu, vbMonday) < 6 Then
                MsgBox "Menu midi viandes weekend : saisir une date du samedi au dimanche inclus !", vbExclamation
                VérifDateMenu = False
            End If
    End Select
End Function

Et le code pour vérifier sur la valeur de la zone de texte : tbCodeNatureMenuAllégée

Private Function VérifDateMenu() As Boolean
    'NOTE "Cette fonction ne devrait avoir qu'une utilité c'est de vérifier les dates elle ne devrait pas afficher de message.
    VérifDateMenu = True
    If tbCodeNatureMenuAllégée.Value Like "*WE*" Then       ' // On vérifie si la zone de texte contient le texte "WE"
        If Weekday(DateMenu, vbMonday) < 6 Then
            MsgBox "Menu midi viandes weekend : saisir une date du samedi au dimanche inclus !", vbExclamation
            VérifDateMenu = False
        End If
    End If
End Function

Bonsoir Jean-Paul,

Je vais tester mais je ne comprends pas pourquoi modifier ces deux procédures puisque mon problème est que le menu journalier du 10 août 2025 existe déjà et qu'il ne le signale pas. C'est différent de saisir une mauvaise date pour les MMR et les MVMWE.

Re,

Bon je n'avais pas tout compris, faut dire qu'il faut suivre et c'est pas évident.

Il ne risque pas d'y avoir de message à la sélection de la date, aucun code ne fait cela :

Private Sub tbDateMenu_Change()
'    Dim JourSemaine As Long

    If VérifDateMenu = False Then Exit Sub

    On Error Resume Next

    Dim TabDate() As String
    TabDate = Split(tbDateMenu, " ")
    DateMenu = Format(TabDate(1) & "/" & TabDate(2) & "/" & TabDate(3), "dd/mm/yyyy")
    tbMoisMenu = TabDate(2) & " " & TabDate(3)

    If tbCodeNatureMenuAllégée.Value = "MMVWE" Then
        If Month(DateMenu) <= 6 Then
            tbSemestreMenuMidiViandesWeekend.Value = "Premier semestre" & Year(DateMenu)
        Else
            tbSemestreMenuMidiViandesWeekend.Value = "Deuxième semestre" & Year(DateMenu)
        End If
    End If
    Dim J As Long
    J = WorksheetFunction.Match(CLng(DateMenu), Range("TabJoursFériés[Date jour férié]"), 0)
    On Error GoTo 0
    If J <> 0 Then
        tbJourFérié.Value = Range("TabJoursFériés[Nom jour férié]").Item(J)
    Else
        tbJourFérié.Value = ""
    End If
    ' Effacement préalable.
    Call EffacementContrôles

    ' Initialisations des listes codes articles selon code Légumes, code légume deux, code viandes, code desserts et date menu.
    ' Appel de la procédure PrédéfinitionsSpécifiques.
    Call PrédéfinitionsSpécifiques
    ' Appel de la procédure RécupérationMenu.
    Call RécupérationMenu
End Sub

Dans quelle table la recherche doit-elle être faite ?

Bonjour,

Beaucoup d'erreurs, pour le problème de la date introuvable, dans la fonction "Private Function IndiceMenus"

Remplacez

        If Range("TabBDMenus[Code nature menu]").Item(I) = Me.tbCodeNatureMenuAllégée And Range("TabBDMenus[Date menu]").Item(I) _
         = Format(tbDateMenu, "dddd d mmmm yyyy") Then

par:

        If Range("TabBDMenus[Code nature menu]").Item(I) = Me.tbCodeNatureMenuAllégée And Range("TabBDMenus[Date menu]").Item(I) _
         = DateMenu Then 

après correction, d"autres erreurs apparaissent, il suffit de lancer la macro pour voir où elles se trouvent:

- la variable "cbPériodeDesserts" n'est pas déclarée

- Dans la procédure "Sub cbLégumes_Change", ci-dessous les lignes en marron (corrigées), on y trouve des "Dataq" à la place de "DataBodyRange"

image

- des titres de colonnes n'existent pas dans le tableau "TabBDMenus" comme "Semestre menu midi viandes weekend" ou "Période dessert"

- dans la "Sub RécupérationInfosMenu", à la ligne "tbQuantitéViandesJour.Value = .ListColumns("Quantité légume viande jour").DataBodyRange(I)", la colonne "Quantité légume viande jour" n'existe pas.

Bonjour Arturo83,

Merci pour tous ces signalements. Je vais corriger. Pourquoi déclarer la variable cbPériodeDesserts ?. J'ai vu l'erreur cbPériodeDeserts ; il manque le deuxième s. Je vais supprimer le cb et le recréer (modifier le (Name) du cb ne donne pas le résultat souhaité. Il faut toujours supprimer et recréer.

Il faut toujours supprimer et recréer.

La variable doit être déclaré tout en haut du module avant la première macro, et si elle est utilisée dans plusieurs module alors, la déclarer en "Public" au lieu de "Dim"

Existence du menu signalée. Merci. Maintenant, il reste le problème du cbLégumes qui reste vide (voir le fil dédié sur le forum)

Maintenant, il reste le problème du cbLégumes qui reste vide (voir le fil dédié sur le forum)

Quel est le titre du fil? De quel jour?

Apparemment, il a disparu. Il datait d'hier mercredi et il devait s'intituler cbLégumes reste vide. je vais le recréer.

Bonjour à tous,

@Budgets quelques petites informations sont nécessaires.

  • Sur votre formulaire vous avez les légumes, les viandes, et les desserts. Alors pourquoi dans la liste déroulante 'Nature menu' nous retrouvons des entrées comme 'Légume soir lundi mardi' ou 'Dessert menu retraite' ce n'est pas logique.
  • Idem pour 'Nature menu allégé' l’intitulé ne correspond pas à ce qu l'on trouve dedans.
  • Pourquoi dans la procédure tbDateMenu_Change() vous faites tout un tas de mise en forme vous passez par PrédéfinitionsSpécifiques() puis par IndiceMenus afin de valider la date, on marche sur la tête là non ?

Vous devriez tester si la date est présente dans la table au début de la procédure tbDateMenu_Change() si c'est le cas vous en informer l'utilisateur. et au besoin vous stopper la mise à jour de la table.

Bonjour Jean-Paul,

Comme je vous l'ai déjà dit, j'ai pris modèle sur différents programmes qui m'ont été proposés par d'autres contributeurs. Je ne les ai pas analysés pour savoir si c'était bien ou mal : ke me suis arrêté sur le fait qu'ils me donnaient satisfaction.

Rechercher des sujets similaires à "message existence affiche pas"