Formule conditionelle avec 3 conditions

Fab117

XLDnaute Impliqué
Hello,

Pour un tableau, je cherche à mettre une formule différente selon certaines conditions.

Par exemple, dans la cellule J3, je souhaiterais que la formule fasse:
Si I3 < 0 alors J3 = 1
Si I3 > G3 alors J3 = 0
Si G3 = 0 alors
si $B$1 < F3 alors J3 = 0
si $B$1 >= F3 alors J3 = 1
Autrement J3 = =1-(I3/G3)

comme je ne suis pas sûr que ce soit très parlant, je joins un fichier exemple.

Merci d'avance.

Fab
 

Pièces jointes

  • Exemple2.jpg
    Exemple2.jpg
    38.9 KB · Affichages: 33
  • Exemple2.jpg
    Exemple2.jpg
    38.9 KB · Affichages: 31

Fab117

XLDnaute Impliqué
Re : Formule conditionelle avec 3 conditions

Salut,
Il s'agit effectivement d'une erreur, je n'ai pas uploadé le bon fichier.
J'ai ouvert une autre doscussion, car il s'agit d'une toute autre question.
A la fin c'est vrai que ce sera aussi pour exprimer l'avancement de mes projets, mais le problème est au niveau d'une formule de calcul et non sur un graphique.

Excellent week-end.

Fab
 

Pièces jointes

  • Exemple2.xlsx
    22.3 KB · Affichages: 30
  • Exemple2.xlsx
    22.3 KB · Affichages: 35

Dranreb

XLDnaute Barbatruc
Re : Formule conditionelle avec 3 conditions

Bonsoir.
Seulement après avoir vu de quoi il s'agissait plutôt que vos explications, je dirais En J3 :
Code:
=MIN(MAX($B$1;$E3);$F3+1)-$E3)/($F3-$E3+1)
Ou bien :
Code:
=(MIN(MAX($B$1+1;$E3);$F3+1)-$E3)/($F3-$E3+1)
Tout dépend si le moment du jour considéré est celui où on commence ou on termine de travailler. Ne pas oublier, dans le même ordre d'idée, que si le jour de fin est le même que celui de début, il compte pour 1 jour, pas 0, et plus généralement il faut toujours ajouter 1 à la différence Fin-Début pour avoir le nombre de jours couverts.

Remarquez, on peut faire un peu plus court, en J3 :
Code:
=MIN(MAX(($B$1-$E3+1)/($F3-$E3+1);0);1)
 
Dernière édition:

Fab117

XLDnaute Impliqué
Re : Formule conditionelle avec 3 conditions

Hello,
Comme écris, la formule fonctionne parfaitement en "direct".
Est-il possible de l'utiliser en VBA?
Je souhaiterais que à partir d'une date donnée dans une variable (DateDeReference) il fasse le calcul ci dessus et mette le résultat dans la variable ProgressionTheorique
Quelque chose comme:
ProgressionTheorique =MIN(MAX((DateReference-Range("E" & i)+1)/(Range("F" & i)-Range("E" & i)+1);0);1)

Est-ce que tu saurais comment faire ?

Bon après-midi

Fab
 

Dranreb

XLDnaute Barbatruc
Re : Formule conditionelle avec 3 conditions

Bonsoir.
VB:
ProgressionTheorique = worksheetfunction.MIN(worksheetfunction.MAX((DateReference-cells(i,"E").value+1)/(cells(i,"F").value-cells(i, "E").value+1),0),1)
Ou si on a pris soin de charger E:F dans un tableau en mémoire pour une bien meilleure performance :
VB:
TS(L, 1) = WorksheetFunction.Min(WorksheetFunction.Max((DateReference - TE(L, 1) + 1) / (TE(L, 2) - TE(L, 1) + 1), 0), 1)
 
Dernière édition:

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 173
dernier inscrit
Cerba95