Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Trouver la valeur la plus proche

2 views
Skip to first unread message

Starwing

unread,
Apr 22, 2004, 10:52:54 AM4/22/04
to
Bonjour à tous,

Merci de vous pencher encore sur un de mes nombreux
problèmes.
Aujourd'hui, je recherche une formule qui me permettrait
de trouver la valeur qui est égale ou supérieure à une
autre valeur dans une plage de donnée.
Exemple:

En A1: 36 000 $ ' La valeur a rechercher

En B2: 25 000 $ 'Les échelons
En C2: 29 000 $
En D2: 33 000 $
En E2: 37 000 $
En F2: 41 000 $

J'aimerais obtenir 37 000 $

Merci d'avance pour tout,

Starwing

gaston

unread,
Apr 22, 2004, 11:08:48 AM4/22/04
to
tu trouveras à cette adresse plein de réponses:
http://www.google.fr/groups?as_epq=valeur%20proche&ie=UTF-
8&oe=UTF-8&as_ugroup=microsoft.public.fr.excel&lr=&hl=fr

plus généralement, tu peux chercher ici:
http://www.google.fr/advanced_group_search?
q=group:microsoft.public.fr.excel

j'espère t'avoir été utile
>-----Message d'origine-----

>.
>

Paul V.

unread,
Apr 22, 2004, 11:19:40 AM4/22/04
to
Bonjour

La formule suivante répond à ton problème précis (sous certaines conditions)
:

=RECHERCHEH(A1+4000;B2:F2;1;VRAI)

Pour quelque chose de plus général et de plus sûr, faudrait fignoler
notamment les limites et la garantie que rien ne se déplace


--
HTH

Paul V.

Michel Pierron

unread,
Apr 22, 2004, 11:32:38 AM4/22/04
to
Bonjour Paul;
Alors là, "A1+4000", c'est sans doute çe que l'on appelle un à peu près !
;-) MP

"Paul V." <pav...@skynet.be> a écrit dans le message de
news:%23%23w%2340HKE...@TK2MSFTNGP12.phx.gbl...

Paul V.

unread,
Apr 22, 2004, 11:36:15 AM4/22/04
to
Bonjour Michel,

Pas du tout ;-)

Le pas de la plage de contrôle est de 4000.
Notre ami veut la valeur supérieure alors que Rechercheh ou v donne la
valeur inférieure.
Donc j'augmente la valeur cherchée de 4000 ou plus exactement
3999,9999999999999999999999999999999999999999999999999
CGFD ;-) again

Paul V.

isabelle

unread,
Apr 22, 2004, 11:56:24 AM4/22/04
to
bonjour Starwing,

autre solution qui implique que la plage soit trier en ordre décroissnt.

=INDEX(B2:F2;EQUIV(A1;B2:F2;-1))

isabelle

Starwing a écrit :

ru-th

unread,
Apr 22, 2004, 12:20:43 PM4/22/04
to
Salut

sans table
=25000+(ARRONDI((C1-25000)/4000;0)*4000)

--
a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo (à l'essai)

"Starwing" <ubi...@hotmail.com> a écrit dans le message de
news:2b8f01c42879$7e0cd2e0$a601...@phx.gbl...

AV

unread,
Apr 22, 2004, 12:32:20 PM4/22/04
to
Valeur la plus proche de A1 dans la plage B2:F2 (plage non triée)
Matricielle
=INDEX(B2:F2;EQUIV(MIN(ABS(A1-B2:F2));ABS(A1-B2:F2);0))

AV


Starwing

unread,
Apr 22, 2004, 1:06:36 PM4/22/04
to
Merci pour vos réponses, mais cela ne m'aide pas..., j'ai
mal formulé mon besoin...
Je recommence:

En A1: 36 000 $ ' La valeur égale ou supérieure a
rechercher
En A2: 2 'La classe de l'employé

Les classes Les échelons
En B1: 1 En C1: 25 100 $
En D1: 29 100 $
En E1: 33 100 $
En F1: 37 100 $
En G1: 41 100 $

En B2: 2 En C2: 29 200 $
En D2: 33 200 $
En E2: 37 200 $
En F2: 41 200 $
En G2: 43 200 $
etc...
Il ya 7 classes en tout

J'aimerais obtenir 37 100 $ quand A2 = 1;
et 37 200 $ quand A2 = 2 etc...

Merci encore pour vos réponses,

Starwing

>-----Message d'origine-----

>.
>

RaMa

unread,
Apr 22, 2004, 4:35:55 PM4/22/04
to

Bonsoir Starwing
Je te propose cette fonction que j'avais déja mis sur ce forum il y a
longtemps

'R.Marceau MPFE
'*************************Mode
D'emploi***************************************************************
FONCTION PROCHE
BUT: recherche d 'une valeur dans un tableau selon le
niveau de proximité souhaité . Le résultat est la valeur trouvée ou son
adresse.
SYNTAXE =PROCHE(VAL;CHAMP;PROXIMITE;MODE)
VAL: Valeur recherchée
CHAMP: Tableau des valeurs qui seront comparées VAL
Le champ peut être:
-une constante de type adresse;
-une cellule pointant vers une autre cellule contenant une adresse "
constante" de type adresse,
-une formule ou une indirection donnant une adresse,
-un champ nomm .
PROXIMITE: nature du résultat attendu
peut prendre les valeurs suivantes:
-1 Inférieur immédiat
1 Supérieur immédiat
2 écart le plus faible
3 écart le plus faible mais # valeur
4 alpha>=
5 alpha<=
0 égalité stricte
MODE: 0 c'est la valeur trouvée qui est retournée.
Si ce paramètre est omis 0 est implicite.
MODE:1 ou toutes autres valeurs: c'est l'adresse
de la valeur trouvée qui est retournée.
'***************************************************************************
**************************
Option Explicit
Public Function PROCHE(VAL, ch, prox, Optional adr As Variant) As Variant
Dim z, w_col As Variant
Dim loc As Variant
Dim yaloc As Integer
Dim y As Variant
Dim ecart As Variant
Dim tval As Variant
Dim tch As Range
Dim zz As Variant
Application.Volatile
z = Null
loc = Null
If IsMissing(adr) Then
yaloc = 0
Else
If (IsNumeric(adr) And adr > 0) Or (Not IsNumeric(adr) And adr > "0") Then
yaloc = 1
Else
yaloc = 0
End If
End If
tval = VAL
On Error GoTo c_range
Set tch = Range(ch)
GoTo swit
c_range:
Set tch = ch
On Error GoTo 0
swit:
Select Case prox
Case 1
For Each y In tch
If y > tval And (y <= z Or IsNull(z)) Then
loc = y.Address
z = y
End If
Next
Case 0 'égalité stricte
For Each y In tch
If StrConv(y, 1) Like StrConv(tval, 1) = True Then
If IsNull(loc) Then
loc = y.Address
z = StrConv(y, 1)
w_col = y.Column
Else
If y.Column < w_col Then 'c'est l'adresse de la colonne la
plus à gauche
loc = y.Address 'qui est retournée
z = StrConv(y, 1)
End If
End If
End If
Next
Case -1 'inférieur immédiat
For Each y In tch
If y < tval And (y >= z Or IsNull(z)) Then
loc = y.Address
z = y
End If
Next
Case 4 'supérieur ou égal (chaîne)
For Each y In tch
If StrConv(y, 1) >= StrConv(tval, 1) And (StrConv(y, 1) <= z Or
IsNull(z)) Then
loc = y.Address
z = StrConv(y, 1)
End If
Next
Case 5 'inférieur ou égal (chaîne)
For Each y In tch
If StrConv(y, 1) <= StrConv(tval, 1) And (StrConv(y, 1) >= z Or
IsNull(z)) Then
loc = y.Address
z = StrConv(y, 1)
End If
Next
Case 2 'écart le plus faible
zz = Null
For Each y In tch
If IsNumeric(y) Then
ecart = Abs(y - tval)
If ecart < zz Or IsNull(zz) Then
zz = ecart
loc = y.Address
z = y
End If
End If
Next
Case 3 'écart le plus faible # valeur
zz = Null
For Each y In tch
If IsNumeric(y) Then
ecart = Abs(y - tval)
If y <> tval And (ecart < zz Or IsNull(zz)) Then
zz = ecart
loc = y.Address
z = y
End If
End If
Next
End Select
If yaloc = 1 Then
If IsNumeric(loc) Or IsNull(loc) Or loc = "0" Then
PROCHE = CVErr(xlErrNA)
Else
PROCHE = loc
End If
Else
If IsNumeric(loc) Or IsNull(loc) Or loc = "0" Then
PROCHE = CVErr(xlErrNA)
Else
PROCHE = z
End If
End If
End Function


Salutations
RaMa


"Starwing" <ubi...@hotmail.com> a écrit dans le message de
news:2b8f01c42879$7e0cd2e0$a601...@phx.gbl...

0 new messages