Calcul suite de nombre

Bonjour à tous,

Alors voila,

J'aimerais faire un algo qui va calculer une suite de nombre ( ci- dessous )

en fonction d'une valeur que j'ai rentrer au prealable dans un inputbox

Ex : je rentre 800 : je veux que l'algo additionne les nombre pour arriver au plus pres de 800

image

MERCI A TOUS

Tu veux bien nous mettre ta liste de nombres dans un fichier Excel ? Ca va faciliter la vie de tous.
C'est un programme de recherche opérationnelle intéressant. J'en ai oublié le modèle, mais je vais peut-être le retrouver : l'algo existe.

Bonjour le forum,

Optimix, il me semble que c'était ce sujet si je ne dis pas de bêtises et si ça peut t'éviter de chercher. Avec une macro très intéressante de Eriiic.

Bonne journée

Bonjour,

Le fichier ci dessus,

Merci pour votre réponse

Ah, OK, alors je te laisse le soin d'éclairer notre ami.

Ah non pas du tout je ne maîtrise absolument pas ça, je pensais juste que c'était ce modèle dont tu parlais. Si tel n'est pas le cas excuse moi.

#Ergotamine
J'ai essayé de faire fonctionner le fichier dont tu parles, chez moi ça plante d'entrée de jeu. Peut-être pas adapté à Excel 2016 ? C'est pour ça que je n'ai pas cherché à insister.

Je reformule ta question Yannis111 et dis-moi si j'ai bien compris. Au lieu de prendre une liste de 71 nombres comme ceux que tu proposes je n'en prendrais que 4 de ta liste : 73,600 147,700 36,800 et 36,100. Et s'il fallait trouver la somme qui s'approche le plus de 200 ça devrait nos donner 147,700 + 36,800.
Question : est-ce que ton besoin est bien là, mais avec 71 nombres au lieu de 4 et 800 au lieu de 200 ?

sommes

Bonjour,

Oui, c'est bien ça

Merci pour ton retour

As tu une astuce ?

Bonjour tout le monde !

Une solution utilisant le complément Solveur : les lignes avec un 1 en colonne F correspondent aux lignes sommées pour s'approcher au plus près du total cible (ici 800).

illusolveur

Le fichier modifié :

Salut Pedro22,

Merci pour ton retour , comment avoir accès au solveur , j'ai la version la plus recente et je trouve pas comment l'ajouter a la barre d'outils

Tu as quelques explications dans le lien que j'ai mis dans mon précédent post, qui s'applique à Excel 2010. Peut-être qu'il y a quelques différences avec les versions plus récentes d'Excel, mais tu devrais trouver le mode d'emploi en cherchant un peu sur Internet (de mon côté j'ai trouvé ce lien)

C'est bon, j'ai pu trouver le solveur, par contre impossible de refaire ta manip, explique moi la formule que t'as mit en T1 et comment je peux modifier la valeur cible ?

l'exemple que tu donnes est parfait on tombe pile sur 800

j'aimerais essayer avec une autre valeur

et enfin, par la suite j'aimerais rajouter comme contrainte si possible qu'ils prennent les valeurs plus ancienne d'abord dans l'ordre croissant ...

Les formules sont présentes dans le fichier que j'ai inséré dans mon message, tu peux donc les étudier et les modifier.

Dans le cas présent, la formule est réalisée en feuille 2, et la cellule T1 ne fait que reporter le résultat dans la feuille 1, car le Solveur impose de travailler sur une feuille unique. En feuille 2, je fais dans un premier temps un formule SOMME.SI pour sommer les stocks totaux pour lesquels la cellule F correspondante est égale à 1. Dans une autre cellule, je fais ensuite la différence entre cette somme et le total cible, mais le tout est aussi réalisable en une seule formule.

TOP Merci Pedro22,

Cependant je n'arrive pas à ouvrir le code "Solver"

Quand j'essaye de reproduire le solveur sur un autre fichier , tout en recopiant la manip, le solveur ne fonctionne pas ( s'execute mais ne trouve rien )

image

Il n'y a pas besoin d'ouvrir VBA pour utiliser le Solveur, et le code lié à ce complément est effectivement protégé. En revanche, tu peux paramétrer et utiliser le Solveur depuis une macro VBA, mais il faut également charger le complément dans VBA.

Il faut s'assurer que le complément est chargé dans chaque fichier où tu dois l'utiliser. Ensuite paramétrer l'optimisation depuis le menu "Solveur" de l'onglet "Données". Il aussi que tu choisisses le moteur de résolution adapté à ton problème (ici plutôt "Evolutionnaire"), en plus du paramétrage de la valeur cible, plage d'optimisation et des contraintes.

Bonjour à tous,

J'ai testé le fichier, SOLVEUR fonctionne avec 200 chiffres, mais j'en ai 550, il me réponds une erreur Excel trop de variable :(

Auriez-vous une idée ?

Cordialement,

Bonjour,

dyscus = Yannis111 ?

Il y a un lien vert à suivre dans le post du 26/02/2021 à 11:33

eric

Salut Pedro22

J'ai besoin de toi.

Je n'arrive pas à comprendre pourquoi mon solver en VBA ne fonctionne pas,

il se lance mais ne fait pas le calcul

Bonjour,

Quelques remarques avant de s'attaquer au fond du problème :
- L'enregistreur de macros est un bon moyen de "mettre le pied à l'étrier" sur VBA, mais le code produit est à retravaillé et souvent pas du tout optimisé
- En lien avec la remarque précédente, les .Select ou .Activate sont inutiles, il suffit de bien préciser sur quoi on travaille (voir code retravaillé plus bas)
- Il est inutile de réécrire ton scénario à chaque fois (il ne change pas), il suffit juste de relancer son exécution après avoir modifié la valeur cible (en clair, une macro avec juste SolverSolve suffit).

Voilà tes 2 premières macros modifiées :

Sub reinitializ()

Dim Cel As Range

For Each Cel In Sheets(1).Range("S2:S74") 'Boucle sur les cellules de cette plage
    Cel = 0 'Implicitement, il s'agit de la propriété .Value (la valeur) --> Cel.Value = 0
Next Cel

End Sub
Sub Macrotstsolv()

' Utilisation du Solver
With Worksheets("sheet1") 'Tout ce qui commence par un "." se rattache à cette feuille
    .Range("U5") = .Range("T1")
    SolverOk SetCell:="$T$1", MaxMinVal:=2, ValueOf:=0, ByChange:="$S$2:$S$74", Engine:=3, EngineDesc:="Evolutionary"
    SolverSolve
End With

End Sub

Concernant ton problème, il ne s'agit pas d'un soucis lié à VBA, car le Solveur ne trouve pas de solution non plus en lançant manuellement l'optimisation. La raison est simple : tu n'as pas mis la bonne cellule objectif. Cette cellule doit contenir une formule dont le résultat évolue en fonction des valeurs testées par le Solveur. Dans ton cas, c'est la cellule U7.

Rechercher des sujets similaires à "calcul suite nombre"