Problème complexe VBA

Bonjour à tous,

Je viens aujourd'hui avec un problème assez complexe à réaliser sur VBA dont je ne trouve pas la solution.
Je vasi essayer d'être clair mais c'est un vrai casse-tête! N'hésitez pas à me poser des questions si vous en avez :).

J'ai des produits à laver qui arrivent en lots (cela peut être des lots de 1000 ou même 5000). Ils prennent donc tous un temps différent pour se laver. J'ai différents types de produits qui ont chacun besoin de paramètres différents dans ma machine à laver. Ce que j'aimerai bien créer, c'est un planning de lavage qui me permettait de savoir quel lot laver à telle heure et ce, durant une semaine. Les conditions sont qu'ils faut optimiser ce planning afin que les lots avec les mêmes paramètres se lavent l'un à la suite de l'autre pour éviter du temps perdu à changer ces paramètres. J'ai 6 paramètres avec chacun 3 possibilités de changement (par ex. mon produit A doit avoir le mode n°1 pour le paramètre 1 et mon produit 2 doit avoir le mode n°3 sur le paramètre 4). Sachant que je lave du lundi au vendredi de 6h à 22h, comment pourrais-je automatiser tout ça pour que cela me donne un planning par semaine respectant le temps de lavage ainsi que les paramètres.

C'est assez complexe je sais mais qui sait! Peut-être que quelqu'un aura la réponse et saura m'aider ;)
Je n'ai pas de fichier Excel à vous montrer par contre :/

Merci d'avance!
VJacques

bonjour,

si je compte bien tu as 729 programmes possibles (3^6).

Je suppose que le plus simple est de partir de ta liste des lots, de les regrouper par paramétrage de nettoyage identique et faire le nettoyage groupe par groupe selon un ordre à déterminer pour minimiser la non-utilisation des machines. Je fais l'hypothèse que quel que soit l'ordre dans lequel on traite les groupes, le temps total pour nettoyer tous les groupes sera toujours le même, dans ce cas l'ordre devrait être celui qui minimise la perte de temps en fin de journée (je suppose qu'on ne peut pas lancer un programme de 2h à 20:30)

bonjour Vjacques, salut h2so4,

avez vous un planning d'une semaine pour voir ce que vous avez déjà ?

On peut encore commencer une machine à 21h59 (eventuellement sauf le vendredi) ?

un lot de 50.000, c'est combien de machines ?

c'est combien le temps de vider la machine et le temps de réparamétrer la machine ?

Je compte procéder de la sorte:

capture d ecran 2024 02 19 a 13 06 56

Il y a une commande d'un client et on reçoit un lot de X produits à laver. La cadence pour un produit est notée en cellule 3. Il faut qu'il soit lavé pour la semaine X. Mon but est que le vendredi , j'appuie sur un bouton et toutes les commandes de la semaine d'après se planifient en étant optimisées pour ne pas avoir trop de temps d'arrêt suivant les paramètres. Un lot peut se laver pendant toute une journée s'il doit prendre 16h de lavage (ce qui est beaucoup masi cela peut arriver). Je ne sais pas comment reprendre toutes ces conditions et créer un planning de la semaine et ce, uniquement en appuyant sur un bouton macro

Le but est que si un client a plusieurs lots qui doivent se faire la même semaine, ils doivent se chevaucher. De plus, il faudrait une condition comme quoi il faut mettre la priorité sur les lots de par ex. 10 000 et ensuite caser les plus petits lots après

J'ai créé un exemple pour essayer d'être plus clair.

Le but est de mettre la priorité sur les gros lots (imaginons apd 5000 par ex.). Ensuite, il faut voir avec les plus petits en fonction de leurs paramètres

Les 2 premiers paramètres prennent la même valeur en temps. Les 2 suivants peuvent avoir la valeur 0 si non utilisé (c'est utilisé uniquement sur certains produits). Il faut donc que si on a plusieurs produits qui utilisent le param 3, ils doivent se chevaucher pour éviter un changement.

19classeur1.xlsx (14.13 Ko)

re,

je pense que je n'ai pas bien compris le temps nécessaire pour modifier les paramètres, donc dans le cas suivant, seulement quand au minimim 1 des paramètres 1&2 change, cela prend 15 minutes. Puis on ne regarde pas les clients ou la volume, on essaie de minimaliser le temps nécessaire.

Vous avez combien de commandes (lignes dans votre tableau) par semaine en moyenne et au maximum ?

17classeur1-94.xlsb (33.45 Ko)

Merci pour ta réponse, je vasi essayer de bidouiller le code pou que ça colle avec ce que je veux.

J'ai essayé de remettre l'algorithme sur papier avec des mots, cela aura peut-être + de sens.. Si tu veux m'aider ;)

capture d ecran 2024 02 20 a 09 05 14

Voici les temps de chaque paramètre! Pour rappel, les 2 premiers sont automatiquement comptabilisés pour chaque produit, tandis que les 2 autres dépendent de si on les utilise ou pas..

capture d ecran 2024 02 20 a 09 07 58

re,

Tout cela me semble drôle, on essaie de faire des combinaisons pour que l'utilisation de la machine soit maximale.

Que veux-tu dire par là? Que ce n'est pas possible ?

re,

supposons qu'on commence à 8h00 avec une machine de 10h lavage + 10 min paramètrage = fini à 18h10.

Alors pour la machine suivante, on doit ignoré celles avec une durée combinée de > 3h50. Donc qu'est-ce qu'on fait pour les autres machines, min. une condition n'est pas remplie ? On choissit la meilleur des mauvais choix ou on attend le lendemain ?

Et laquelle est la meilleure ? Celle avec la durée la plus longue ?

Si une machine fait >3h50, on peut faire une machine de 3h50 le jour même et reporter le restant du lot le lendemain. Le but est de chaque fois privilégier les gros lots puis les lots de plus petites tailles selon les critères (param 3 ensembles et param 4 ensemble)

re,

on commence le lundi avec par exemple client B, Pommes, un lot de 10.000, durée 6 h + quelque minutes = environ 14h00. Alors, on choisit quoi comme suivant et pourquoi ?

Le lendemain (mardi 8h00) on prend client F, Bananes, aussi 10.000, durée 7 = fini à 15hxx. On choisit quoi comme suivante ?

Mon opinion, le paramètrage des machine n'est pas si important, le matin, on choisit la machine avec la durée maximale (ici poires avec 5.000 comme volume) comme premier choix et puis on prend une deuxième machine dont la durée cumulée est <= 14 heures et eventuellement encore une troisième, ... .

Comme ça, on a le planning pour 5 jours et c'est à vous de assigner jour 1 au mercredi, jour 2 au lundi, jour 3 au vendredi, etc.

Le but est d'avoir le moins d'arrêts de la machine. Dans mon cas, les 2 premier paramètres requièrent de toute façon un parametrage pour chaque produit qui ne doit pas forcément intervenir dans la prise décision du planning. Les 2 suivants par contre, s'additionnent au temps si la valeur renvoyée est autre que 0 (qui veut dire que pour ce produit, on n'utilise pas ce paramètre).
Dans la prise de décision, il faut privilégier les lots à plus de 10k produits et ensuite, lorsqu'ils sont tous planifiés, on regarde aux autre petits lots en fonction des paramètres 3 et 4, donc ceux qui utilisent le paramètre 3 par exemple doivent se suivre pour éviter un changement de paramètre inutile

re, je ne suis pas convaincu de votre logique. A voir dans l'image, j'ai 3 jours complets (même s'ils ne finissent pas à 22:00 parce qu'il n'y avait plus la possibilité) et le 4ième jour est jusqu'à 10h. PS. le temps de paramètrage est partout 1 minute pour rendre les choses plus simple. d

Maintenant c'est à vous le choix de assigner jour 1 au lundi ou ..., jour 2 au ..., etc et vous pouvez aussi modifier la séquence pendant un jour.

C'est quoi l'advantage de choisir pour un deuxième ou troisième commande avec les mêmes paramètres 3&4 quand le jour se termine avant 22:00 ??? C'est mieux de choisir pour une autre commande avec de paramètres différents mais avec une durée plus grande.

C'est comme un jeu de Tetris et on doit essayer à créer des lignes aussi complet que possible.

image

Les paramètres 3 et 4 renvoient 1 si on utilise une machine en + sur la ligne de lavage et 0 si on ne doit pas les utiliser. Je me suis dis que ce serait bien que les lots devant utiliser la machine 3 ou 4 se chevauchent afin de ne pas avoir de coupure sur la ligne pour la mise en place de ces machines.

De plus, je pense que vous avez raison. Il faut privilégier une autre commande avec des paramètres différents mais avec une durée plus grande.

re,

Les paramètres 3 et 4 renvoient 1 si on utilise une machine en + sur la ligne de lavage et 0 si on ne doit pas les utiliser.

Cela veut dire qu'on utilise une 2ème machine en parallèle oubien la même machine une 2ème fois successive ??

Donc "Poires", temps de lavage = 10 h & paramètre 4 = 3, càd 3 fois 10 heures successivement ou 10 heures + x ???

Est-ce possible que vous donnez la solution (ou même plusieurs solutions avec commentaire) parce qu'un exemple visuel s'explique mieux que 1.000 mots.

Rechercher des sujets similaires à "probleme complexe vba"