[Déplacé .Net --> VBA] retrouver un resulat a l'aide de certaines valeurs

Signaler
Messages postés
2
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
26 novembre 2009
-
Messages postés
2
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
26 novembre 2009
-
Salut les amis je suis nouveau sur ce site que je trouve genial et j'ai un probleme a vous poser.

prenez les nombres de 1 a 50 .En suite prenez la racine de chacun de ses nombres.

Le but est de touver la somme des racines qui sera proche de la valeur (30*pi) (30*3.14) en indiquant par 1 ou 0 les chiffres utlilises pour avoir cette somme.
J'arrive a le faire facilement en excel par le solveur mais en VBA j'ai de la misere.
J'attends vos suggestions .Je precise que c'est en VBA .MERCI davance

1 racine(1)
2 racine (2)
3.
..
.
50 racine(50)

resultat voulu = 30*valeur de (Pi)

2 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
78
Salut
Deux choses :
-1- la méthode de résolution
-2- la technique à appliquer

Pour la méthode, c'est la même que pour le rendu de monnaie en fonction des pièces dont tu disposes :
Il faut commencer par le plus grand chiffre (racine pour toi).
Si ce chiffre est supérieur au chiffre cible, tu ne le gardes pas.
Si ce chiffre est inférieur ou égal au chiffre cible, tu le gardes. Le chiffre cible devient alors égal au chiffre cible initial moins le chiffre que tu viens de sélectionner.
Puis, tu passes au chiffre suivant (plus petit), et tu recommences le même raisonnement.
Exemple :
Chiffre cicle = 29
Je dois trouver ce qui le compose avec 20, 10, 5, 3, 2 et 1
20 est plus petit que 29 : Je le garde et ma cible devient 29 - 20 = 9
10 est plus grand que 9. Je ne le prends pas
5 est plus petit que 9 : Je le garde et ma cible devient 9 - 5 = 4
3 est plus petit que 4 : Je le garde et ma cible devient 4 - 3 = 1
2 est plus grand que 1 : Je ne le garde pas
1 est plus petit ou égal à 1 : Je le garde et ma cible devient 1 - 1 = 0
Résultat : 20, 5, 3 et 1 seront retenus
Tu fais le même raisonnement avec tes racines.

Pour la technique, est-ce que tu sais maintenant comment faire ?
Une simple boucle "For-Next" avec "Step - 1" suffit

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
2
Date d'inscription
vendredi 20 novembre 2009
Statut
Membre
Dernière intervention
26 novembre 2009

Salut c'est tres apprecié de ta part d'avoir répondu rapidement comme sa.Je te remercie infiniment .Je n'ai pas encore essayer ca mais ton raisonnement est tres intelligent et bon .Des que je le ferai je te ferai savoir.
Merci encore agréable journée