Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Valeur dans intervalle

7 réponses
Avatar
Pounet95
Bonjour à toutes et tous,
XL2000 sous XP ou Windows2000

Avant de me lancer dans l'écriture d'une fonction me permettant de
déterminer si un nombre est compris entre telle et telle valeur ( min et max
au hasard ! ) avec tout ce que cela comporte comme soucis de mises à
disposition pour les utilisateurs , pouvez-vous me dire s'il n'existe pas
déjà une fonction de base qui me permettrait de me 'reposer'.

Le but est de déterminer à partir de la plage de valeurs (min et max ) à
laquelle appartient une valeur, le 'code' de cette valeur.
Ex :
si 0 < valeur <= 100 alors code = A
si 101< valeur <= 200 alors code = B,
etc
les valeurs min, max et code étant stockées dans un tableau

Merci de vos suggestions.
Pounet95

PS : ai eu des pb pour visiter Excelabo ce matin ( machines et sites
différents ) ????

7 réponses

Avatar
Tatanka
Salut Pounet,

Une suggestion :
Nomme ta plage contenant tes min, max et code
« table », colle cette Function dans un module standard
et entre la formule =codage(n) dans une cellule.
n étant l'adresse de la cellule contenant ton nombre.

Function codage(n)
Set t = [table]
For i = 1 To t.Rows.Count
If (n >= t(i, 1) And n <= t(i, 2)) Then
c = t(i, 3)
Exit For
End If
Next i
codage = c
End Function

Serge


"Pounet95" a écrit dans le message de news: 47441515$0$27381$
Bonjour à toutes et tous,
XL2000 sous XP ou Windows2000

Avant de me lancer dans l'écriture d'une fonction me permettant de déterminer si un nombre est compris entre telle et telle valeur
( min et max au hasard ! ) avec tout ce que cela comporte comme soucis de mises à disposition pour les utilisateurs , pouvez-vous
me dire s'il n'existe pas déjà une fonction de base qui me permettrait de me 'reposer'.

Le but est de déterminer à partir de la plage de valeurs (min et max ) à laquelle appartient une valeur, le 'code' de cette
valeur.
Ex :
si 0 < valeur <= 100 alors code = A
si 101< valeur <= 200 alors code = B,
etc
les valeurs min, max et code étant stockées dans un tableau

Merci de vos suggestions.
Pounet95

PS : ai eu des pb pour visiter Excelabo ce matin ( machines et sites différents ) ????



Avatar
Corto
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Bonjour Pounet95,<br>
Tu peux cr&eacute;er un tableau comme suit et appliquer les noms aux colonnes<br>
<table x:str="" style="border-collapse: collapse; width: 201pt;"
border="0" cellpadding="0" cellspacing="0" width="267">
<col style="width: 67pt;" span="3" width="89"> <tbody>
<tr style="height: 12.75pt;" height="17">
<td class="xl24" style="height: 12.75pt; width: 67pt;" height="17"
width="89">Min</td>
<td class="xl24" style="width: 67pt;" width="89">Max</td>
<td class="xl24" style="width: 67pt;" width="89">Code</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td style="height: 12.75pt;" x:num="" align="right" height="17"><a
name="RANGE!A2:A11">1</a></td>
<td x:num="" align="right"><a name="RANGE!B2:B11">100</a></td>
<td><a name="RANGE!C2:C11">A</a></td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td style="height: 12.75pt;" x:num="" align="right" height="17">101</td>
<td x:num="" align="right">200</td>
<td>B</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td style="height: 12.75pt;" x:num="" x:fmla="³+1" align="right"
height="17">201</td>
<td x:num="" x:fmla="¤+B3-A3" align="right">300</td>
<td>C</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td style="height: 12.75pt;" x:num="" x:fmla="´+1" align="right"
height="17">301</td>
<td x:num="" x:fmla="¥+B4-A4" align="right">400</td>
<td>D</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td style="height: 12.75pt;" x:num="" x:fmla="µ+1" align="right"
height="17">401</td>
<td x:num="" x:fmla="¦+B5-A5" align="right">500</td>
<td>E</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td style="height: 12.75pt;" x:num="" x:fmla="¶+1" align="right"
height="17">501</td>
<td x:num="" x:fmla="§+B6-A6" align="right">600</td>
<td>F</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td style="height: 12.75pt;" x:num="" x:fmla="·+1" align="right"
height="17">601</td>
<td x:num="" x:fmla="¨+B7-A7" align="right">700</td>
<td>G</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td style="height: 12.75pt;" x:num="" x:fmla="¸+1" align="right"
height="17">701</td>
<td x:num="" x:fmla="©+B8-A8" align="right">800</td>
<td>H</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td style="height: 12.75pt;" x:num="" x:fmla="¹+1" align="right"
height="17">801</td>
<td x:num="" x:fmla="¡0+B9-A9" align="right">900</td>
<td>I</td>
</tr>
<tr style="height: 12.75pt;" height="17">
<td style="height: 12.75pt;" x:num="" x:fmla="±0+1"
align="right" height="17">901</td>
<td x:num="" x:fmla="¡1+B10-A10" align="right">1000</td>
<td>J</td>
</tr>
</tbody>
</table>
<br>
en nommant la cellule de donn&eacute;e VAL la formule devient alors :<br>
=INDEX(CODE;SOMMEPROD((MIN&lt;=VAL)*(MAX&gt;=VAL)*LIGNE(CODE))-1)<br>
<br>
Corto<br>
<br>
Pounet95 a &eacute;crit&nbsp;:
<blockquote cite="mid:47441515$0$27381$"
type="cite">
<pre wrap="">Bonjour &agrave; toutes et tous,
XL2000 sous XP ou Windows2000

Avant de me lancer dans l'&eacute;criture d'une fonction me permettant de
d&eacute;terminer si un nombre est compris entre telle et telle valeur ( min et max
au hasard ! ) avec tout ce que cela comporte comme soucis de mises &agrave;
disposition pour les utilisateurs , pouvez-vous me dire s'il n'existe pas
d&eacute;j&agrave; une fonction de base qui me permettrait de me 'reposer'.

Le but est de d&eacute;terminer &agrave; partir de la plage de valeurs (min et max ) &agrave;
laquelle appartient une valeur, le 'code' de cette valeur.
Ex :
si 0 &lt; valeur &lt;= 100 alors code = A
si 101&lt; valeur &lt;= 200 alors code = B,
etc
les valeurs min, max et code &eacute;tant stock&eacute;es dans un tableau

Merci de vos suggestions.
Pounet95

PS : ai eu des pb pour visiter Excelabo ce matin ( machines et sites
diff&eacute;rents ) ????


</pre>
</blockquote>
</body>
</html>
Avatar
Tatanka
Salut Pounet,

Je n'avais pas remarqué
0 et <= 100
101 et <= 200
...


*
Mais alors si n = 0
ou
100 < n <1
200 < n < 1
...
ou
n est en dehors du tableau,
que veux-tu obtenir comme résultat ?
*
Pour ces cas-là, cette fonction personnalisée renvoie 0 :

Function codage(n)
Set t = [Table]
For i = 1 To t.Rows.Count
If (n > t(i, 1) And n <= t(i, 2)) Then
c = t(i, 3)
Exit For
End If
Next i
codage = c
End Function



"Pounet95" a écrit dans le message de news: 47441515$0$27381$
Bonjour à toutes et tous,
XL2000 sous XP ou Windows2000

Avant de me lancer dans l'écriture d'une fonction me permettant de déterminer si un nombre est compris entre telle et telle valeur
( min et max au hasard ! ) avec tout ce que cela comporte comme soucis de mises à disposition pour les utilisateurs , pouvez-vous
me dire s'il n'existe pas déjà une fonction de base qui me permettrait de me 'reposer'.

Le but est de déterminer à partir de la plage de valeurs (min et max ) à laquelle appartient une valeur, le 'code' de cette
valeur.
Ex :
si 0 < valeur <= 100 alors code = A
si 101< valeur <= 200 alors code = B,
etc
les valeurs min, max et code étant stockées dans un tableau

Merci de vos suggestions.
Pounet95

PS : ai eu des pb pour visiter Excelabo ce matin ( machines et sites différents ) ????



Avatar
Pounet95
MERCI Tatanka, Corto
Je mets tout cela en oeuvre illico presto

Nota : ce forum est quand même super, non ?

"Pounet95" a écrit dans le message de news:
47441515$0$27381$
Bonjour à toutes et tous,
XL2000 sous XP ou Windows2000

Avant de me lancer dans l'écriture d'une fonction me permettant de
déterminer si un nombre est compris entre telle et telle valeur ( min et
max au hasard ! ) avec tout ce que cela comporte comme soucis de mises à
disposition pour les utilisateurs , pouvez-vous me dire s'il n'existe pas
déjà une fonction de base qui me permettrait de me 'reposer'.

Le but est de déterminer à partir de la plage de valeurs (min et max ) à
laquelle appartient une valeur, le 'code' de cette valeur.
Ex :
si 0 < valeur <= 100 alors code = A
si 101< valeur <= 200 alors code = B,
etc
les valeurs min, max et code étant stockées dans un tableau

Merci de vos suggestions.
Pounet95

PS : ai eu des pb pour visiter Excelabo ce matin ( machines et sites
différents ) ????



Avatar
Pounet95
Merci du complément.Serge,
Je mets cette fonction 'au chaud' avec toutes celles 'piquées' sur ce forum
au gré des demandes.
Bonne soirée ? après-midi ? car ca = canada ?
Pounet95

"Tatanka" a écrit dans le message de news:

Salut Pounet,

Je n'avais pas remarqué
0 et <= 100
101 et <= 200
...


*
Mais alors si n = 0
ou
100 < n <1
200 < n < 1
...
ou
n est en dehors du tableau,
que veux-tu obtenir comme résultat ?
*
Pour ces cas-là, cette fonction personnalisée renvoie 0 :

Function codage(n)
Set t = [Table]
For i = 1 To t.Rows.Count
If (n > t(i, 1) And n <= t(i, 2)) Then
c = t(i, 3)
Exit For
End If
Next i
codage = c
End Function



"Pounet95" a écrit dans le message de news:
47441515$0$27381$
Bonjour à toutes et tous,
XL2000 sous XP ou Windows2000

Avant de me lancer dans l'écriture d'une fonction me permettant de
déterminer si un nombre est compris entre telle et telle valeur ( min et
max au hasard ! ) avec tout ce que cela comporte comme soucis de mises à
disposition pour les utilisateurs , pouvez-vous me dire s'il n'existe pas
déjà une fonction de base qui me permettrait de me 'reposer'.

Le but est de déterminer à partir de la plage de valeurs (min et max ) à
laquelle appartient une valeur, le 'code' de cette valeur.
Ex :
si 0 < valeur <= 100 alors code = A
si 101< valeur <= 200 alors code = B,
etc
les valeurs min, max et code étant stockées dans un tableau

Merci de vos suggestions.
Pounet95

PS : ai eu des pb pour visiter Excelabo ce matin ( machines et sites
différents ) ????







Avatar
Tatanka
M'est avis que la formule de Corto fonctionne
si le tableau (incluant les titres) commence sur la
première ligne de la feuille de calcul.
Si ton tableau est n'importe où sur la feuille, essaie
cette formule :
=INDEX(code;EQUIV(1;(val>=min)*(val<=max);0))
(valider par Ctrl+Maj+Entrée)

Serge



"Pounet95" a écrit dans le message de news: 4744356b$0$25948$
MERCI Tatanka, Corto
Je mets tout cela en oeuvre illico presto

Nota : ce forum est quand même super, non ?

"Pounet95" a écrit dans le message de news: 47441515$0$27381$
Bonjour à toutes et tous,
XL2000 sous XP ou Windows2000

Avant de me lancer dans l'écriture d'une fonction me permettant de déterminer si un nombre est compris entre telle et telle
valeur ( min et max au hasard ! ) avec tout ce que cela comporte comme soucis de mises à disposition pour les utilisateurs ,
pouvez-vous me dire s'il n'existe pas déjà une fonction de base qui me permettrait de me 'reposer'.

Le but est de déterminer à partir de la plage de valeurs (min et max ) à laquelle appartient une valeur, le 'code' de cette
valeur.
Ex :
si 0 < valeur <= 100 alors code = A
si 101< valeur <= 200 alors code = B,
etc
les valeurs min, max et code étant stockées dans un tableau

Merci de vos suggestions.
Pounet95

PS : ai eu des pb pour visiter Excelabo ce matin ( machines et sites différents ) ????







Avatar
Pounet95
Re,
Oui ça fonctionne mais effectivement à condition de bien prendre en compte
où se trouve la 1ère ligne du tableau et l'inclure dans la formule de
calcul.
De même, par principe (ai-je tort ou raison ? ), j'évite de nommer des
plages de cellules avec un nom réservé( tel MAX, MIN )
Quant à ta formule, c'est celle ( ou du moins dans l'utilisation de INDEX et
EQUIV ) sur laquelle je butais depuis ce matin car plus habitué à utiliser
RECHERCHEV ....
Si ma mémoire est bonne, il y a eu de bons échanges 'mail' sur le sujet.
Quant à moi, j'en prends aussi bonne note.

Encore merci
Pounet95

"Tatanka" a écrit dans le message de news:

M'est avis que la formule de Corto fonctionne
si le tableau (incluant les titres) commence sur la
première ligne de la feuille de calcul.
Si ton tableau est n'importe où sur la feuille, essaie
cette formule :
=INDEX(code;EQUIV(1;(val>=min)*(val<=max);0))
(valider par Ctrl+Maj+Entrée)

Serge



"Pounet95" a écrit dans le message de news:
4744356b$0$25948$
MERCI Tatanka, Corto
Je mets tout cela en oeuvre illico presto

Nota : ce forum est quand même super, non ?

"Pounet95" a écrit dans le message de news:
47441515$0$27381$
Bonjour à toutes et tous,
XL2000 sous XP ou Windows2000

Avant de me lancer dans l'écriture d'une fonction me permettant de
déterminer si un nombre est compris entre telle et telle valeur ( min et
max au hasard ! ) avec tout ce que cela comporte comme soucis de mises à
disposition pour les utilisateurs , pouvez-vous me dire s'il n'existe
pas déjà une fonction de base qui me permettrait de me 'reposer'.

Le but est de déterminer à partir de la plage de valeurs (min et max ) à
laquelle appartient une valeur, le 'code' de cette valeur.
Ex :
si 0 < valeur <= 100 alors code = A
si 101< valeur <= 200 alors code = B,
etc
les valeurs min, max et code étant stockées dans un tableau

Merci de vos suggestions.
Pounet95

PS : ai eu des pb pour visiter Excelabo ce matin ( machines et sites
différents ) ????