VBA Solveur désactivation de la boîte de dialogue qui s'affiche après chaque itération

Je suis en utilisant le haut-solveur Excel 2007, dans une VBA boucle de résoudre un certain nombre de problèmes différents. Parfois, le solveur frappe le maximum de temps, ce qui provoque un pop-up boîte de dialogue apparaît demandant à l'utilisateur s'il veut Continuer, Arrêter, ou à la Fin. Dans tous les cas, je le veux à la fin, et passez à la ligne suivante de la boucle. Cela permettra d'empêcher un utilisateur d'avoir à s'asseoir et d'y répondre à chaque fois.

J'ai couru une macro avec le solveur pass thru méthode ( Catch max de temps/itération de la boîte de dialogue lors de l'utilisation du Solveur de microsoft Excel en VBA ), mais alors il me donne une autre boîte de dialogue en disant: "La formule que vous avez tapé contient une erreur"

J'ai aussi essayé http://msdn.microsoft.com/en-us/library/office/ff197237(v=office.15).aspx .
Ce qui l'est moins compliqué que la version de "Le solveur pass thru méthode", mais après chaque itération, il me donne le même message que "La formule que vous avez tapé contient une erreur"
C'est mon code

Sub Optimize()
'
' OptimizeShortfall Macro
'

'
Set MyFirstObj = Range("I124")
Set MyFirstRange = Range("H600:H698")
Dim i As Integer
For i = 0 To 1
    MyObj = MyFirstObj.Offset(0, i).Address
    MyTestRange = MyFirstRange.Offset(0, i).Address
    SolverReset
    SolverOk SetCell:=MyObj, MaxMinVal:=1, ValueOf:="0", ByChange:= _
        MyTestRange
    SolverAdd CellRef:=MyTestRange, Relation:=1, FormulaText:="100%"
    SolverOptions MaxTime:=20, Iterations:=100, Precision:=0.000001, AssumeLinear _
        :=False, StepThru:=False, Estimates:=1, Derivatives:=1, SearchOption:=1, _
        IntTolerance:=5, Scaling:=False, Convergence:=0.0001, AssumeNonNeg:=True
     SolverSolve UserFinish:=True, ShowRef:="SolverIteration"
    Next i
End Sub

Function SolverIteration(Reason As Integer)
    MsgBox Reason
    SolverIteration = 1
End Function
Le ShowRef argument est facultatif. Vous pouvez l'omettre, dans ce cas, la boucle à l'autre solveur de problème. Le message The formula you typed contains an error implique que quelque chose est mauvais, peut-être dans le modèle de configuration.
Si j'omets le ShowRef argument-je obtenir la boîte de dialogue disant "Max limite de temps atteinte, voulez-vous Arrêter/continuer". Pour éviter cela, j'ai utilisé ShowRef à l'appel de la macro 'SolverIteration", mais ensuite il me donne un msg en disant: "La formule que vous avez tapé contient une erreur".
Pourriez-vous le rapport de la ligne qui donne l'erreur? Pouvez-vous également de vérifier que toutes les formules sont entrés sans fautes de frappe? Parfois des questions comme le fait d'avoir des points-virgules à la place des virgules dans les formules, ou le nombre de niveaux d'imbrication, peut donner de telles erreurs.
Je vois. En théorie votre code devrait fonctionner, mais le message d'erreur que vous obtenez est très difficile à déboguer, car il peut signifier quelque chose. Ce post a exactement les mêmes symptômes, mais le véritable problème est complètement différent. Vous disposez de tous les événements dans votre code? Si des événements s'allument et tenter de changer le solveur de cellules, alors ce pourrait être un problème..
Merci beaucoup mec!!!! Le lien que vous m'avez donné résolu le problème. Mon classeur nom de l'espace a en elle, ainsi qu'il a été près de 20 caractères de long. Je chaged à une seule lettre, et maintenant le fonctionnement de la macro! Merci beaucoup mec!!! Cela a été de caler mon travail pour beaucoup de jours!

OriginalL'auteur Eyan Noronha | 2014-09-02