Recherche + interpolation

T

titou

Guest
Bonjour,

je souhaite à partir d'un tableau de valeur, et en fonction d'une donnée, trouver deux valeurs (K1 et Omega1), et si la valeur donnée se trouve entre deux valeurs du tableau pouvoir extrapoler la valeur de Omega1.

Je ne comprends pas pourquoi sur mon fichier la fonction rechercheV renvoie tjs la dernière valeur du tableau

Merci d'avance pour votre aide

Titou
 

Pièces jointes

  • recherche.zip
    27.1 KB · Affichages: 99
  • recherche.zip
    27.1 KB · Affichages: 109
  • recherche.zip
    27.1 KB · Affichages: 115
J

jp

Guest
Bonjour titou

je n'ai pas regardé dans le détail mais je pense que des tes valeurs doivent être triées dns l'ordre crossant, ce qui semble difficilie vu qu'il y a des cellules fusionnées (c'est sans doute joli dans certainnes présentations mais cela s'arrête là, donc pas de fusion de cellules si possible)

à plus

jp
 
J

jp

Guest
Re titou,

je viens de regrder à nouveau (entre le téléphone et autres embarras ce n'est pacile d'être quelquefois dispo.)

Dans mon message je disais qu'il fallait que les cellules soit triées dans l'ordre croissant, et le fait je n'ai pas eu temps de faire la manip.
En effet cette fonction travaille entre une plancher et un plafond.
Elle prend la première valeur et monte (en descendant la colonne) elle ne s'arrêtte que lorsqu'elle se cogne la tête.
Tu selectionne toutes ta plage en dessous des titres (que les valeurs) et dans DONNEES -> TRIER
première colonne -> croissant et ça marche

bon courage

jp
 
J

Jean-Marie

Guest
Bonjour, Titou Jp

Il y a un 4ème argument pour la fonction rechercheV(), voici ce que tu aurait peu trouvé dans l'aide en ligne d'Ecxel :

valeur_proche représente une valeur logique indiquant si vous souhaitez que la fonction RECHERCHEV recherche une valeur exacte ou voisine de celle que vous avez spécifiée. Si cet argument est VRAI ou omis, une donnée proche est renvoyée. En d'autres termes, si aucune valeur exacte n'est trouvée, la valeur immédiatement inférieure à valeur_cherchée est renvoyée. Si valeur_proche est FAUX, la fonction RECHERCHEV renvoie exactement la valeur recherchée. Si aucune valeur ne correspond, la valeur d'erreur #N/A est renvoyée.

J'espère avoir répondu à ta question

Bonne journée

@+Jean-Marie
 
T

titou

Guest
Merci
g essayé cela fonctionne bien.

Une petite question encore, sais tu comment faire pour extrapoler une valeur, car lorsque je rentre des valeurs ce n'est pas toujours = à une valeur de la base de donnée, alors il faut extrapoler entre les deux valeurs...

Je te remercie d'avance
 
J

Jean-Marie

Guest
Re...

Titou tu peux être plus clair, STP

Si tu veux, je suis sur le chat, ce sera plus facile pour moi et pour toi. Mais il faut devenir membre (ton speudo sera valable 6 mois), pour l'instant c'est gratuit. Tu fait comme tu veux, ce n'est pas obligé.

Bonne journée, et peut-être à tout de suite. lol

@+Jean-Marie
 
T

titou

Guest
MErci JP et Jean Marie

je souhaite en fait extrapoler des valeurs cad que si par exemple la base de donnée contient la valeur 2 et la valeur 3, et que je lui rentre la valeur 2.5, il faudrait qu'il me trouve la valeur entre, mais pas en prenant la valeur la plus proche...

merci d'avance

Titou

PS je me suis inscris pour etre membre, cependant une erreur c produite lors du telechargement de la machine java...
 
S

Sylvain

Guest
bonjour,


une solution avec les fonctions index et équiv,
interpolation linéaire entre 2 points.

A+
 

Pièces jointes

  • recherche.zip
    29.7 KB · Affichages: 271
  • recherche.zip
    29.7 KB · Affichages: 319
  • recherche.zip
    29.7 KB · Affichages: 332
J

jp

Guest
Re titou,

As-tu solutionné ton probléme, notamment avec Jean-Marie (je n'y avais pas encore accés à cette heure là), car j'ai essayé les formules de Sylvain et les résultats sont incohérents,

J'ai bien essayé avec une formulation d'interpolation linéaire (en direct dans excel) mais selon l'endroit où l'on se positionne, ce n'est pas cohérent non plus, du moins pas juste.

Comme son nom l'indique, il convient que les intervalles de la table (ici colonne b) soit eux-mêmes linéaires, ce qui n'est pas le cas. De toutes façon, ce n'est réalisable que par VBA car il faut récupérer l'emplacement de la cellule en cas de réponse approchée et récuperer les valeurs directement au dessus et en dessous avant d'appliquer le formulaire.

Je cherche encore un peu d'autres solutions éventuelles mais si ton projet est bouclé, j'arrête.

Merci de ta réponse.

Bonne soirée

jp
 
T

titou

Guest
Bonsoir JP, Jean Marie, Sylvain,

g regardé la réponse de jean marie, et c'est vrai que le trie change bcp pour la fonction recherche.
g également regardé la fonction index et equi, mais je ne comprends pas trop comment cela fonctionne...

merci à tous

Titou
 
J

Jean-Marie

Guest
Re...

Voici un lien Lien supprimé, sur l'utilisation des possibilités de la fonction INDEX(), la fonction EQUIV() fait une recherche de la valeur dans la plage, puis retourne un numéro utile pour le 2ème ou 3ème argument de la fonction INDEX()

Bonne soirée

@+Jean-Marie
 
J

Jean-Marie

Guest
Bonjour, Titou

Dans le fichier que tu as posté en premier, il y a des lignes vides (29,30,41,42,47,48,57,58,65,66,5,76,84,85,87,93,94,102,103,172), qui vont te poser un problème lors de l'interpolation.

Dans le fichier inter.xls, cette formule =(INDEX(B$3:B$7;EQUIV(F7;A$3:A$7;1);1)+INDEX(B$3:B$7;EQUIV(F7;A$3:A$7;1)+1;1))/2, calcule la valeur interpolé à 3,5.

Si tu change la valeur de la cellule F7 pour 5,5, tu verras que la fonction renvoie une erreur.

Adapte les plages en fonction de ton tableau

Bonne journée

@+Jean-Marie
 

Discussions similaires

Statistiques des forums

Discussions
314 120
Messages
2 106 095
Membres
109 488
dernier inscrit
Abdel44