Tester valeur avec condition VBA

Bonjour,

J'ai un problème que je n'arrive pas à résoudre en VBA.

J'utilise une interpolation linéaire afin de trouver si une division est supérieure >=1 .

Je voudrais que la case en B2 change de valeur et que si la case en A6 devient supérieure alors par exemple une MessageBox apparaisse et dise ". Critère insatisfaisant" et que s'il ne trouve pas de valeur >=1 alors "critère satisfaisant"

J'ai essayé en faisant une boucle qui teste tous les 0.01 mais a part faire des boucles infinies ou des trucs qui me fon planter Excel , je n'y arrive pas. J'ai un peu de mal avec les boucles. Il y a peut être une meilleur solution.

les valeurs en A4 et C4 peuvent varier sinon cela n'aurait aucun intérêt.

Je voudrais vraiment réussir à le faire en VBA et non avec le solveur ou valeur cible car par la suite je me sers de cette valeur dans un projet plus complet.

Cordialement,

Bob

Bonjour,

si j'ai bien compris ce n'est pas trop dur.
Tu as dû sauter qq bases...
Essaie avec ça

Private Sub CommandButton1_Click()
    Dim i As Single, deb As Single, fin As Single, msg As String
    msg = "Critère satifaisant"
    deb = [A2].Value: fin = [C2].Value
    For i = deb To fin Step 0.01
        [B2] = i
        If [A6] >= 1 Then msg = "Critère insatisfaisant pour Xi=" & i: Exit For
    Next i
    MsgBox msg
End Sub

eric

PS : plutôt qu'un bouton et un msgbox, je verrai mieux le résultat dans une cellule, et que ça se recalcule en auto sur changement d'un des paramètres.
Mais tout dépend de la suite que tu évoques et qu'on ne connait pas

Bonjour,

Oui ce n'est pas compliqué, mais les boucles j'ai vraiment du mal, des fois je fais des codes super-longs alors qu'avec une boucle cela prendrait cinq lignes....

Merci en tout cas pour ton aide cela devrait suffire pour que je continue d'avancer et avec un exemple concret je vais peut-être mieux comprendre.

Cordialement,

Bob

Re,

Désoler mais je pense que ce que vais demander encore quelque chose de facile, mais je n'y arrive vraiment pas, a la place d'avoir une condition avec >= 1, comment je fais pour récupérer la plus grande valeur du test de 0 à 1?

Cordialement,

Bob

Re,

développe car je ne sais pas ce qu'est le test de 0 à 1.
Ce qui doit remplacer >=1 doit être connu au départ.
Soit complet et précis car je suis absent demain, et si tu veux la réponse du 1er coup...
eric

Bonjour,

Non rien de presser, en gros le "test" se fait entre la valeur de X1 et X2, donc Xi peut varier entre c'est deux valeurs ici 0 et 1, au lieu de mettre une condition qui arrête la boucle, si cela dépasse 1. je voudrais que la boucle continue jusqu'à la fin et me donne la valeur max pour Xi compris entre 0 et 1.

Je joint mon fichier, dans le cas la valeur max est ici a Xi = 0.5 on a 1.077 je voudrais récupérer ce 1.077.

Cordialement,
Bob

Bonjour,

Ah oui, ça n'a plus grand chose à voir avec le début, c'est pour ça que j'étais un peu perdu.
ca je pense :

Private Sub CommandButton1_Click()
    Dim i As Single, deb As Double, fin As Double, maxi As Double, XiMax As Double
    deb = [A2].Value: fin = [C2].Value
    Application.ScreenUpdating = False
    For i = deb To fin Step 0.01
        [B2] = i
        If [A6] > maxi Then maxi = [A6]: XiMax = i
    Next i
    [B2] = Round(XiMax, 6)
    Application.ScreenUpdating = True
End Sub

eric

Bonjour

Parfait !

Merci beaucoup, je comprend pas tous le code mais je vais essayé de changer des trucs pour comprendre.

Cordialement,

Bob

Rechercher des sujets similaires à "tester valeur condition vba"