Trouver une valeur cible en respectant plusieurs conditions

Bonjour la communauté ;

Pourriez-vous, SVP, m’aider à résoudre le petit problème suivant.

Je cherche un code macro pour définir la valeur d’une cellule (valeur cible) de sorte à satisfaire plusieurs conditions. Je m’explique : si la colonne de ma valeur cible est C, et les colonnes de mes conditions sont H, J et L, comment trouver la valeur de A qui satisfait les 6 conditions sachant que cette valeur intervient dans le calcul des conditions.

Je vous transmets un petit fichier pour mieux expliquer ma requête (la condition à satisfaire est "Oui").

Bonjour, voici un code qui fera l'affaire:

Sub test()
Dim ligDep As Integer, ligFin As Integer, plafond As Integer
Dim pas As Double, valDep As Double

ligDep = 10
ligFin = 28
plafond = 100
pas = 0.01
valDep = 0.01

Application.ScreenUpdating = False

For lig = ligDep To ligFin
    Range("C" & lig) = valDep

    While (Range("H" & lig) <> "Oui" Or Range("J" & lig) <> "Oui" Or Range("L" & lig) <> "Oui") And Range("C" & lig) <= plafond
        Range("C" & lig) = Range("C" & lig) + pas
    Wend
Next lig
End Sub

Il fait varier le contenu de la colonne C pour chaque ligne jusqu'à ce que les colonnes H, J et L contiennent "Oui", on obtient donc la plus petite valeur nécessaire.

Avec comme contraintes: une valeur minimale de 0.01, une précision de 0.01, une valeur maxi de 100 (pour ne pas tourner à l'infini).

Merci infiniment.

ça marche :) :)

Petite question SVP,

pour la fonction WHILE les trois conditions sont liées par or et non par and, j'ai essayé avec and le code me donne 0.01, donc c'est vraiment or, mais j'arrive pas à comprendre pourquoi ca marche sachant que j'ai besoins que mes trois conditions soient satisfaites donc c'est plutôt and…. j'arrive pas à comprendre le comment ???

Bonjour,

il faut lire cette ligne:

While (Range("H" & lig) <> "Oui" Or Range("J" & lig) <> "Oui" Or Range("L" & lig) <> "Oui") And Range("C" & lig) <= plafond

de la façon suivante:

Tant que colonne H on a pas "Oui", ou que colonne J on a pas "Oui", ou que colonne L on a pas "Oui", et qu'on ne dépasse pas le plafond, alors on continue.

La raison pour laquelle on a des ou à cet endroit, c'est que tant qu'un des critères n'est pas rempli, ça renverra VRAI, et pour que la boucle continue il faut VRAI. C'est un peu l'équivalent de se poser la question "Est-ce que je continue à boucler?" et du coup j'ai décris les conditions qui font que ça continue, à savoir qu'on a pas "Oui" partout et qu'on a pas dépassé le plafond.

Merci beaucoup :) :)

Rechercher des sujets similaires à "trouver valeur cible respectant conditions"