Lancer un calcul de solveur dans une boucle

Bonjour à tous,

Je cherche à lancer le solveur dans une double boucle pour optimiser un tableau et je n'arrive pas à trouver la bonne synthaxe.

Je n'ai pas trouvé ce que je chercher sur internet ou sur le forum donc je créé ce sujet.

Voici le code que j'ai utilisé :

SolverOk SetCell:="" & ws.Cells(a + m + (i - 1) * p, 2 + b + j).Address & "", MaxMinVal:=1, ValueOf:=0, ByChange:="" & Range(ws.Cells(a + 3 + (i - 1) * p, 2 + j), ws.Cells(a + m - 1 + (i - 1) * p, 2 + j)).Address & "", _
Engine:=3, EngineDesc:="Evolutionary"
SolverSolve

Les variables dans les Cells sont bonnes je précise.

J'ai essayé celle-ci aussi mais ça ne fonctionne pas :

colonne1 = Chr(64 + 2 + b + j)
colonne2 = Chr(64 + 2 + j)

SolverOk SetCell:="$" & colonne1 & "$" & a + m + (i - 1) * p & "", MaxMinVal:=1, ValueOf:=0, ByChange:="$" & colonne2 & "$" & a + 3 + (i - 1) * p & ":$" & colonne2 & "$" & a + m - 1 + (i - 1) * p & "", _
Engine:=3, EngineDesc:="Evolutionary"
SolverSolve

Comment faut-il l'écrire pour que cela fonctionne ?

Si je lance ma macro avec ces lignes, cela me dit mais Fonction ou mon Sub n'est pas définie.

Merci d'avance,

Bonjour,

ton code doit être dans un sub.

Sub le_nom_qui_va_bien ()
 ' ton code
 ' ...
End Sub

Bonjour,

Oui bien sur, mon code l'ai, j'ai juste mis l'extrait qui bloque car quand je commente ces trois lignes la macro se lance sans soucis.

Cdt,

Dans les 'Options / Compléments' tu as bien le 'Complément Solveur' d'activé ?

Et dépose ton fichier (anonymisé).
Il y aura bien qq'un qui aura 5 min pour tester

re,

oei, "Evolutionary", excel sait le solver sans VBA ?

Je ne sais pas si on peut utiliser des cellules d'une autre feuille, votre "ws.Cells(...)"

Oui j'ai bien activé le solveur excel dans les compléments.

Je regarde pour faire le fichier !

Oui normalement, j'ai un autre excel fait pas un collègue qui l'utilise sauf que lui ne fait de boucle sur le solveur comme moi.

Et en effet, le solveur a besoin que les cellules selectionnées soient sur la même feuille ce qui est mon cas, ws fait référence au worksheet sélectionné en début de macro.

Cdt,

re,

un fichier dans laquelle j'ai utilisé "OpenSolver" au lieu de "Solver" (plus performant, mais autrement presque pareil), pour vous donner l'idée.

5invoice.xlsm (56.19 Ko)

Merci pour le fichier,

En préparant le fichier anonymisé j'ai trouvé mon soucis c'était la fonction chr() comme certaine colonne dépassaient Z il a fallu que j'adapte.

Mon fichier fonctionne donc merci ! Par contre le solveur ne trouve pas toujours de solution alors que j'en trouve facilement à la main, il va falloir que j'investigue !

Cdt,

re,

vous ne pouvez pas utiliser la méthode "simplex" au lieu d'Evolutionary ?

Sinon postez votre fichier ici.

Rechercher des sujets similaires à "lancer calcul solveur boucle"