quelques conseils sur une recherchev optimisée mais surtout trés tordue
1 réponse
tostaky
bonjour,
Je cherche à faire "une sorte de recherchev optimisée" où la valeur ramenée
par Excel est la plus proche de la valeur recherchée sans tenir compte de
la notion inférieur. or la fonction recherchv ne ramène que la plus proche
par en dessous.
Je m'explique
Soit la table matrice à 2 colones
------------------
épaisseur poids
10 5
15 8
17 9
18 11
------------------
l'épaisseur est la valeur recherchée et le le poids la valeur retournée
ex
Si je recherche la valeur 10, je veuyx 5
Si --------------------- 11, je veux 5 car 11 plus prés de 10 que de 15
Si je recherche ------- 14, je veux obtenir 8, car 14 plus prés de 15 que
de 10.
Je pensais faire ça en vba, le problème c'est que ma matrice contient pas
loin 10000 valeurs (lignes) et je dois appliquer la formule sur à peu prés
300 valeurs à rechercher, donc big problème sur le nombre d'itération, en
sachant que le bidule va recalculer assez souvent sur les 300 valerurs (si
le calcul pouvait durer moins de 2 min ce serait génial)
La recherche par dichotomie me parait tout à fait adapter mais j'arrive pas
à la mettre en oeuvre surtout que mon problème est un peu plus compliqué car
en réalité
la valeur recherchée est une valeur composée de 2 variables,
Je m'explique de nouveau
Soit la table matrice suivante me servant de reférentce
Sur une autre feuille, j'ai la collection et une épaisseur et je veux ramené
le poids pour lequel l'épaisseur est la plus proche pour une collection
donnée.
(formulé autrement, j'ai une table de référence qui me dit " si telle
collection, telle épaisseur alors tel poids". On me donne une collection et
une épaisseur (valeurs recherchées) et je dois ramener le poids pour
l'épaisseur la plus proche de cette collection
A l'aide de la table précédente, ci-joint le poids que je devrais ramenér
pour l
------------------------------
collection épaisseur poids
(valeurs recherchées) (valeur ramenée)
aaa 9 5
je ramene 5 car 9 plus prés de 10 que de 15
aaa 11
---------- 5 car 11 plus prés de 10 que de 15
aaa 16.2
---------- 9 car 16.2 plus prés de 17
bbb 1 11
bbb 9 8
bbb 50 9
--------------------------------
Si vous avez des idées des bouts de code, je suis preneur.
remarques
la collection est au format numérique ( 3 carac) , idem pour l'épaisseur
mais cela peut être un réel.
Pour simplifier j'avais pensé ramene l'épaisseur en entier et concatener
collection et épaisseur, je retombe alors sur l'exemple du début, ca me
permettrait d'appliquer la dicotomie.
La table matrice sera triée sur la collection puis sur l'épaisseur.
"tostaky" <²²²² a écrit dans le message news: 40ca5b1a$0$21568$
bonjour,
Je cherche à faire "une sorte de recherchev optimisée" où la valeur ramenée par Excel est la plus proche de la valeur recherchée sans tenir compte de la notion inférieur. or la fonction recherchv ne ramène que la plus proche par en dessous. Je m'explique
Soit la table matrice à 2 colones ------------------ épaisseur poids 10 5 15 8 17 9 18 11 ------------------
l'épaisseur est la valeur recherchée et le le poids la valeur retournée ex Si je recherche la valeur 10, je veuyx 5 Si --------------------- 11, je veux 5 car 11 plus prés de 10 que de 15 Si je recherche ------- 14, je veux obtenir 8, car 14 plus prés de 15 que de 10.
Je pensais faire ça en vba, le problème c'est que ma matrice contient pas loin 10000 valeurs (lignes) et je dois appliquer la formule sur à peu prés 300 valeurs à rechercher, donc big problème sur le nombre d'itération, en sachant que le bidule va recalculer assez souvent sur les 300 valerurs (si le calcul pouvait durer moins de 2 min ce serait génial)
La recherche par dichotomie me parait tout à fait adapter mais j'arrive pas à la mettre en oeuvre surtout que mon problème est un peu plus compliqué car en réalité la valeur recherchée est une valeur composée de 2 variables,
Je m'explique de nouveau
Soit la table matrice suivante me servant de reférentce
Sur une autre feuille, j'ai la collection et une épaisseur et je veux ramené le poids pour lequel l'épaisseur est la plus proche pour une collection donnée. (formulé autrement, j'ai une table de référence qui me dit " si telle collection, telle épaisseur alors tel poids". On me donne une collection et une épaisseur (valeurs recherchées) et je dois ramener le poids pour l'épaisseur la plus proche de cette collection
A l'aide de la table précédente, ci-joint le poids que je devrais ramenér pour l ------------------------------ collection épaisseur poids (valeurs recherchées) (valeur ramenée) aaa 9 5 je ramene 5 car 9 plus prés de 10 que de 15 aaa 11 ---------- 5 car 11 plus prés de 10 que de 15 aaa 16.2 ---------- 9 car 16.2 plus prés de 17 bbb 1 11 bbb 9 8 bbb 50 9 --------------------------------
Si vous avez des idées des bouts de code, je suis preneur. remarques la collection est au format numérique ( 3 carac) , idem pour l'épaisseur mais cela peut être un réel. Pour simplifier j'avais pensé ramene l'épaisseur en entier et concatener collection et épaisseur, je retombe alors sur l'exemple du début, ca me permettrait d'appliquer la dicotomie. La table matrice sera triée sur la collection puis sur l'épaisseur.
Merci de votre aide
Avec plages nommées "collection" - "épaisseur" - "poids"
E1 contient la collection recherchée
F1 contient l'épaisseur recherchée
Pour trouver le poids en fonction de la collection et de l'épaisseur la plus
proche :
Matricielle (validation par ctrl + maj + entrée)
"tostaky" <²²²²tostaky77@club-internet.fr> a écrit dans le message news:
40ca5b1a$0$21568$626a14ce@news.free.fr...
bonjour,
Je cherche à faire "une sorte de recherchev optimisée" où la valeur ramenée
par Excel est la plus proche de la valeur recherchée sans tenir compte de
la notion inférieur. or la fonction recherchv ne ramène que la plus proche
par en dessous.
Je m'explique
Soit la table matrice à 2 colones
------------------
épaisseur poids
10 5
15 8
17 9
18 11
------------------
l'épaisseur est la valeur recherchée et le le poids la valeur retournée
ex
Si je recherche la valeur 10, je veuyx 5
Si --------------------- 11, je veux 5 car 11 plus prés de 10 que de 15
Si je recherche ------- 14, je veux obtenir 8, car 14 plus prés de 15 que
de 10.
Je pensais faire ça en vba, le problème c'est que ma matrice contient pas
loin 10000 valeurs (lignes) et je dois appliquer la formule sur à peu prés
300 valeurs à rechercher, donc big problème sur le nombre d'itération, en
sachant que le bidule va recalculer assez souvent sur les 300 valerurs (si
le calcul pouvait durer moins de 2 min ce serait génial)
La recherche par dichotomie me parait tout à fait adapter mais j'arrive pas
à la mettre en oeuvre surtout que mon problème est un peu plus compliqué car
en réalité
la valeur recherchée est une valeur composée de 2 variables,
Je m'explique de nouveau
Soit la table matrice suivante me servant de reférentce
Sur une autre feuille, j'ai la collection et une épaisseur et je veux ramené
le poids pour lequel l'épaisseur est la plus proche pour une collection
donnée.
(formulé autrement, j'ai une table de référence qui me dit " si telle
collection, telle épaisseur alors tel poids". On me donne une collection et
une épaisseur (valeurs recherchées) et je dois ramener le poids pour
l'épaisseur la plus proche de cette collection
A l'aide de la table précédente, ci-joint le poids que je devrais ramenér
pour l
------------------------------
collection épaisseur poids
(valeurs recherchées) (valeur ramenée)
aaa 9 5
je ramene 5 car 9 plus prés de 10 que de 15
aaa 11
---------- 5 car 11 plus prés de 10 que de 15
aaa 16.2
---------- 9 car 16.2 plus prés de 17
bbb 1 11
bbb 9 8
bbb 50 9
--------------------------------
Si vous avez des idées des bouts de code, je suis preneur.
remarques
la collection est au format numérique ( 3 carac) , idem pour l'épaisseur
mais cela peut être un réel.
Pour simplifier j'avais pensé ramene l'épaisseur en entier et concatener
collection et épaisseur, je retombe alors sur l'exemple du début, ca me
permettrait d'appliquer la dicotomie.
La table matrice sera triée sur la collection puis sur l'épaisseur.
"tostaky" <²²²² a écrit dans le message news: 40ca5b1a$0$21568$
bonjour,
Je cherche à faire "une sorte de recherchev optimisée" où la valeur ramenée par Excel est la plus proche de la valeur recherchée sans tenir compte de la notion inférieur. or la fonction recherchv ne ramène que la plus proche par en dessous. Je m'explique
Soit la table matrice à 2 colones ------------------ épaisseur poids 10 5 15 8 17 9 18 11 ------------------
l'épaisseur est la valeur recherchée et le le poids la valeur retournée ex Si je recherche la valeur 10, je veuyx 5 Si --------------------- 11, je veux 5 car 11 plus prés de 10 que de 15 Si je recherche ------- 14, je veux obtenir 8, car 14 plus prés de 15 que de 10.
Je pensais faire ça en vba, le problème c'est que ma matrice contient pas loin 10000 valeurs (lignes) et je dois appliquer la formule sur à peu prés 300 valeurs à rechercher, donc big problème sur le nombre d'itération, en sachant que le bidule va recalculer assez souvent sur les 300 valerurs (si le calcul pouvait durer moins de 2 min ce serait génial)
La recherche par dichotomie me parait tout à fait adapter mais j'arrive pas à la mettre en oeuvre surtout que mon problème est un peu plus compliqué car en réalité la valeur recherchée est une valeur composée de 2 variables,
Je m'explique de nouveau
Soit la table matrice suivante me servant de reférentce
Sur une autre feuille, j'ai la collection et une épaisseur et je veux ramené le poids pour lequel l'épaisseur est la plus proche pour une collection donnée. (formulé autrement, j'ai une table de référence qui me dit " si telle collection, telle épaisseur alors tel poids". On me donne une collection et une épaisseur (valeurs recherchées) et je dois ramener le poids pour l'épaisseur la plus proche de cette collection
A l'aide de la table précédente, ci-joint le poids que je devrais ramenér pour l ------------------------------ collection épaisseur poids (valeurs recherchées) (valeur ramenée) aaa 9 5 je ramene 5 car 9 plus prés de 10 que de 15 aaa 11 ---------- 5 car 11 plus prés de 10 que de 15 aaa 16.2 ---------- 9 car 16.2 plus prés de 17 bbb 1 11 bbb 9 8 bbb 50 9 --------------------------------
Si vous avez des idées des bouts de code, je suis preneur. remarques la collection est au format numérique ( 3 carac) , idem pour l'épaisseur mais cela peut être un réel. Pour simplifier j'avais pensé ramene l'épaisseur en entier et concatener collection et épaisseur, je retombe alors sur l'exemple du début, ca me permettrait d'appliquer la dicotomie. La table matrice sera triée sur la collection puis sur l'épaisseur.