jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 23 janv. 2007 à 14:51
Je n'ai qu'une idée à te proposer (à condition qu'elle soit applicable à VBA... et je n'en sais rien....) :
un tableau dynamique de tes "tableaux", à initialiser à l'Initialize
Il te restera alors à te référer à l'index de ce tableau dynamique pour invoquer le tableau correspondant
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 23 janv. 2007 à 17:47
Alors, effectivement, RechercheV et VLOOKUP désigne la même chose dans Excel.
Si tu utilises du code VBA pour afficher ta formule, il faudra bien marquer VLOOKUP (un truc du style cell(1,1).FormulaR1C1 ="=VLOOKUP(R[-1]C[1],MonTableau,1,FALSE)" ... la formule quand tu seras dans Excel sera bien marquée comme étant =RECHERCHEV ...)
Donc, avec un code VBA, c'est tout simple à faire :
cell(1,1).FormulaR1C1 ="=VLOOKUP(R[-1]C[1]," & MonTableau & ",1,FALSE)" et la variable MonTableau contient le nom de ta zone de nom, renseignée par un IF ou un Select Case.
Pour ton problème, c'est à dire, le faire en pur EXCEL, tu veux faire : "=Vlookup(A1;A7;3;0)", donc écrire directement la formule EXCEL.
Tu dois donc écrire : =RECHERCHEV(A1;A7;3;0)
Mais ça ne fonctionnera pas parce que ça ne cherchera que dans A7 écrit comme ça, et non dans la zone de nom renseignée dans EXCEL.
Alors, j'ai essayé plein d'astuce, je fondais beaucoup d'espoir sur la formule CELLULE("contenu";A7) qui me remonte bien le nom de la Zone de nom, amis problème, dans la formule :
=RECHERCHEV(A1;CELLULE("contenu";A7);3;0), il interpère le nom de la zone de nom (tu suis ? ^^) comme du texte, et non comme une référence !
J'ai eu beau chercher, impossible ... La formule pour convertir en référence n'existe pas (on pourrait bien entendu en écrire une, mais ça n'a pas d'intérêt, si c'est pour faire du VBA, on peut faire bien simple que ça ^^).
J'en arrive donc à la conclusion que, dans ton cas, tu sois obligé de gérer le nom des tes zones pas des formules SI, en espérant donc que tu n'en aies pas trop.
Par exemple, j'ai 3 zones de nom : test1, test2 et test3
Ta cellule A7 affiche le nom de la zone en fonction de tes critères.
Tu peux donc écrire la formule suivante :
"=SI(A7="test1";RECHERCHEV(A1;test1;2;FAUX);SI(A7="test2";RECHERCHEV(A1;test2;2;FAUX);RECHERCHEV(A1;test3;2;FAUX)))"
Je n'ai pas mieux à te proposer (c'est pas faute d'avoir cherché pourtant )
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 24 janv. 2007 à 09:11
Ben, sur mon fichier de test, j'ai jamais réussi à faire fonctionner ma cellule avec un INDIRECT, pourtant, j'ai essayé (et comme j'étais convaincu de l'avoir déjà fait, je me suis acharné pourtant !), je n'ai toujours obtenu qu'un #VALEUR.
Mais bon, CELLULE était tellement logique aussi, je hais Grossoft !!
Mais si ça se trouve, c'est mon fichier de test qui était foireux. Rhaaa, faut que je réessaye maintenant !!
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 24 janv. 2007 à 10:19
Han la honte, effectivement, avec le INDIRECT ça fontionne ... Et moi, ça ne risquait pas d'être bon : dans mes zones de nom, j'avais fait une faute d'orthographe !! J'ai passé 20 mn avec des formules EXCEL à tester ce que je savais pourtant fonctionner, à tenter d'afficher le contenu d'une zone de nom qui n'était pas définie ... J'ai honte heu, j'ai hoooooonte heu !!!