Valeur automatique d'après valeur autre fichier Excel

Bonjour,

Pensée du jour : "Il faut se lever tôt pour discuter avec des boulangers !!"

Le fichier a été bien accueilli dans l'ensemble, les boulangers et le personnel administratifs ont tout de suite vu que ça allait leur faciliter la tâche quotidiennement. Donc c'est plutôt positif.

Finalement la nouvelle journée sera générée la veille et non pas le jour J. Donc j'ai modifié le code en conséquence, pas de problème. Une demande du boss c'est qu'il ne soit pas possible de générer (donc de cliquer sur le bouton) une nouvelle journée plus d'une fois par jour (logique). Si on génère une nouvelle journée deux fois par inadvertance les volumes de production A PRODUIRE sont à zéro. C'est un point critique du fichier qu'il faut que je solutionne.

Il faut peut-être jouer sur les volumes de production réels :

  • SI total volume prod réel > 0 alors bouton cliquable
  • SI volume prod réel <= 0 alors bouton pas cliquable

Mais ce n'est pas parfait puisque si une seule cellule de production réelle est renseignée alors on peut générer une nouvelle journée...

Le plus sûr serait de jouer avec la date : un clic par 24 heures

De quoi bien réfléchir en perspective ! Je m'y mets de ce pas.

6proliv-b-2020.xlsm (60.86 Ko)

Bonjour nicodak,

C'est très bien, je suis content que le fichier ait bien été accueilli.

Je pense aussi qu'il vaut mieux générer les états en fin de journée, une fois que la production est arrêtée. A ce propos, il y a la possibilité d'ajouter une nouvelle boite de dialogue laissant le choix entre la date du jour ou une date choisie (en cas d'oubli à rattraper par exemple). Car c'est pas très pratique de passer par le code à chaque fois pour rendre la ligne active ou inactive.

Au sujet du volume, c'est en effet une bonne idée. Empêcher l'exécution quand le volume est à 0. Le gérer par la date est trop risqué et trop problématique si on doit effectuer une correction.

Il faut se dire que le lancement nécessite une confirmation et donc qu'il faut vraiment le vouloir pour exécuter 2 fois la macro la même journée et j'ose espérer que les utilisateurs contrôleront un minimum et ne joueront pas les fous de la gâchette. Et quand bien même, les données sont stockées dans analyse et éditées sur le PDF. Il y aura toujours la possibilité de rattraper les rares erreurs (d'où l'importance de l'heure et des minutes !!!, sinon écrasement du bon PDF par le mauvais). Tandis que lever la contrainte sur la date en cas d'anomalie s'avérera plus complexe.

Il faut se dire que le lancement nécessite une confirmation et donc qu'il faut vraiment le vouloir pour exécuter 2 fois la macro la même journée et j'ose espérer que les utilisateurs contrôleront un minimum et ne joueront pas les fous de la gâchette. Et quand bien même, les données sont stockées dans analyse et éditées sur le PDF. Il y aura toujours la possibilité de rattraper les rares erreurs

C'est pas faux. Je n'ai pas eu cet argumentaire ce matin, je pense que cela aurait pu convaincre le boss de laisser le fichier tel quel, je vais lui en reparler.

J'avais réfléchi à une solution néanmoins, la voici, vous me direz ce que vous en pensez. Avec la fonction SI je pensais écrire quelque chose du genre :

  • SI cellule A1 (PROD) non vide ET cellule B1 (PROD REEL) non vide ALORS valeur cellule C1 : OK (à répéter pour tous les produits)
  • SI valeur range(C1:C18) : OK alors cellule Z1 : OK
  • SI valeur cellule Z1 : OK ALORS Macro exécutable SINON Message d'erreur

Bonne journée !

Oui, je pense comme faire comme vous proposez. Seulement, il est possible que la production réelle soit nulle pour certains produits. Alors, je proposerais de faire ce test uniquement sur les produits incontournables.

Ça permettra d'avoir un niveau de sécurité supplémentaire mais je soutiens qu'il ne faut pas abuser avec les contraintes pour éviter de se retrouver, un jour, avec un blocage inopportun. Il vaut mieux rabâcher aux utilisateurs de faire attention et de contrôler la cohérence du fichier avant l'envoi, car la procédure est irréversible, plutôt que devoir retoucher au code en urgence. En cas de problème, celui-ci est rattrapable grâce aux PDF, à condition de les horodater (et non seulement dater).

Bonne journée à vous aussi,

Jai apporté quelques dernières modifications, je vais en rester là. Je pense qu'en l'état le fichier correspond à la demande initiale.

Merci encore pour tous vos conseils et votre aide précieuse. A ce propos, êtes-vous juste passionné par Excel ou dans le cadre de votre travail vous utilisez souvent ce programme ?

Je joins le fichier final pour info. A bientôt 3GB !

1proliv-b-2020.xlsm (62.60 Ko)

Justement, j'ai moi aussi apporté 2-3 modifications que j'estime être les dernières. Je vous envoie quand même la dernière version (ce serait bien de la tester) et vous en ferez ce que vous voudrez.

Je vous en prie, et j'espère que ce sera pour vous le début de la merveilleuse aventure qu'est l'apprentissage de VBA.

J'aime bien Excel mais c'est dans le cadre de mon travail que je l'utilise principalement. J'avais connaissance de l'existence de VBA mais je n'osais pas franchir le pas, de peur de l'immensité que ce langage représentait dans mon esprit. Et depuis que je m'y suis mis, ma vie (pro) a changé, mes connaissances sur Excel se sont consolidées voire décuplées et je gagne un temps fou sur toutes les tâches récurrentes automatisables. Enfin, je n'en suis qu'au début, quand cet arbre passé, ça nous ouvre le champ des possibles et on veut découvrir toute la forêt qui se cache derrière...

A bientôt nicodak,

2boulangerie5.xlsm (69.17 Ko)
If WorksheetFunction.CountIf(Range("TOTAL_PROD"), ">0") < 6 Then
    MsgBox "La création d'une nouvelle feuille est actuellement impossible" & vbCrLf & vbCrLf & _
    "Assurez-vous que les données de production réelles, sur l'onglet PRODUCTION, sont bien renseignées"
    Exit Sub
End If

Ce bout de code est une révolution !! Bravo ! Intégré immédiatement !

Comme vous le dites, je suis en train de m'apercevoir des possibilités immenses qu'offre Excel. On l'entend souvent dire mais quand on le constate c'est assez effarant ! Je suis réparateur informatique à mon compte au Sénégal, sur la côte touristique. J'ai des demandes assez éclectiques, tel ce fichier, alors j'essaie de m'intéresser un peu à tout.

Clairement Excel m'impressionne et je vais faire le nécessaire, à mon rythme, pour atteindre un niveau correct. Voir plus si affinités.

A bientôt.

Plus je réfléchis à ce classeur plus je trouve des failles...

lors de la génération d'une nouvelle journée, les données de production réelle sont copiés dans la colonne VOLUME PREVISIONNEL.

En effet si la production demandée est de 100, que la production réelle est de 95 et que les retours sont de 5 il est plus logique que le lendemain la production prévisionnelle soit de 95 - 5 = 90 plutôt que 100 - 5 = 95. C'est pour ça que je voulais la recopie des données réelles pour le calcul prévisionnel du lendemain.

Mais si la production réelle a été de 105 et que les retours sont de 5 alors il est plus logique de produire le lendemain 100 - 5 = 95 plutôt que 105 - 5 = 100

Grosso modo, avec volume prévisionnel = VP , production réelle = PR on devrait avoir :

  • Si PR <= VP alors recopie de PR
  • Si PR > VP alors recopie de VP

Et pire encore si un jour pour un produit A PR <= VP mais le même jour sur un produit B PR > VP alors la source de définition du volume prévisionnel n'est pas la même : PR pour A et VP pour B...

Aïe aïe aïe !

Je pense pouvoir gérer ça:

Dans une colonne supplémentaire (M3:M20) de l'onglet PRODUCTION chaque cellule renverra PR ou VP selon la formule si PR<=VP alors PR sinon VP

Je crée dans le gestionnaire de nom COPY_PROD qui regroupe (M3:M20) et dans ce bout de code VBA Range("TOTAL_PROD").Copy je remplace TOTAL_PROD par COPY_PROD !

Non ?

Vous avez vu, cette fonction est l'équivalent du NB.SI de excel (compte les cellules d'une plage répondant à une condition donnée). Ici, j'ai mis < 6 mais vous pouvez choisir le nombre de produits minimal permettant de déclencher la procédure.

Ah oui, si vous êtes réparateur informatique, ça peut être clairement intéressant de maîtriser excel. Ca vous permettrait de développer un nouveau champ d'activité.

En ce qui concerne le fichier, il n'est pas sans faille (au niveau technique j'entends) mais sur le plan prévisionnel, ça me semble relativement correct. La production réelle J - les retours J + le volume supp J (en sus du prévisionnel J-1, si je comprends bien c'est l'adaptation ponctuelle) nous donnent la production J+1.

Dans votre exemple, on a donc 5 déjà en stock et on prévoit de produire 90 (95-5). Mais c'est vrai qu'il serait préférable d'agir sur les produits effectivement livrés. Mais l'idée a sûrement dû être examinée.

Je pensais au début de notre conversation que ce fichier servait à inventorier les matières premières et produits finis en attente. C'est sur ce point qu'il manque peut-être quelque chose car on n'établit pas clairement le lien entre PRODUCTION LIVRAISON et RESTE A VENDRE.

Oui, si vous voulez faire ainsi, il suffit de changer TOTAL_PROD par COPY_PROD. Soyez toujorus vigilant aux range qui sont effacées, c'est facheux d'écraser des formules.

Au fait, si vous désirez progresser et mieux appréhender le code, il faut que vous fassiez des tests, et lors de ceux-ci, que vous exécutiez le code depuis l'éditeur, au pas à pas (touche F8). De cette manière, vous pouvez voir étape par étape la progression. C'est aussi très important de regarder les variables (dans la fenêtre variables locales) pour voir si elles sont alimentées comme on le désire. Il est également possible de marquer des points d'arrêt dans le code. On peut alors mixer entre l'exécution à vitesse normale et, sur la partie qui nous intéresse, le pas à pas. J'ai beaucoup avancé en découvrant ça.

C'est sur ce point qu'il manque peut-être quelque chose car on n'établit pas clairement le lien entre PRODUCTION LIVRAISON et RESTE A VENDRE.

En fait les RETOURS ne sont plus à vendre, ils sont recyclés ou offerts. Le volume RETOUR entre dans le calcul du volume prévisionnel afin d'affiner au mieux les volumes de production pour, au mieux, éviter des retours ou au pire, les diminuer.

Le volume supplémentaire servira à augmenter la production en début de la haute saison par exemple ou si à force d'affiner les volumes par la soustraction des retours le volume de production se retrouve trop pas (c'est également pour cela que j'ai créé un seuil de déclenchement pour activer ou pas la soustraction des retours : si sur 200 baguettes produites il n'y a que 3 retours il n'est pas forcément nécessaire de produire 197 le lendemain...)

D'ailleurs je me demande si je ne vais pas affiner un peu ce mode de calcul... Mais c'est un peu hors sujet du coup, c'est juste de la réflexion logique et pas du Excel.

J'ai bien noté les conseils pour apprendre et découvrir VBA, merci.

D'accord, je comprends mieux. En effet, ce n'est pas crucial.

Le mieux étant l'ennemi du bien, ne vous acharnez pas sur ce fichier, vous risqueriez de de ne jamais en finir. Pensez à la suite...

Bonne soirée à vous et à bientôt à Saly alors

Rechercher des sujets similaires à "valeur automatique fichier"