Sommer les valeurs d'une liste pour atteindre une valeur cible [Fermé]

- - Dernière réponse : ccm81
Messages postés
9175
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2019
- 8 févr. 2015 à 14:41
Bonjour,

Je souhaiterai créer un programme sous excel me permettant de sommer entre elles les valeurs d'une liste pour atteindre une valeur cible.
A chaque fois qu'une valeur est prise prise en compte dans la combinaison celle-ci ne serait plus prise en compte dans la base de donner.
Mon application est la suivante:
J'ai une liste de 500 valeurs environ qui correspondent à des longueurs de tubes. Ces longueurs doivent être extraitent d'une barre de longueur initiale 6mètre. Mon but est d'optimiser les pertes sur mon tube de 6m et donc de trouver le meilleur ordre pour découper mes tubes.

Voici le lien vers mon fichier exemple:
http://cjoint.com/?0EdwQL3itKA

...Ci quelqu'un peut m'aider à résoudre mon problème, je lui en serait infiniment reconnaissable...!

(et merci à Eric)

Fanny

Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35
2
Merci
Voilà le fameux classeur !

J'en appel a vous pour me corriger !

J'ai un bug que peut-être vous allez pourvoir m'aider a résoudre avant la version final.

Il y aune colonne qui donne la longueur total du tube. Mais étrangement quand elle arrive a 6000 elle affiche 0 au lieu de 6000.

Et j'aimerait savoir si vous pouvez corriger mon calcule de la moyenne parce que la je suis pas du tout sûr.

Après je ferai la version finale.

Même si celle-ci marche déjà très bien :)

http://cjoint.com/?0Eor2DV3p43

Pour utiliser la macro : [ALT] + [F8] > Lancer la macro "chercher"

*Pensez mettre vos messages en [Résolu] et cliquer sur le + des conseil qui vous ont été utils"

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62768 internautes nous ont dit merci ce mois-ci

skk201
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35 -
haha pardon j'ai raté cette partie là.

Oui la je l'ai fait très rapidement donc j'ai mis le minimum de commentaire. j'en rajouterai à la version 2 du document.

Et concernant les variables tableaux je connais le principe, je sais coment les créer mais je trouve leur utilisation plus complexque l'utilisation directe des cellules Excel. Est-ce que ça peux vraiment aporter un plus ? J'ai limitié le nombre de découpes à 28'000 il faudrait essayer d'inséréer 28'000 valeur et voir si c'est vraiment si long que ça.
pijaku
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2245 -
Est-ce que ça peux vraiment apporter un plus ?
A toi, en tant que développeur oui, énormément.

A FaNy en durée d'exécution : pas dans ce cas précis de commandes entre 300 & 500 longueurs. Ta procédure est suffisamment rapide.

Mais l'utilisation de ce fichier peut évoluer.
Par exemple :
Si l'entreprise décide demain de ne plus calculer les découpes commande par commande, mais pour une semaine ou un mois de commandes. Cela pourrait en effet s'avérer payant en réduction des coûts par économie des pertes. Mais cela voudrait dire que ton fichier mettrait beaucoup, beaucoup plus de temps. Dans un cas comme celui-ci, les variables tableaux seraient (conditionnel) la solution.

je trouve leur utilisation plus complexe que l'utilisation directe des cellules Excel
Nous avons tous pensé cela au début. Mais, il s'avère qu'en les utilisant régulièrement, tu n'y verras que des avantages.
A titre d'exemple, le code suivant :
                Sheets(Feuil).Cells(Ligne_decoupes_OK, 6) = Sheets(Feuil).Cells(Ligne_decoupes, 2).Value
                Sheets(Feuil).Cells(Ligne_decoupes_OK, 7) = Sheets(Feuil).Cells(Ligne_decoupes, 3).Value

pourrait s'écrire, avec deux var tab (ColonnesSixSept() et ColonnesDeuxTrois())
ColonnesSixSept(i, 1) = ColonnesDeuxTrois(i, 1)
ColonnesSixSept(i, 2) = ColonnesDeuxTrois(i, 2)

La syntaxe est quasiment identique.


Question subsidiaire, depuis le début de cet "exercice", je te recommande l'algorithme glouton du sac à dos.
T'es tu renseigné à ce sujet?
Si oui, as tu essayé de le mettre en oeuvre?
Pour info, ta méthode parvient exactement au même résultat que par cet algo. Mais par curiosité peut être serais tu intéressé.
skk201
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35 -
Non pas renseigner.

Mais je vais me renseigner sur les varaibles tableaux et sur ta métodes de sac à dos.

Mais encore une fois je vois pas en quoi l'utilisation de variables tableau amélorerait le tableau dans le cas d'une evolution, est-ce que tu aurai un exemple concret ? :)
pijaku
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2245 -
Je te construis un exemple qui utiliserais deux méthodes, une avec des variables tableaux et une avec l'utilisation des cellules directement dans la feuille.
Tu pourras y voir la différence.
pijaku
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2245 -
Bon.
C'est du "bricolage", mais le résultat est plus ou moins parlant :
Le Fichier Exemple

Cela ne veut effectivement rien dire car une macro qui s'exécute en un temps acceptable est correcte. Mais ici on parle bien d'évolution de ce fichier.
Essaye en ajoutant X lignes et compare les deux méthodes.
Messages postés
12594
Date d'inscription
mardi 24 mai 2011
Statut
Contributeur
Dernière intervention
12 juin 2018
2021
1
Merci
 Mon but est d'optimiser les pertes sur mon tube de 6m et donc de trouver le meilleur ordre pour découper mes tubes

A faire attention : 
cela nous donnera pas forcément le meilleur resultat.

Je comprends pas: le but est bien d'optimiser, non ? Dans ce cas, une macro est nettement insuffisante (c'est un problème de type NP entier, extrêmement complexe à optimiser en fait).
Si l'objectif est juste de trouver une découpe "correcte" alors l'approche des skk201 est acceptable, bien sur.
Bruce Willix
Messages postés
12594
Date d'inscription
mardi 24 mai 2011
Statut
Contributeur
Dernière intervention
12 juin 2018
2021 -
Les problèmes NP ont toujours une apparence simple et sont - en fait - d'une extrême complexité à résoudre, surtout comme dans ce cas ci, ou on ne peut pas considérer de solution non entières.

Et en l'occurence les problèmes de découpe et de minimisation des pertes sont parmi les plus difficiles... En combinatoire on parle du problème de bin packing.

Bref, pour le résoudre il faut monter un système d'optimisation et le passer à la moulinette d'un logiciel approprié, comme le solveur d'Excel (que je connais pas bien) ou LINGO, qui permet en plus d'écrire le problème sous forme de pesudo-code, ce qui est plus facile...
pijaku
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2245 -
Salut Bruce,

Entièrement d'accord avec toi.
Il n'est d'ailleurs pas question ici de développer une telle application, mais de s'approcher d'un résultat correct, à défaut d'être optimal.
Bonsoir,

Pour répondre à ta question...oui c'est tout pour les contraintes! Je vais rentrer des séries de valeurs (environ 300 à la fois...mais peu importe le nombre: si ça ne tourne pas avec 300 alors j'en mettrai que 200 à la fois). La longueur de tube initial d'une même liste sera toujours la même soit 6000mm. Cependant il peut arriver que sur une autre liste ma longueur initiale soit de 5500mm. C'est pourquoi je voulais savoir s'il était possible de faire varier simplement la longueur initial d'un fichier à l'autre.
Ensuite, pour la précision elle est de zéro c'est à dire que si je dois découper une longueur de 1245mm dans un tube de 6m cette valeur est exacte (pas de chiffre après la virgule on arrondi au supérieur).
Je n'ai pas besoin d'une précision extrême, je souhaiterai juste ne pas perdre plus de 300mm ou 400mm environ sur chaque tube de 6m.

Pour finir donc et répondre à skk201: "une solution qui limite les pertes autant que possible avec Excel, mais qui est faisable gratuitement" me convient parfaitement!

Merci à vous...encore (j'étais loin d'imaginer que mon problème était si complexe)

Fanny
Bruce Willix
Messages postés
12594
Date d'inscription
mardi 24 mai 2011
Statut
Contributeur
Dernière intervention
12 juin 2018
2021 -
j'étais loin d'imaginer que mon problème était si complexe

Et encore, on creuse pas vraiment.

Perso, le problème le plus complexes que j'ai eu à gérer consistait a optimiser la découpe de tetrapaks dans une chaine de montage...
skk201
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35 -
Haha mais les tetrapacks il y a plus de dimention :) ? Enfin c'est peut-être pas ça le plus dur ?

Pour en revenir au problème, je peux te faire ça mais ces temps si j'ai pas mal de boulot, donc pas vraiment un moment à m'y consacré.

Si c'est pas urgent et que tu veux bien attendre, je pourrai essayer plusieur formule pour voir la quelle se rapporche plus des 300 / 400 mm de perte uniquement

Mais il faut savoir que plus tu as de mesure et plus ces mesures sont petites plus tu te rappochera des 400 mm des pertes. Si tu ne rentre que une centaine de mesure et toutes au dessus de 3000 c'est impossible d'avoir un bon résultat.

///////

Pour en revenir au longueur de tube ( 6000 et 5500 ) je veux être sûr d'avoir bien compris. Lorsque tu demandes de mettre en ordre 300 mesures, soit tout les tubes font 6000 soit tout les tubes font 5500 ?

Ou est-ce que c'est le premier fait 5500 et les autres font 6000 ?

Ou encore, est-ce que on à le choix êntre un tube de 5500 et de 6000 ?

Merci
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35
0
Merci
Avec une macro c'est tres simple.

je peux vous proposer une macro qui fera cela :
additionne les valeurs jusqu'a arrivé a une longueur de 6 mètres. Si la valeur suivante déplace les 6 mètres alors il prendra la suivante, jusqu'à ce qu'il en trouve une qui passe. Si il ne la trouve pas il passe a la au groupe de valeur suivante.
A faire attention :
cela nous donnera pas forcément le meilleur resultat.
et dans cet exemple je ne prend une valeur de 0.0mm pour chaque découpe. (ce qui est impossible mais si vous me donnez une marge pour la découpe alors je pourrai ajouter ce facteur)
est-ce que le nom change qqchose ?
0
Merci
Bonjour,
Merci pour votre réponse, oui j'ai une marge pour la découpe de 100mm.
Je ne comprend pas votre question: "est-ce que le nom change qqchose ?"

Je suis preneuse de votre macro en tout cas car je n'ai pas trouvé ma solution!

Fanny
skk201
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35 -
haha faute de frape je voulais dire : Est-ce que ça change qqchose ?

Actuelement j'ai déjà réfléchi à une macro encore plus effiace.

Et pour la marge de découpe ça serait plus précis avec une marge par découpe que une marge générale pour la barre de 6m.

Est-ce que tu veux une macro vite fait qui marchera uniquement pour ce document-là ou est-ce que tu veux que je te fasse un document expret pour cela, qui sera réutilisable ?
Bonjour,
Merci de ton implication.
Un fichier réutilisable serait l'idéal puisque j'aurai par la suite d'autres listing de valeur. De plus me sera t-il possible de rentrer dans ta macro pour modifier la longueur de 6m? En fait j'ai des longueurs de 6m et des longueurs de 5,5m.
En ce qui concerne la marge, elle n'a que peut d'intéret pour moi finalement puisque mon but est d'avoir le moins de pertes possible et que la macro ne me fasse pas de combinaison supérieur à 6m (physiquement non réalisable).
En relisant votre réponse je me demande si ce que vous appelez la "marge" n'est pas plutot la tolérance sur la découpe: c'est à dire que je dois découper une longueur de 1,20m par exemple avec une précision de +/-5mm soit une longueur entre 1195mm et 1205mm, est-ce cela? dans ce cas partir sur une précision de 0,005m car nous sommes très proche du 0 en réalité.
skk201
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35 -
Oui c'est tout à fait fesable et oui je parait bien de la tolérance sur la découpe.

Dac c'est assez simple je vous ferai un tru tout bête sur l'exemple que vous m'avez donner.

Est-ce que la liste des découpes dans l'ordre doit être imprimable ?
Oui, la liste des découpes dans l'ordre doit être imprimable.
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2245
0
Merci
Bonjour,

@ FaNy :
Aujourd'hui, je vais te demander de réfléchir à ta méthodologie.

Le but ici est d'économiser du tube en trouvant la "meilleure" solution de découpe. Si tu disposes de 2 longueurs différentes, il est évident que nous parviendrons à un meilleur résultat si nous utilisons à chaque fois ces deux longueurs...

Ensuite, tu nous dis : environ 300 à la fois...mais peu importe le nombre: si ça ne tourne pas avec 300 alors j'en mettrai que 200 à la fois
Pour nous, peu importe ce chiffre. Ce que l'on veut c'est que tu réfléchisses à ta méthode et nous donnes ta démarche.
Exemples :
Ex 1- J'ai des commandes de 357 références (comme le fichier joint), je souhaite, pour chaque commande optimiser les découpes.
Ex 2- j'ai x commandes que je peux "mixer". Soit 4900 références à traiter dans la semaine, qui représentent toutes mes commandes de la semaine et dont je dois optimiser la découpe.
Ex 3- etc...
Notre mise en oeuvre sera différente selon...
Bonjour,

C'est l'exemple 1 qui correspond à ma réalité:
J'ai des commandes de 350 à X éléments que je souhaite optimiser et par exemple:
J'ai une commande de 350 à X éléments que je réalise dans des tubes de 6000mm
J'ai une autre commande de 350 à X éléments que je réalise dans des tubes de 5500mm.

X correspond à ce qu'il est possible de faire via excel pour que je ne sois pas limité si une commande dépasse les 357 comme le fichiers joints. Sinon je scinderai mes commandes en éléments de 357 - j'aurai moins optimisé ma perte mais ce sera déjà mieux que rien!

Je ne souhaite pas mixer mes commandes.
skk201
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35 -
Dac, alors pas de soucis.

Vous pourrez choisir la longueur maximal des tubes entre 500 et 10 000 mm.

Et vous pourrez mettre un nombre très grand de mesure (autant que excel à de lignes)

En sachant que plus vous en mettez plus vous vous approcherez (je crois) d'un résultat optimal.

Mais que selon l'ôrdinateur que vous utilisez il risque d'avoir un temps de calculs plus ou moins long.

Sur quel version d'excel vous trouvez vous ? 2003 ? 2007 ? 2010 ? 2013 ?
Re,

Je suis sur excel 2013.
...hate de voir ce qu'il est possible d'obtenir :) !
pijaku
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2245 -
Je penses que nous avons tous les éléments pour travailler...
Je reviens dessus plus tard, pas trop le temps...
A tantôt
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2245
0
Merci
Re-

@ "Les programmateurs" :
Ce sujet m'a amené à cette réflexion.
Deux méthodes de base pour une solution pas "optimale", mais "la meilleure".
Méthode du sac à dos :
Je prends mes références et les ajoutes. Dès que j'approche de la valeur cible j'arrête et recommences.
Soit l'algorithme glouton, transcrit en pseudo-code VBA suivant :

n = Nombre de références
LongueurEnCours = somme des découpes pour 1 tube
Longueur() = longueurs des références
LongueurMax = 6000 ou 5500
DejaFait() = "boolean" (valeurs 1 ou 0) listant les références déjà utilisées
Loop While Nb(Si(DejaFait(i) = 1)) = n
For i = 1 To n
If LongueurEnCours + Longueur(i) <= LongueurMax alors
DejaFait(i) = 1
LongueurEnCours = LongueurEnCours + Longueur(i)
Else
DejaFait(i) = 0
End If
Next i
Loop

Fonction récursive :
La méthode est celle décrite par skk201.
A partir de la liste des longueurs, je calcule, récursivement les différentes solutions, en tenant compte, cette fois, d'une marge.

Optimisation?
L'optimisation, ou plutôt dans ce cas, la recherche de la meilleure solution, consiste à prendre toutes les solutions trouvées et ne conserver que la meilleure.
Nous avons ici deux méthodes donc deux solutions. Ne prendre que la "meilleure" des deux ne semble pas être optimal.
Donc, en creusant un tout p'tit peu, on se rends vite compte que, dans la méthode récursive, le nombre de solutions évolue selon le "tri" de la liste initiale. En effet, selon si on la présente "dans l'état", trié en ordre croissant ou décroissant, le nombre de solution est différent. Cela nous fait déjà 4 solutions.
Nous pouvons également en déduire une infinité d'autres selon le tri de la liste. Par exemple : on prends les 10 1ers éléments et on les mets à la fin, puis on injecte cette "nouvelle liste" dans la fonction récursive. On peut imaginer une infinité donc de solutions.
Notre boulot va donc consister à choisir les différents tris afin de ne pas chercher inutilement.
Qu'en pensez vous?
skk201
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35 -
Je pense que le meilleur tri est celui qui classe les mesure dans l'ordre décroissant.

Il existe encore une autre méthode, mais qui n'est pas forcément la plus efficasse. C'est d'asemblé les valeur dans des petits groupes de 1000 mm || 2000 mm || 3000mm et d'assemblé les groupes entre eux pour obtenir 6000 mm.

Mais cela dépend de la tailler et du nombre de découpes qu'on nous donne.

ça permet aussi de minimisé les pertes.

On fait des groupes entre 1860 et 2000 se qui fait qu'on limite théroriquement la perte par tube à max 420 mm par tube.

Mais bour pour que ça fonctionne bien, encore une fois, il faudrait beaucoup de valeurs de petites tailles.
Bruce Willix
Messages postés
12594
Date d'inscription
mardi 24 mai 2011
Statut
Contributeur
Dernière intervention
12 juin 2018
2021 -
Nous pouvons également en déduire une infinité d'autres selon le tri de la liste
.
Peut être pas une infinité, mais beaucoup en tout cas. D'ou l'utilisation d'algorithmes tels que le simplexe et autres pour explorer l'arbre des possibilités - ou en l'occurence les sommets du polygone des solutions.

On a i produits distribuées de façon normale autour d'une moyenne de 300 : i~N(300,sigma)
Ces i produits sont découpés dans j tubes

Donc on doit

Min Somme (Perte(j))=Min Somme (600-somme(i))
sous les contraintes que somme(i,j)<600
i>0

il ne doit pas y avoir bcp plus de contraines que ça.

Suis au bureau, mais le problème est excellent. Je regarde avec Lingo ce soir ^^
skk201
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35 -
Je comprend juste pas le

sous les contraintes que somme(i,j)<600

Une petite explication :) ?
Bruce Willix
Messages postés
12594
Date d'inscription
mardi 24 mai 2011
Statut
Contributeur
Dernière intervention
12 juin 2018
2021 -
j'avoue que j'ai pas tous les caractères dont j'ai besoin pour l'écrire correctement ^^ Il faut que chaque la somme des i-éléments dans le j-ième tube découpé soit inférieure à la longueur du tube.
Messages postés
12254
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2019
2245
0
Merci
Re-

Modifications suite.

Procédure Compter :
Sub Compter() 'Compte le nombre de découpe et défini la Var_pub
Feuil = "Découpes"
Dim Ligne As Integer
    Ligne = 2
Do While Sheets(Feuil).Cells(Ligne, 2) <> ""
Ligne = Ligne + 1
Loop
'Définir le nombre de découpes
NB_decoupes = Ligne - 2 '-2 à cause du titre et de la dernière ligne qui est vide
End Sub

Cette procédure peut être supprimée. En effet, VBA permet, en une seule ligne de code, sans boucle, de trouver la dernière cellule non-vide d'une colonne. Il existe plusieurs syntaxes possibles, je me contenterais de celle-ci :
Ligne = Sheets(Feuil).Range("B" & Rows.Count).End(xlUp).Row

Si on considère la première ligne comme entête, le nombre de références est donc :
Ligne = Sheets(Feuil).Range("B" & Rows.Count).End(xlUp).Row - 1


Évolution du classeur :
Avec les économies que tu va faire réaliser à FaNy (en perte de tubes ET en temps), son entreprise va vite prendre de l'ampleur. De PME elle va devenir une TGE cotée au CAC40...
Et donc, les commandes vont passer de 300 lignes à 50000...
Blagues mises à part, je penses que ta procédure gagnerait en agilité si tu utilisais des variables tableaux.
Ma question est donc la suivante : connais tu ce type de variable?

Boucles inutiles :
Je crains, mais mon analyse de ton code n'est pas terminée, que ta Sub ne boucle beaucoup pour rien. A ce titre, pourrais tu, pour une meilleure compréhension de ton processus, commenter ton code de manière détaillée ?
Cela permettra, en outre, une maintenance beaucoup plus efficace de ton code.
Messages postés
29753
Date d'inscription
samedi 12 mai 2007
Statut
Webmaster
Dernière intervention
10 décembre 2019
2056
0
Merci
Bonjour,

J'ai tout lu mais depuis le début je me pose une question :
@ fany : une coupe équivaut à 0 de perte dans un tube ? ou une coupe fait quelques micron/millimètres ?
Comme je ne vais pas être en capacité de déchiffrer le code et de savoir si cette contrainte a été vue et prise en compte, je pose la question.
Mais dans les textes, je suis peut-être passé à coté ; je vois marge/tolérance mais pas "épaisseur de coupe". (ce qui peut avoir son importance si un tube est découpé en un grand nombre de sections.)

____________________________________________
L'humour est la clé de voûte de la conscience.
noctambule28
Messages postés
29753
Date d'inscription
samedi 12 mai 2007
Statut
Webmaster
Dernière intervention
10 décembre 2019
2056 -
0.005m ça fait 5 millimètres, ce n'est pas rien ou c'est une erreur de frappe et c'est du 0,005mm et une coupe au laser (sans doute) d'où ma question :attendons Fany.
skk201
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35 > noctambule28
Messages postés
29753
Date d'inscription
samedi 12 mai 2007
Statut
Webmaster
Dernière intervention
10 décembre 2019
-
Actuellement de mon côté c'est prevu. Ce classeur etait que un brouillon.
Dans la version final on pourra saisir la "tolérance de découpe" tout comme la longueur des tubes.
donc imaginons que finalement elle se rend compte que 0.005 m c'est pas assez ou trop elle pourra toujours le changer.
skk201
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35 -
Après quelques test de 6000mm :

Avec une marge de 0mm : 83 tubes
Avec une marge de 5mm: 83 tubes
Avec une marge de 10mm : 84 tubes
Avec une marge de 20mm : 85 tubes
Avec une marge de 50mm : 87 tubes

Comme quoi la marge n'a vraiment pas un grand impacte. (une marge de 10mm c'est déjà énorme)

avec les 360 découpes qu'on avait on arrive à moins d'un tube de perte : 5741mm de perte avec 5mm de tolérance

en revanche avec des tubes de 5500 et 5mm de marge :

9 tubes avec plus de 2600mm de perte.

soit une perte total plus de 30 000mm !!

Donc le choix des tubes peut avoir un grand impacte !

////////////

C'est amusant de voir qu'on aurait 7000mm de perte avec des tubes de 10 000 de long.

on pourrait même imaginé l'inverse, une macro qui dit la longueur idéales des tubes pour qu'il n'y ai pas de perte (ou le moins possible)
ccm81
Messages postés
9175
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2019
1667 -
@skk201
Salut à toi
Je suis le sujet depuis un moment et je serai curieux de voir ta démarche, peux tu la mettre sur cjoint au format excel 2003
Merci
skk201
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35 -
Bonjour ccm81

Quand tu dis voir ma démarche tu veux dire voir mon projet VB ou voir le fichier excel ?

Si tu veux le fichier il y en a un sans commentaires et avec des erreur dans la discutions.

Avec l'aide de pijaku les erreurs sont maintenant corrigée. Je dois y ajouter encore quelques trucs.

Si tu veux je poste encore une fichier intermédiaire ? Je peux le faire de suite (sans commentaires) ou demain (avec des commentaires dans le VBA)

C'est comme tu veux :)
Messages postés
9175
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2019
1667
0
Merci
Demain avec vba (au format excel 2003) et ses commentaires bien sûr, ça ira très bien
J'ai tenté un début, mais je manque de technique!
merci à toi
skk201
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35 -
Oui pas de soucis :)

J'attend encore un peu pour voir si qqun à encore des commentaires ?
Bonjour à tous,
...Juste pour savoir où en était le fichier final...même si l'intermédiaire est déjà très performant vis à vis de mon application!
Merci

Fanny
skk201
Messages postés
941
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
35 -
Voilà :)

http://cjoint.com/confirm.php?cjoint=0EAmRt0Jh4l

Je pensait aussi faire une sorte d'inventaire des chutes mais je ne sais pas si c'est très utile pour vous.

Au sommet dans l'onglet "Complément" vous trouverez les deux bouton qui servent a utiliser les macros.

:) Vous pouvez passez le sujet comme résolut
Je teste! Merci beaucoup,
Je vous tiens informé
cockrille
Messages postés
6
Date d'inscription
samedi 7 février 2015
Statut
Membre
Dernière intervention
18 février 2015
-
Serait-il possible de disposer du fichier excel? j'ai un problème similaire au votre

merci !
Messages postés
9175
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2019
1667
0
Merci
Bonjour,

Le fichier crée par skk201 (26/05/2014)
http://cjoint.com/?3BioYtxYllq

Cdlmnt