Fichier MENUS.xlsm : procédure Sub GénPropMMR

BUDGETS Messages postés 1612 Date d'inscription   Statut Membre Dernière intervention   -  
 Dimitri -

Bonjour à toutes et à tous,

Je reprends du service. Je vais modifier mon fichier en conséquence. J'ai passé de nombreux examens médicaux dont les résultats ne sont très bons (possibilité que je développe différents cancers dans un délai très court) et j'ai été opéré, à une semaine d'intervalle, des deux yeux (cataracte), tout ceci expliquant ma longue absence.

Dans le fichier MENUS.xlsm, module MGénérer_GenPropMMR, procédure Sub GénPropMMR, où se trouvent les instructions qui permettent 1) de remplir les colonnes B à H incluses, 2) de recopier toutes les quatorze lignes, 3) de supprimer les samedis et les dimanches ?

Dans la feuille Listes menus, colonne BB, merci de m'aider à rectifier les formules dans lesquelles l'année est erronée (1905 au lieu de 2026).

D'avance merci à toutes et à tous pour votre réponse.

https://www.cjoint.com/c/OCClRefaihX


Windows / Chrome 134.0.0.0


BUDGETS

2 réponses

  1. Dimitri
     

    Bonjour

    1) Entre For Col = 2 To 8 ... et ... Next Col

    2) Entre For Lig = 1 To 532 Step 14 ... et ... Next Lig

    3) Datj = WorksheetFunction.WorkDay(DateSerial(Range("Année_en_Cours") - 1, 12, 31), 1)

    et surtout

    Datj = WorksheetFunction.WorkDay(Datj, 1)

    4) Feuille ListeMenus, BB4, mettre BA1 au lieu de ANNEE(BA1)

    Bon courage

    0
    1. BUDGETS Messages postés 1612 Date d'inscription   Statut Membre Dernière intervention  
       

      Bonjour Dimitri,

      Pour le 3), je n'arrive pas à trouver la solution pour que dans Propositions menus journaliers tous les jours de la semaine apparaissent. J'ai essayé différentes modifications mais aucune n'a donné le résultat escompté. Peut-être faut-il jouer sur les 1 ?

      0
    2. Dimitri > BUDGETS Messages postés 1612 Date d'inscription   Statut Membre Dernière intervention  
       

      Bonjour,

      Pourquoi ne pas être reparti de ce qu'avait fait charles en décembre ?

      Les 4/5 du travail étaient faits, il suffisait de rajouter les bordures et les en-têtes  conformément à MMR.

      Fichier avec MJ et MVMWE

      https://www.cjoint.com/c/OCFh3K5TVcG

      0
    3. BUDGETS Messages postés 1612 Date d'inscription   Statut Membre Dernière intervention   > Dimitri
       

      Bonjour DIMITRI,

      Merci pour le fichier qui correspond bien à ce que je souhaitais. Et cerise sur le gâteau, les lignes références légume, référence viande et référence dessert sont correctement remplies selon qu'il s'agit d'un lundi, d'un mercredi, etc.

      0
    4. BUDGETS Messages postés 1612 Date d'inscription   Statut Membre Dernière intervention   > Dimitri
       

      Bonjour Dimitri,

      J'ai imprimé votre code de GénérerPropositionsMMR et j'ai commencé à écrire les commentaires et le code dans mon fichier adéquat. Une erreur survient sur la ligne .range("B:H").ClearContents : impossible de modifier une cellule fusionnée. Voir lecode ci-dessous (impossible de joindre un fichier à partir de cjoint: limité à 15 mo !)

      Option Explicit

      Sub GénérerPropositionsMMR()
      'Déclaration des variables.NM = Numéro menu. J représente le nombre de lignes, excepté a ligne titre; le décompte commence à la ligne 2. DatJ = Date du jour.
      Dim Lig As Long, Col As Long, NM As Long, J As Long
      Dim DatJ As Date

      'ScreenUpdating : True si la mise à jour de l'écran est activée. Type de données Boolean en lecture écriture.
          Application.ScreenUpdating = False
          
      'Initialisations. WorksheetFunction.WorkDay : renvoie un nombre représentant une date qui est le nombre jours ouvrés indiqué avant ou après une date (date de début).
      'Les jours ouvrés excluent les weekends et les jours de congés. Utilisez la fonction WorkDay pour exclure les weekends etlesjours de congés lorsque vous calculez les dates
      'd'échéance des factures, les heures de livraison attendues ou le nombre de jours ouvrés effectués. 12 représente le nombre de mois, 31 équivaut au nombre de jours maximum
      'd'un mois. NM = 1 : le numéro menu commenceà 1.
          DatJ = WorksheetFunction.WorkDay(DateSerial(Range("Année_en_Cours") - 1, 12, 31), 1)
          NM = 1
          
      'Remplissage. Worksheet ("Propositions MMR") : il s'agit de la feuille dont le nom est indiqué à l'intérieur de la parenthèse.
          With Worksheets("Propositions menus midi retrait")
              'B:H : représente les colonnes de la feuille Propositions menus midi retrait qui seront à remplir. ClearContents : Méthode ClearContents telle qu'elle s'applique à l'objet Ran-
              'ge : Efface les formules de la plage.
                  .Range("B:H").ClearContents
              'xlThick : Bordure épaisse plage complète.
                  .Range("A1").Resize(532, 8).Borders.Weight = xlThick
              'For Lig=1 to 532 step 14 : 1 to 532 : représente le nombre de lignes à remplir (y compris la ligne titre). Step 14 : le mot clé Step est employé dans les contextes suivants :
              'For...Next, instruction.
                  For Lig = 1 To 532 Step 14
              'Va écrire à la ligne 0 (le décompte commence à zéro et non à 1), colonne 1(ici, la colonne A), le texte contenu dans les guillemets.
                  .Cells(Lig + 0, 1) = "Propositions menus midi retraite"
              'C'est le centrage sur plusieurs colonnes qui annule l'affichage des bordures intérieures (Borders.Weight = xlThick). 1 = numéro de la ligne, 8 = nombre de colonnes (ici, li-
              'gne1, colonnes A à H incluses).
                  .Cells(Lig + 0, 1).Resize(1, 8).HorizontalAlignment = xlCenterAcrossSelection
              'Dans chaque ligne mentionnée (Lig + 1, Lig + 2 , etc.) et uniquement dans la colonne indiquée(ici la colonne 1, soit la colonne A), va écrire le texte contenu dans les guille-
              'mets.
                  .Cells(Lig + 1, 1) = "Numéro du menu"
                  .Cells(Lig + 2, 1) = "Date du menu"
                  .Cells(Lig + 3, 1) = "Référence légume"
                  .Cells(Lig + 4, 1) = "Légume"
                  .Cells(Lig + 5, 1) = "Quantité légume"
                  .Cells(Lig + 6, 1) = "Référence viande"
                  .Cells(Lig + 7, 1) = "Viande"
                  .Cells(Lig + 8, 1) = "Quantité viande"
                  .Cells(Lig + 9, 1) = "Référence dessert"
                  .Cells(Lig + 10, 1) = "Dessert"
                  .Cells(Lig + 11, 1) = "Quantité dessert"
                  .Cells(Lig + 12, 1) = "Référence jour férié"
                  .Cells(Lig + 13, 1) = "Jour férié"
              'For Col = 2 to 8 : pour les colonnes 2 à 8 (la colonne 1, soit la colonne A n'est pas prise en compte, le décompte commence donc à la colonne 2, soit la colonne B, jusqu'à
              ' la colonne H incluses).
                      For Col = 2 To 8
              'À la ligne 1 (nom comprise la ligne titre), à partir de la colonne 2, soit la colonne B, va écrire le texte contenu dans les guillemets et formater le numéro du menu. À la ligne
              'immédiatement en dessous dela précédente, toujours même colonne, va formater la date du menu.
                          .Cells(Lig + 1, Col) = "MMR" & Format(NM, "00")
                          .Cells(Lig + 2, Col) = DatJ
                          
                      Next Col
                  Next Lig
              End With
      End Sub
      Merci de m'aider à résoudre ce problème qui n'intervient pas dans votre fichier.

      0
    5. Dimitri > BUDGETS Messages postés 1612 Date d'inscription   Statut Membre Dernière intervention  
       

      Bonjour,

      Le pus simple : Sélectionnez votre feuille et faites Défusionner

      Le plus logique : Partez d'une nouvelle feuille vierge

      Le moins nécessaire : Rajoutez une instruction avant l'erreur :  .Range("B:H").unmerge

      0
  2. BUDGETS Messages postés 1612 Date d'inscription   Statut Membre Dernière intervention  
     

    Merci.

    Dans Menus journaliers, tous les jours de la semaine doivent apparaître, sans aucune restriction. Merci de me donner les instructions nécessaires pour aboutir à ce résultat.


    0