Calcul automatique

Bonjour à tous,

Je suis à la recherche d'une formule sur VBA qui me permettrait de calculer des valeurs régit par plusieurs conditions.

MAIS si ces valeurs ne tombent pas juste, le programme se relancerait jusqu'à trouver la bonne valeur, toujours selon les mêmes conditions.

Auriez vous ça dans vos valises ?

Merci d'avance pour vos réponses.

bonjour,

avec les infos que tu donnes, la réponse que je peux te donner c'est "le solveur doit pouvoir t'aider" ou "vba doit pouvoir le faire". il n'y a pas de solution toute faite. il faut que tu donnes la formule et ses variables et leur(s) contrainte(s)

Hello et bienvenue sur le forum,

As-tu regardé du côté de la fonction 'valeur cible'? Qui permet de faire ce type de calcul en modifiant UN seul paramètre

(donc si ton problème peut être réduit à une seule variable, cette fonction conviendra à ton besoin)

Si tu connais déjà ou si cela ne convient pas, quel type d'équation souhaites-tu résoudre?

Merci de vos réponses.

Pour être plus précis, je vous joint le fichier avec les conditions. J'espère que vous comprendez le problème

20calcul-auto.xlsm (18.51 Ko)

rebonjour,

je ne trouve pas ta formule excel qui calcule LT sur base des variables L1,L2,L3,L4,L5 et L6

C'est la formule que j'ai noté en mode "scientifique"

Sinon en maths plus française c'est :

LT = 2*(L1+L2+L3+L4+L5+L6) + (N-1)*15 + 2*5 +2*C

rebonjour,

une solution avec le solveur et une solution avec vba

8calcul-auto.xlsm (16.36 Ko)

Re-bonjour,

Merci pour tes solutions et pour avoir passé du temps sur mon sujet mais le résultat LT calculé à partir de la largeur des lames et le LT rentré au début est différent. Je ne comprends pas bien ton code dans le fichier VBA, quand est ce que l'on sort de la boucle ?

Bonjour

on sort de la boucle dès que sur base des contraintes on a une valeur inférieure ou égale à la taille de la lame. Si la longueur calculée est inférieure c'est qu'il n'est pas possible avec les paramètres données d'avoir une taille égale.

Bonjour,

Y aurait une possibilité de ne pas prendre L1 = L1maxi mais une valeur au mieux inférieur à L1maxi en prenant compte que le dernier L doit faire mini 50 donc que L1 ne doit pas être trop petit puisque le dernier L dépend de L1 ?

Merci d'avance !

Valentin36 a écrit :

Bonjour,

Y aurait une possibilité de ne pas prendre L1 = L1maxi mais une valeur au mieux inférieur à L1maxi en prenant compte que le dernier L doit faire mini 50 donc que L1 ne doit pas être trop petit puisque le dernier L dépend de L1 ?

Merci d'avance !

1) d'après tes formules L6 dépend de L2 et non L1

2) L1 pas trop petit, c'est-à-dire ? quelle valeur minimum pour L1 ?

j'ai modifié la macro pour d'abord essayer différentes valeurs de L1

Oui L6 dépend en vérité de L2 mais L6 existe seulement si on a N=12 sinon il n'existe pas.

LT calculé doit être égale à LT rentrée donc la somme des lames + les constantes (selon le nombre de N )+ C en tenant compte que L1 doit être au minimum supérieur à L2 de 10 mais le maximum de différence entre L1 et L2 dépend de LT ...

C'est vraiment un casse tête mon problème ...

Bonjour,

contrainte sur l1 incluse dans vba et dans le solveur

Re-bonjour,

Merci beaucoup !

Si je comprends bien c'est que lorsque LT calculé n'est pas la LT donnée cela veut dire que l'équation n'a pas de solution ?

J'aimerais que mes largeurs évoluent avec une pas de 5, c'est bien en changeant le pas de 1 ou 0,1 dans la macro par 5 ou il existe meilleure solution ?

En tout cas, merci tu as fait un super travail !

rebonjour

tu peux choisir ton incrément en F14

Rebonjour,

C'est dommage, avec un pas de 5 (comme j'aimerais dans un objectif final) je tombe bon seulement si LT est impair (donc sa valeur finie par 5 puisque je marche de 5 en 5) ...

Sinon est ce faisable et pas trop gourmand en temps de créer une autre boucle en prenant compte que :

si L4=0 alors L3 vaut au minimum L2-15, sinon L3 = L2-15

si L5=0 alors L4 vaut au minimum L3-15 sinon L4 = L3-15 ?

si L6=0 alors L5 vaut au minimum L4-15 sinon L5 = L4-15

Ce serait possible de ne pas avoir une seule solution mais plusieurs avec un choix possible à faire par l'utilisateur ?

En tout cas, je tenais a te féliciter et à te remercier pour ce que tu avais fait !

pas compris sur quelle variable mettre une boucle supplémentaire

par contre j'ai adapté les calculs de L5,L4 et L3.

Pour L5 je comprends pas et je n'arrive pas à voir dans ton programme mais mon L5 vaut toujours 260 ...

En faite, je raisonne par un pas de 5 pour définir mon LT et lorsque ma valeur est impaire (par exemple 1995) la macro me sort des résultats mais lorsque je rentre une valeur pair (2000 par exemple) la macro me ressort un résultat de LT-5 lorsque dans la macro on a le résultat <= LT et si je remplace le inférieur ou égal par égale, il ne me ressort aucuns résultats :/

Après j 'aimerais savoir si c'est possible d'avoir un LT exact en te donnant des plages de valeurs pour L3, L4, L5 et L6 selon le N ?

Valentin36 a écrit :

Pour L5 je comprends pas et je n'arrive pas à voir dans ton programme mais mon L5 vaut toujours 260 ...

une erreur dans les formules

En faite, je raisonne par un pas de 5 pour définir mon LT et lorsque ma valeur est impaire (par exemple 1995) la macro me sort des résultats mais lorsque je rentre une valeur pair (2000 par exemple) la macro me ressort un résultat de LT-5 lorsque dans la macro on a le résultat <= LT et si je remplace le inférieur ou égal par égale, il ne me ressort aucuns résultats :/

Après j 'aimerais savoir si c'est possible d'avoir un LT exact en te donnant des plages de valeurs pour L3, L4, L5 et L6 selon le N ?

voir si la solution jointe te convient

Rechercher des sujets similaires à "calcul automatique"