![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE. |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mars 2008
Messages: 55
|
Mon problème est un peu délicat.
Je souhaite effectuer des calculs dans le but d'optimiser des longueurs de tubes de chauffage par le sol. En fait dans ma base, je calcul des surfaces qui me donnent par calcul des longueurs de tubes nécessaires par pièces. Par exemple pour une pièce de 20 m2 il me faut 100 m de tube Pour 25 m2 il me faut 125 m de tube. J'ai un choix de couronnes de tube de 100,140 et 200 m. Dans ce cas je sélectionne une 140. Comment retranscrire cela par calcul pour qu'access sélectionne lui même les bonnes couronnes. Désolé mon explication est un peu confuse, mais j'espère avoir été clair. |
|
|
|
|
|
#2 (permalink) |
|
Expert Confirmé Sénior
![]() |
bonjour,
ton problème est d'abord une histoire d'algorithmique. l'idée étant de choisir le plus petit des tubes disponibles, dont la longueur doit être supérieur à une valeur... en SQL tu auras la requête exemple suivante : Code :
SELECT MIN(LaLongueurDeTube) FROM MaTableDeTubes HAVING MIN(LaLongueurDeTube) >= 120;
__________________
Piou-Piou Poussin Developpeur Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute |
|
|
|
|
|
#4 (permalink) |
|
Expert Confirmé Sénior
![]() |
l'objectif est de trouver la plus petite longueur de tube mais suffisante pour couvrir les besoins de la pièce, ok ?
__________________
Piou-Piou Poussin Developpeur Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute |
|
|
|
|
|
#6 (permalink) |
|
Expert Confirmé Sénior
![]() |
et en explicitant "une chute" ca donne quoi stp
__________________
Piou-Piou Poussin Developpeur Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute |
|
|
|
|
|
#7 (permalink) |
|
Membre Confirmé
![]() Date d'inscription: juillet 2006
Localisation: Luxembourg
Messages: 217
|
Je suppose qu'il s'agit des restes de la decoupe.
Si j'ai bien compris ton probleme, en focntion d'un surface tu veux s'avoir combien de tubes tu as besoin et les tailles respectives? |
|
|
|
|
|
#8 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mars 2008
Messages: 55
|
En fait prenons une couronne de tube de 140 mètre on peut faire plusieurs pièce avec par exemple 2 circuits de 70 m ou bien 2 de 50 et 1 de 40.
Avec une couronne de 200 mètres on peut faire la même chose mais on aura plus de chutes . |
|
|
|
|
|
#9 (permalink) |
|
Expert Confirmé Sénior
![]() |
et bien mon raisonnement restera le même, on minimise déjà la longueur de chute avec ma requête exemple.
exemple : quelles sont les pièces de monnaie parmi (2€, 1€, 0.50€, 0.20€ et 0.10€) à prendre pour faire 4.52€ ? réponse : 2€ + 2€ + 0.50€ + 0.10€ soit on le fait par une requete, soit par une boucle do while...
__________________
Piou-Piou Poussin Developpeur Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute |
|
|
|
|
|
#10 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mars 2008
Messages: 55
|
exactement tu ne peux pas mieux dire. Maintenant comment rédiger cela à partir d'un champ dans lequel j'ai calculé la quantité de tube nécessaire par pièce; mes couronnes de tubes sont donc de 100,140 et 200 m
|
|
|
|
|
|
#11 (permalink) |
|
Expert Confirmé Sénior
![]() |
exemple, pas forcément la solution optimale
Code :
Sub (dbinput as Double) dim nb100 as double dim nb140 as double dim nb200 as double dim dbbegin as double dbbegin = dbinput nb100 =0 nb140 =0 nb200 =0 do until dbbegin<200 dbbegin = dbbegin-200 nb200 = nb200 + 1 Loop do until dbbegin<140 dbbegin = dbbegin-140 nb140 = nb140 + 1 Loop do until dbbegin<100 dbbegin = dbbegin-100 nb100 = nb100 + 1 Loop msgbox "il faudra " & nb200 & " tubes de 200 cm, " & nb140 & " tubes de 140 cm et " & nb100 & " tubes de 100cm" End Sub autre méthode, faire des boucles pour relever chacune des possibilités de combinaisons, et en relever par la suite la plus faible valeur > valeur nécessaire.
__________________
Piou-Piou Poussin Developpeur Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute |
|
|
|
|
|
#13 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mars 2008
Messages: 55
|
Je viens de faire un test avec le code, mais ce n'est pas concluant. Je mis prend peut être mal. En fait je vais faire un tableau qui sera plus explicite
Pièce Surface Tube a 20 100 b 25 125 c 10 50 Mes couronnes de tubes disponibles sont 100,140,200. Le résultat que j'attends est 1 couronne de 140 (pour pièce a + b) et une de 100 (pièce b) J'espère avoir été plus clair. |
|
|
|
|
|
#14 (permalink) |
|
Expert Confirmé Sénior
![]() |
et la pièce c ??
![]() est-ce un exercice ? si c'est le cas, aurais-tu au moins l'énoncé exact stp ?
__________________
Piou-Piou Poussin Developpeur Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute |
|
|
|
|
|
#15 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mars 2008
Messages: 55
|
Que je suis nouille, dans la pièce C il faut 1 couronne de 100m .
Ce n'est pas un exercice, je travaille depuis plusieurs mois sur une base et cet élément de calcul ma manque puisque je le fais à la main |
|
|
|
|
![]() |
![]() |
||
Trouver une formule de calcul
|
||
| Outils de la discussion | |
|
|