Algorithme de regroupement

julien974

XLDnaute Occasionnel
Bonjour,

J’espère que vous allez bien !

Cela fait quelques semaines maintenant que je n’ai pas fait appel à vous. Et cette fois ci, j’ai vraiment besoin de vos lumière car j’avoue que mon niveau VBA n’est semble t il pas assez développé pour répondre à ma demande.

Je souhaiterai construire un algorithme qui constitue des palettes, elles mêmes constituées de colis. En quelque sorte un jeu de construction. Mais ce jeu doit répondre à certaines règles. Tout d’abord des règles d’optimisation car les palettes ne doivent pas comporter de « trous ». Puis des règles d’arrangement des différentes lignes de commandes.

Je vais maintenant vous décrire le processus :

•Pour un même client nous avons des lignes de produits correspondant à sa commande du jour.

•Chaque ligne correspond à un produit spécifique intégrant un type de carton. Les cartons varient uniquement en termes de hauteur.

•Une hauteur de palette à été déterminé de manière à trouver un coefficient d’empilement pour chaque carton.
o Ex : hauteur : 1m ; carton de 20 cm : coeff de 5 ; carton de 10 cm : coeff de 10 ; … >> ainsi nous convertissons un nb de carton en nb de colonne.

•Nous pouvons maintenant regrouper les lignes pour former de belles palettes optimisées sachant qu’une palette est composée de 8 colonnes.
Protocole de regroupement :

1.Si le nb de colonne pour une ligne de commande est < 8
a. Chercher une autre ligne dont la décimale permet d’ajuster à l’entier de colonne supérieure.
Ex : 5.4 >> chercher 0.6
b. Chercher ensuite une ligne qui permet de terminer la palette
Ex : (5.4 + 0.6) = 6 >> chercher 2
c. Si le 2 n’est pas présent, chercher le nombre inférieur à deux mais le plus proche puis refaire le point a.
Ex : 6 + 1.7 >> chercher 0.3 (Si le 0.3 n’existe pas refaire le point c. jusqu’à ce que la palette soit complète)
d. Une fois la palette constituée, apposer un n° de palette (identique) devant les lignes sélectionnées.
2.Si le nb de colonne pour une ligne de commande est = à un multiple de 8
a. apposer un n° de palette devant la ligne sélectionnée.
3.Si le nb de colonne pour une ligne de commande est comprise entre 8 et 16
a. Effectuer la même opération qu’au point 1.

Remarque 1 : une ligne marquée par un N° de palette ne peut naturellement plus être utilisée.

Remarque 2 : Lorsque l’on veut choisir une ligne, toujours prendre celle dont la valeur est la plus élevée.

Voilà, j’espère avoir été assez claire dans ma demande.

Je ne pense pas que cet algorithme soit très compliqué à mettre en place mais mes connaissances actuelles ne me le permettent pas.

Dans l‘attente de vous lire, je vous souhaite une agréable journée.

Juli3n 974
 

Pièces jointes

  • test.xls
    31.5 KB · Affichages: 100
  • test.xls
    31.5 KB · Affichages: 107
  • test.xls
    31.5 KB · Affichages: 100
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Algorithme de regroupement

Bonsoir julien974, le forum,

L'heure était peut-être mal choisie pour aborder ton message (ou alors, mon neurone, quelle que soit l'heure, est fatigué !?) Bref, en lisant tes explications, je trouve ce qui suit:
1.Si le nb de colonne pour une ligne de commande est < 1
a. Chercher une autre ligne dont la décimale permet d’ajuster à l’entier de colonne supérieure.
Ex : 5.4 >> chercher 0.6
... Je cherche (dans la colonne J) le premier nombre inférieur à 1 et "tombe" sur 0,95. Fort de ce que j'ai cru comprendre, je cherche donc 0,05 ... que je ne trouve pas !
La seule cellule qui permettrait d'ajuster à UN entier supérieur (et non L'entier supérieur) serait 2,05.
Jusque là, dis-moi seulement si j'ai compris le début ou si je me plante royalement.

Ceci dit, je vais, de ce pas, mettre mon neurone au lit et viendrai voir demain si un des oiseaux nocturnes du forum aurait les idées plus claires que moi (sur ce coup-là, je prends peu de risques: c'est certain qu'il y en aura :D)

Modeste
 

julien974

XLDnaute Occasionnel
Re : Algorithme de regroupement

Bonjour à tous,

Après relecture, je viens de m'appercevoir que j'ai commis une erreur de frappe.

il ne s'agit pas de :

1.Si le nb de colonne pour une ligne de commande est < 1

Mais de :

1.Si le nb de colonne pour une ligne de commande est < 8

J'ai rectifié dans mon premier message.

Modeste, concernant ta question, il faut chercher la décimale qui ajuste à l'entier supérieur à la colonne supérieur).
Ex : 5.4 >> checher le nombre qui s'approche le plus de 0.6 mais pas supérieur. Ensuite refaire le même processus pour atteindre 8.

Dsl pour ce petit souci. En espérant que vous puissiez m'aider.

Juli3n 974
 

Modeste

XLDnaute Barbatruc
Re : Algorithme de regroupement

Bonjour Julien974, Myta, le forum,

Julien, tu ne nous dis pas si tu a regardé le lien proposé par Myta ... Si tu n'en parles pas c'est parce que tu es allé voir mais tu ne peux pas l'utiliser (pas même t'en inspirer) ?? Ou alors tu n'es pas allé y jeter un coup d'oeil ?

Modeste
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 173
dernier inscrit
Cerba95