Existence d'un menu non signalée

Bonjour à toutes et à tous,

Je n'ai créé qu'un seul menu pour lequel quand je tente de le recréer, je n'ai pas le message qu'il existe déjà. Merci de m'aider à corriger ce problème.

J'essaie de créer un menu midi retraite à la date du 27 juillet 2025, ce qui n'est passible mais le message prévu (voir Private function VérifDateMenu) ne s'affiche pas. de plus, j'ai un message d'erreur (variable non définie : DateMenu) sur if Weekday(DateMenu, vbMonday)>6 then

Mêmes problèmes pour VMMWE.

Dans d'autres instructions, même problème avec DateMenu : DateMenu : affaire réglée (j'avais oublié de la déclarer dans un dim). Jour férié : ne s'exécute pas (14 juillet 2025)

Dans ce fichier, je me base sur les instructions d'Arturo83 du 04 juin 2025 et sur le fichier deBegood.

10comptabilite.xlsm (243.79 Ko)

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

Bonjour,

J'essaie de créer un menu midi retraite à la date du 27 juillet 2025, ce qui n'est possible mais le message prévu (voir Private function VérifDateMenu) ne s'affiche pas. de plus, j'ai un message d'erreur (variable non définie : DateMenu) sur if Weekday(DateMenu, vbMonday)>6 then

Private Function VérifDateMenu() As Boolean
    VérifDateMenu = True
    Select Case tbCodeNatureMenuAllégée.Value
        Case Is = "MMR"
            'Menu midi retraite : vérification saisie date du lundi au vendredi. >= : supérieur ou égal à (ici, supérieur ou égal à 6, soit samedi ou diman _
            che).
            If Weekday(DateMenu, vbMonday) >= 6 Then
                MsgBox "Menu midi retraite : saisir une date du lundi au vendredi !", vbExclamation
                VérifDateMenu = False
            End If
        Case Is = "VMMWE"
            'Viande menu midi weekend : vérification saisie date du samedi au dimanche. < 6 : inférieur à (ici 6, soit si ce n'est pas un samedi ou un di _
            manche.
            If Weekday(DateMenu, vbMonday) < 6 Then
                MsgBox "Viande menu midi weekend : saisir une date samedi ou dimanche !", vbExclamation
                VérifDateMenu = False
            End If
        End Select
End Function

il y a quelque chose qui cloche dans la façon de procéder, il faut contrôler la date du menu mais en fonction du "tbCodeNature MenuAllégée" or, quand s'ouvre le formulaire, il faut saisir en premier la date, ce qui à pour effet de lancer la procédure "Private Sub tbDateMenu_Change" alors que "tbCodeNature MenuAllégée" n'est pas encore rempli, alors qu'il y a un "select case" dans la fonction qui teste cette condition, donc les conditions de test de la date ne seront jamais réunies. Peut-être que vos soucis viennent de là!

Bonjour Arturo93,

Quel serait alors selon vous l'ordre qu'il faudrait adopter pour éviter les problèmes, quitte à refaire le formulaire ou à modifier l'ordre avec l'onglet prévu à cet effet (je ne me souviens pas de son nom : tabulation quelque chose, je crois). ?

Le procédure Private Function VérifDateMenu() As Boolean jointe dans votre message est-elle la procédure telle qu'elle existe actuellement ou elle a été modifiée ? Après vérification, sauf erreur ou omission de ma part, c'est la même. D'avance merci pour votre réponse.

Disons qu'il faut prendre le problème autrement, que voulez-vous obtenir?

-Est-ce que lorsqu'on choisi une date de menu, on vérifie si cette dernière est présente dans la feuille "BdMenu" auquel cas on retourne le message, et ce quel que soient les menus, articles, menus allégés, autres...?

C'est surtout ça qu'il faut déterminer

-

Désolé, je ne suis pas assez expert, contrairement à vous, pour vous donner une réponse valable, fiable. Disons, tout d'abord, choisir le code nature menu allégée, ensuite choisir la date du menu, personnellement je pense que ce seraient les meilleurs critères. J'ai pensé également, si cela pouvait simplifier les saisies, à garder Nature menu et code nature menu pour le tableau structuré TabLégumesViandesDesserts mais supprimer cbNatureMenu et tbCodeNatureMenu du formulaire, si cela ne posait aucun problème.

Le problème avec vous, c'est que vous commencez quelque chose et en cours de route, vous voulez faire des modifications sur ce qui vient d'être fait, sachant très bien qu'il risque d'y avoir des répercutions sur le code existant.

Commencez par analyser votre fichier. En cliquant sur le bouton "Création Menu", ça ouvre le formulaire, qui aussitôt vous impose le calendrier pour sélectionner une date, or d'après ce que vous voulez, il faut d'abord choisir la "Nature allégée" puis la date, donc à l'ouverture du formulaire, il ne faut pas ouvrir le calendrier en premier, ce dernier ne devra doit s'ouvrir qu'à partir du moment où la "nature allégée" sera sélectionnée et pas avant.

Pour vous quelle serait la meilleure solution ? Si d'abord Nature menu allégée, merci de me proposer les modifications à effectuer. Les propositions que je fais ne sont que des suggestions qui peuvent être refusées, cela ne me contrarierait pas.

Pourquoi vouloir tout changer, ça marchait bien comme c'était, la date saisie en premier puis vérification dans la "BdMenu", cela ne vous convenez pas?

Je ne suis pas un expert, je vous fais entière confiance pour me proposer ce qui vous semble le plus adapté, quitte à refaire ou à transformer le formulaire pour qu'il réponde ce qui serait le mieux.

Moi non plus je ne suis pas un expert et je n'ai pas cette prétention, et en temps que non-expert, je ne changerai pas ce qui marche déjà, sinon on ne s'en sortira jamais, pourquoi vouloir toujours tout recommencer?

Reprenez ce que vous aviez en votre possession et qui marchait bien.

Je ne comprends pas pourquoi votre problème n'est toujours pas résolu depuis le temps alors que plusieurs personnes sont intervenues et vous ont proposé des solutions qui semblaient vous satisfaire, alors pourquoi en sommes-nous toujours là?

Il y a un fichier qui fonctionne correctement et je le garde. Celui-là, qui fait appel à TabLégumesViandesDesserts, créé par vous, je voudrais aller jusqu'au bout pour qu'il me donne satisfaction et que vous n'ayez pas fait du travail pour rien. Donc si le formulaire est correct mais que l'ordre de saisie n'est pas le bon, merci de me communiquer les instructions qui permettront un ordre de saisie qui vous semblerait le mieux adapté.

Pour que je ne travaille pas pour rien, déposez le fichier qui fonctionne et je regarderai un peu plus tard.

Il fonctionne partiellement mais il est incomplet.

Celui fonctionne correctement mais il est très différent.

Celui-ci fonctionne également correctement;

Bonjour à tous,

@BUDGETS

Vous oubliez tous les programmes que l'on vous a fournis depuis plusieurs années qui fonctionnaient parfaitement et vous en voulez encore un autre ?

Quant à ceux qui sont incomplets il serait bon de dire en quoi ils le sont !

En tout cas ce sont sûrement vos spécifications (explications) qui sont insuffisantes.Alors prenez le temps de le faire. Mais attention ce ne sont pas seulement quelques lignes sur le forum mais une véritable description de plusieurs pages dans un fichier word.

@Arturo83

Oui il est comme ça le garçon. Mais il a de la ressource et quelque soit ce que vous luis fournirez il recommencera à zéro l'année prochaine. Bon courage.

À partir du fichier COMPTABILITÉ.xlsm, se servir du tableau structure TabLégumesViandesDesserts uniquement dans la feuille Listes et/ou, si cela est possible, également dans le formulaire UF02CréationMenus. Les problèmes Mois menus et Jours fériés sont résolus. Maintenant, je souhaiterais que je sois informé de l'existence d'un menu pour un jour donné si celui-ci existe déjà et qu'essaie de le recréer. Si, comme l'a suggéré Arturo83, l'ordre de tabulation pose un problème pour l'existence d'un menu, donnez-moi l'ordre de tabulation adéquat. En gros, le tableau structuré TabBDMenus du fichier COMPTABILITÉ devra ressembler au tableau structuré TabBDMenus du fichier MENUS 2025.

Bonjour,

Reprenez la macro "tbDateMenu_Change" de "COMPTABILITÉ" et comparez avec celle de "MENU2025",

il manque "Call RécupérationMenu" en fin de macro, qui appelle la macro du même nom et qui, elle aussi, appelle d'autres macros et fonctions il ne faut pas les oublier.

Il faut que vous commenciez par là, reprenez le code qui marche et appliquez-le à "COMPTABILITÉ". C'est vous qui tout cassé, c'est donc à vous de tout remettre en état de marche. Vous avez les exemples sous les yeux, il ne vous reste plus qu'à faire quelques efforts pour essayez de comprendre.

*********************************************************************************************************************

"Si, comme l'a suggéré Arturo83, l'ordre de tabulation pose un problème pour l'existence d'un menu"

Attention, je n'ai jamais parlé de tabulation, j'ai simplement écrit ceci (c'était lié à votre exigence) :

il faut d'abord choisir la "Nature allégée" puis la date, donc à l'ouverture du formulaire, il ne faut pas ouvrir le calendrier en premier, ce dernier ne devra doit s'ouvrir qu'à partir du moment où la "nature allégée" sera sélectionnée et pas avant.:


Bonjour Arturo,

l ne faut pas ouvrir le calendrier en premier, ce dernier ne devra doit s'ouvrir qu'à partir du moment où la "nature allégée" sera sélectionnée et pas avant

Pour moi, c'est un problème d'ordre de tabulation. Je dis bien ordre de tabulation et non tabulation, ce qui, pour moi, est différent. Je répète donc ma question : comment procéder pour sélectionner d'abord Nature allégée puis ensuite que le calendrier s'ouvre ? Je clique d'abord sur nature allégée puis sur date menu au lieu de date menu puis ensuite sur nature allégée ?Tout cela en modifiant ou pas une ou plusieurs procédures ?

La première partie de votre réponse est très satisfaisante et répond à mon questionnement. Elle me guide sur le chemin à suivre.

comment procéder pour sélectionner d'abord Nature allégée puis ensuite que le calendrier s'ouvre ? Je clique d'abord sur nature allégée puis sur date menu au lieu de date menu puis ensuite sur nature allégée ?Tout cela en modifiant ou pas une ou plusieurs procédures ?[s=co-548dd4][/s]

Oui, c'est ça, puisque c'est la "nature allégée" qui doit être sélectionnée en premier, et une fois que la "nature allégée" est sélectionnée, cela autorise l'ouverture du calendrier pour choisir la date du menu et partant de là, vérifier si cette date existe dans la "BdMenu" en complétant la macro "tbDateMenu_Change" comme dit dans mon dernier post.

Si vous y tenez, vous pouvez réorganiser le "UserForm", si vous vous servez de la touche de tabulation.

Si vous y tenez, vous pouvez réorganiser le "UserForm", si vous vous servez de la touche de tabulation.

le réorganiser de quelle manière ?

Je suis allé dans mon formulaire. J'ai sélectionné le contrôle cbNatureMenuAllégée puis, dans propriétés, sur la ligne tabindex, j'ai tapé zéro.. puis j'ai sélectionné le tbDateMnu, tabIndex à 1.

Ouverture du formulaire : Il se met automatiquement sur cbNatureMenuAllégée, mais il ne va pas directement, après, sur Date menu. Peut-être, une autre manipulation est-elle nécessaire ? cbNatureMenuAlégée renseignée, j'ai appuyé sur la touche Tab du clavier et là, il est allé directement sur DateMenu.

Réorganisé comme ceci par exemple:

image

Avec la tabulation il passera d'un élément à l'autre de gauche à droite et de haut en bas, seules les zones remplies par le code seront sautées

Rechercher des sujets similaires à "existence menu signalee"