Automatisation de valeur cible

Bonjour à tous,

Je pense que ce sujet a déjà été traité plusieurs fois, mais je nécessite votre aide car je ne comprend pas du tout comment fonctionne une macro. Pour info, je viens de découvrir cette option il y a une heure.

Pour un projet portant sur la synthèse du méthanol, des calculs thermochimiques sont à réalisés pour comprendre le fonctionnent de la réaction chimique permettant la fabrication de méthanol. Dans mon cas, je dois calculer l'avancement de la réaction à des températures et des pressions différentes.

Sur mon tableau ci-joint

, je possède des valeurs à atteindre (en rouge) qui sont définies pour chaque colonne.

les cellules à définir sont en vert clair et chacune possède leur propre formule en fonction de la pression (en orange).

à partir de la valeur cible, je peut donc déduire une cellule à modifier (en bleu) qui correspond à l'avancement de la réaction.

Avec 350 cellules à définir, je ne peux pas le réaliser à la main en sachant que je ne suis pas certain de ma formule créer.

Je demande donc votre aide pour pouvoir automatiser ces opérations de valeur cible qui me permettront d'obtenir efficacement l'avancement de ma réaction

Je vous remercie d'avance pour votre aide et je reste à votre disposition pour apporter des informations complémentaires.

Bonsoir,

une solution qui automatise la recherche d'une solution via l'option "valeur cible".

s'agissant d'un polynôme (degré 5 si je ne m'abuse), il y a en principe plusieurs solutions possibles, la macro n'en affiche qu'une quand elle en trouve une. La solution algébrique n'est pas piquée des vers, j'ai essayé mais j'ai abandonné après quelques pages.

J'ai oublié de préciser, la solution possible ne peut être strictement supérieur à 0 ou strictement inférieur à 1 (0<x<1). Cette condition est fixée par les calculs de thermochimie. Je pense donc qu'il ne doit exister qu'une seule solution qui remplit cette condition.

En tout cas, j'ai fini par utiliser le solveur de excel (plus rapide et plus précis) à la main.

Je vous remercie néanmoins pour l'aide apporté à mon sujet et je vous souhaite un bon week-end.

Ps: cependant, est-ce que j'indique le problème comme résolu ?

Bonjour,

voici l'automatisation avec le solveur (je ne dois pas avoir les mêmes paramètres que toi, car il y a beaucoup de solutions non trouvées.

si tu m'indiques les paramètres que tu as utilisés, je peux adapter le code.

Sub aargh()
    With Range("N7")
    Application.DisplayAlerts = False
        For i = 1 To 25
            For j = 1 To 14
                SolverReset
                .Cells(i + 30, j + 1) = 0.9
                SolverOk SetCell:=.Cells(i + 1, j + 1).Address, MaxMinVal:=3, ValueOf:=.Cells(1, j + 1).Value, ByChange:=.Cells(i + 30, j + 1).Address, Engine:=1, EngineDesc:="GRG Nonlinear"
                SolverAdd CellRef:=.Cells(i + 30, j + 1).Address, Relation:=1, FormulaText:="1"
                SolverAdd CellRef:=.Cells(i + 30, j + 1).Address, Relation:=3, FormulaText:="0"
                SolverSolve UserFinish:=True
            Next j
        Next i
    End With
    Application.DisplayAlerts = True
End Sub

J'ai essayé votre programme. Il ne fonctionne pas à partir de mon fichier et m'indique " Erreur de compilation : sub ou function non définie". Je ne comprend pas l'erreur car ce début de programme ressemble fortement à celui du premier.

J'ai cependant calculé directement les valeurs de l'avancement, qui sont les bonnes valeurs. voici ce fichier:

Bien que les valeurs sont calculés, ce type de programme peut vraiment avoir encore son utilité pour une autre réaction chimique ou d'autres valeurs de température et de pression.

bonjour,

Erreur de compilation : sub ou function non définie".

si tu as copié la macro dans un autre classeur, il manque probablement la référence au solver

pour y remédier :

ouvrir ton classeur

faire F11 -> active l'éditeur VBA

dans la barre des menus outils->références-> sélectionner solveur.

faire f11-> retour dans excel

sauver le classeur

la référence est associée à ce classeur et sera active à chaque utilisation.

Avec plus de précision, le programme permet d'obtenir des résultats cohérents avec ceux que j'ai calculé sans ce programme.

SolverReset

.Cells(i + 30, j + 1) = 0.9 à remplacer par:

SolverReset

.Cells(i + 30, j + 1) = 0.99999

Je te remercie pour toute l'aide apportée.

Le problème est pour moi résolu.

Rechercher des sujets similaires à "automatisation valeur cible"