|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 7 ![]() |
Bonjour,
Je souhaite adapter un exemple d'imbrication de fonctions index et equiv à mon projet, j'obtient un résultat mais incohérent, saurez vous me sortir de là ?! Voilà mon projet simplifié : Le but est d'obtenir le bon diamètre de vis (Dv) adapté à 2 variables d'entrées : le diamètre du tube (Dt) et sa longueur (L). On retrouve ces deux variables dans une base de données et on les choisis grâce à des combobox. En fait, la difficulté vient du fait que pour le même Dt, on peut avoir deux L différentes et pour ces deux L on peut avoir deux Dv différents. Voyez plutôt : ........A.........B........C 1.....Dt=......#choisi par utilisateur# 2.....L=........#choisi par utilisateur# 3 4.....Base de données : 5.....Dt....... L.......Dv 6.....4........10.......2 7.....4........15.......2 8.....6........10.......4 9.....8........10.......2 10...8 .......15.......4 Donc si l'utilisateur donne : Dt=8 et L=15 alors Dv=4 De la même manière avec Dt=6 et L=10 alors Dv=4 J'ai tenté avec cette formule : =INDEX(C6:C10;MATCH(A2;OFFSET(B6:B10;MATCH(A1;A6:A10;0); );0)) Mais comme je le disais, les résultats sont incohérents. Quelqu'un connait ce genre de manip' ?? Merci ! PS : désolé pour l'illustration mais je n'ai pas vraiment le temps de chercher à faire autrement. |
|
|
00
|
|
|
#2 | |
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 919 ![]() |
Bonjour,
Ci dessous une formule matricielle qui devrait faire ce que tu souhaites (A valider par CTRL + MAJ + ENTREE Code :
=INDEX(C6:C10;EQUIV(1;(B6:B10=B2)*(A6:A10=B1);0))
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|
|
|
10
|
|
|
#3 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 7 ![]() |
Bravo ! 24 minutes pour répondre, c'était inespéré !
Cependant quand je met ta formule en place (j'ai bien entendu modifié "equiv" en "match" pour mon excel en anglais), je n'obtiens qu'une erreur #VALUE! A vrai dire je ne comprend pas bien ta fonction EQUIV... Pourrais tu m'éclairer ? |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 919 ![]() |
Si tu as cette erreur, c'est que tu n'as pas validée cette formule par CTRL + MAJ + ENTREE. (Tu dois voir des accolades s'afficher autour de la formule)
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 7 ![]() |
J'en ai eu à un moment et ça me donnait une autre erreur. Mais actuellement, je n'ai aucunes accolades ...
|
|
|
00
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 919 ![]() |
Je te propose de lire ce tutoriel. Cela devrait t'aider à utiliser cette formule
http://silkyroad.developpez.com/excel/indexequiv/
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 7 ![]() |
J'ai lu ta page, que j'avais déjà bien parcouru, mais j'ai vraiment l'impression de me perdre petit à petit !
Tout est possible avec Excel non ? J'ai vraiment besoin d'une solution ! |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Avec Excel en anglais, c'est pas des , à la place des ; aussi ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 7 ![]() |
Bonjour Zebreloup,
Non les "," remplacent les ";" dans les macros si tu veux insérer une formule dans une case. Dans le doute, j'ai fait le test, mais c'est pire, Excel ne l'accepte même pas... Merci jfontaine, relire plus profondément la page m'a fait voir le problème autrement. J'ai finalement fait une macro toute simple qui rempli parfaitement la tâche. Code :
Je vous remercie tout deux quoiqu'il en soit ! |
||
|
|
00
|
|
|
#10 | |
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 919 ![]() |
Quel dommage de ne pas avoir abouti a faire fonctionner la formule.
![]()
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
L'Excel américain par défaut utilise bien des virgules à la place des point-virgules, j'ai déjà travaillé avec à une époque. Après, il y a un peu toutes les variantes...
Et c'est vrai que c'est dommage que tu n'aies pas réussi à écrire la formule matricielle. Et en faisant ? Code :
=INDEX(C6:C10;EQUIV(1;(B6:B10=B2)*(A6:A10=B1)*1;0))
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
10
|
|
|
#12 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 7 ![]() |
Mille excuse !! les deux formules fonctionnent parfaitement !
![]() J'avais juste mal activé. Pourriez-vous m'expliquer EN FRANCAIS comment fonctionnent ces formules ? Bon j'ai repris votre formule pour mon calcul puisque mon code vba a une faille (incompréhensible...). Seulement je travail avec une userform qui selon les choix de l'utilisateur, remplie une feuille. Autrement dis, tout est un peu dicté par le code vba principal. Or j'ai besoin de pouvoir valider votre formule à partir de mon code vba, c'est à dire, simuler la combinaison CTRL + SHIFT + ENTREE (en effet, apparemment il s'agit de SHIFT et non MAJ J'ai essayé avec Application.SendKeys "^+~" mais ça ne marche pas. Il faut réussir à accéder directement à la formule comme lors d'un double click. Connaissez vous une solution ? |
|
|
00
|
|
|
#13 | |||
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 919 ![]() |
Citation:
![]() Citation:
Par contre, je ne connais pas la réponse
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|||
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Tu la rentres comment la formule ? Si tu utilises Formula, tu peux utiliser FormulaArray à la place, mais il faut adapter un peu.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 7 ![]() |
En fait voulais avoir une formules matricielles ou l'autre (très légèrement différentes) selon la valeur d'une autre cellule et après de larges recherches en vain, j'ai tenté tout simplement avec :
=si(cellule=10;formule1;si(cellule=20;formule2;0)) et ça marche ! jfontaine tu as raison, j'ai été induit en erreur par un autre forum ![]() Merci messieurs ! pourriez vous quand même m'expliquer le fonctionnement de votre formule matricielle ? Juste pour savoir ce que je fais ...
|
|
|
00
|
|
|
#16 | |
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 919 ![]() |
Je vais expliquer son utilisation car pas sur de savoir expliquer le fonctionnement d'une formule matricielle
Code :
=INDEX(C6:C10;EQUIV(1;(B6:B10=B2)*(A6:A10=B1);0)) Si la condition (B6:B10=B2)*(A6:A10=B1) est remplie, Equiv retourne 1, devant l'index de ligne correspondant à la matrice de retour index (ou la pas simple à expliquer) ![]()
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com