Adapter formule "recherchev" en fonction valeur cellule

Bonjour,

est-il possible de modifier une partie d'une table matrice de la fonction "recherchev" en fonction de la valeur d'une cellule ?

sur le fichier joint, la cellule A1 dépend d'une liste déroulante et je souhaiterais que le nom de la matrice soit le même que la valeur de la cellule.

14recherchev.xlsx (24.63 Ko)

Merci !

image

Bonjour,

À tester ...

=SIERREUR(RECHERCHEV('U:\9 Contrôle FM-SAP\00-COMPARAISON FM - PLP - PRD.xlsm'!Export[@RefPiece];INDIRECT("'U:\9 Contrôle FM-SAP\Export article\["&$A$1&".xlsx]Feuille 1'!$B:$B");1;0);"")

Bonjour,

Merci, c'est quelque-chose comme ça que je cherche. malheureusement la recherchev laisse ma colonne vide..

l'image ci-dessous avec votre formule :

image

et ci-dessous avec la formule d'origine:

image

Alors en fait cela fonctionne, mais uniquement si le fichier de référence est ouvert.... dès que j'ouvre le fichier de référence la colonne se rempli et une fois que je le ferme tout se vide à nouveau... y-a-t-il un moyen de contrer celà ? Merci !!

Re-bonjour,

cela fonctionne, mais uniquement si le fichier de référence est ouvert.... dès que j'ouvre le fichier de référence la colonne se rempli et une fois que je le ferme tout se vide à nouveau... y-a-t-il un moyen de contrer celà ?

Malheureusement non (pas de manière simple en tout cas!) c'est une particularité de la fonction INDIRECT.

Maintenant, si tu expliques un peu ce que tu cherches à faire, peut-être qu'il est possible de trouver une autre piste ? Ta formule fait référence à deux fichiers distincts ... ça ne nous aide pas beaucoup
Tu as visiblement une liste déroulante en A1, qui détermine le fichier "cible", mais pour ce qui est de la valeur cherchée ... tu as simplement copié-collé une formule d'un fichier existant vers un classeur vierge ? (ce qui expliquerait la partie 'U:\9 Contrôle FM-SAP\00-COMPARAISON FM - PLP - PRD.xlsm'!Export[@RefPiece] de ta formule)

On peut -si ça te convient- exécuter une macro, au changement de valeur en A1, qui modifiera le nom du fichier cible dans tes RECHERCHEV.
Dans ce cas, joins deux petits extraits de tes fichiers, pour qu'on puisse tester !

Ceci étant, à bien examiner ta formule, tu te contenterais de renvoyer la valeur cherchée elle-même ? ... l'objectif est simplement de vérifier si elle existe bien en colonne B du fichier cible ?

Re-bonjour,

Indirectement le but recherché est bien celui-ci. si la valeur existe bien en colonne B du fichier cible, mon tableau affiche alors d'autres informations concernant cette valeur, qui est recherchée sur un export d'une base de donnée.

image

le fichier cible change à chaque fois que l'on veut vérifier ces données pour le numéro correspondant (108799 sur l'image) ça ne suffira donc pas de juste modifier le nom du fichier cible quand on change la valeur de la cellule car le fichier n'est pas le même à chaque export (les données changent). Il faudrait au contraire changer la valeur dans la table de matrice de la fonction RechercheV pour la nouvelle valeur qui remplacera la 108799 sur l'image afin que la recherche se fasse sur le nouveau fichier de l'export effectué pour le nouveau numéro... pas évident à expliquer comme ça :/ je peux essayer de vous envoyer des extraits de mes fichiers actuels. ça me demande juste un peu de temps pour les rendre publics.

Voici les différents fichiers :

12comparaisons.zip (0.99 Mo)

Salut,

Un exemple réduit à sa plus simple expression aurait suffit:

  • tu as joint deux fichiers qui semblent identiques !? Ce qui aurait été utile aurait été de joindre un de tes fichiers "108870" ou "108799"
  • nous n'avions pas besoin de toutes les feuilles autres que "Comparaison"
  • il y a un paquet de formules faisant référence à des fichiers tiers ... comme nous n'en disposons pas, ça génère plein d'erreurs qui "polluent" la compréhension
  • des indications sur l'emplacement des listes déroulantes, ainsi que celui des formules auraient également aidé

Bref ... s'il s'agit d'inscrire (en mettant à jour le nom du fichier) les RECHERCHEV en colonne AB de la feuille "Comparaison" (AB2:AB45) lorsque la valeur en AB1 est modifiée, teste le code suivant dans le module de la feuille "COMPARAISON":

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$AB$1" Then Exit Sub
derlig = Cells(Rows.Count, "AA").End(xlUp).Row
Range("AB2:AB" & derlig).FormulaLocal = "=SIERREUR(RECHERCHEV(A2;'U:\9 Contrôle FM-SAP\Export article\[" & Target & ".xlsx]Feuille 1'!$B:$B");2;FAUX);"""")"
End Sub

Pour tester, il te suffira ensuite de choisir un autre nom de fichier en AB1

Bonjour,

Dsl pour les informations incomplètes... j'ai pourtant essayer de partager le document excel principal ainsi que un document en .zip avec tous les fichiers nécessaires pour pouvoir rétablir les formules (notamment les fichiers 108870 et 108799). Après effectivement il faudrait sûrement remettre à jours les liens pour que le fichiers principale puisse retrouver les informations... je vais essayer ta macro et vous tiens au courant. Merci !!

@u.milité,

j'ai une erreur de compilation sur la macro... :/ je n'arrive pas à corriger l'erreur tout seul

image

Bonjour,

Supprime la parenthèse en surbrillance.

Bonjour, merci, déjà essayé... toujours la même erreur sur le point-virgule en surbrillance... si je supprime le point virgule c'est le 2 qui vient en surbrillance... j'ai également déjà re-écrit la ligne à la main au cas où ça ne reconnaîtrait pas une apostrophe ou des guillemets ... toujours la même erreur dans cette zone..:/

Je n'ai pas fait attention au guillemet devant le ;

Supprime les 2.

Merci, bon je n'ai plus d'erreur de compilation par contre j'ai une erreur d'exécution...

image

En fait, la formule que j'ai actuellement : =SIERREUR(RECHERCHEV([@RefPiece];INDIRECT("'U:\9 Contrôle FM-SAP\Export article\["&$AB$1&".xlsx]Feuille 1'!$B:$B");1;0);"")

elle fonctionne exactement comme je le souhaite, merci beaucoup !! Par contre s'il y avait juste une solution pour que la fonction INDIRECT pouvait fonctionner avec les fichiers de références fermés ça serait parfait. J'ai vu qu'il y avait des possibilités avec une fonction indirect.ext par ex mais je n'ai pas réussi à la faire fonctionner... Si vous avez une solutions ou une idée ;) merci beaucoup !!

Bonjour,
Merci à JoyeuxNoel pour les indications,

L'idée de ce bout de code est justement d'éviter le problème des fichiers cibles fermés ... pourquoi donc réinscrire la fonction INDIRECT ???

Bonjour U.milité,

Je me suis permis d'intervenir car tu n'étais pas en ligne et il avait l'air motivé, à bosser de bon matin.

Mais, te voici. Bon courage 😉

Alors j'ai supprimé les formules dans la colonne... malheureusement ça ne fonctionne toujours pas.... je ne comprend juste pas la ligne "derlig = cells(rows.count,"AA").End(xlUP).row..

Merci JoyeuxNoel pour le coup de main ! :)

Re-bonjour,

Alors j'ai supprimé les formules dans la colonne... malheureusement ça ne fonctionne toujours pas.... je ne comprend juste pas la ligne "derlig = cells(rows.count,"AA").End(xlUP).row..

Cette ligne de code permet de repérer, en colonne AA, le n° de ligne où figure la dernière cellule non-vide. On sait ensuite sur quelle plage la macro doit inscrire la formule en colonne AB (dans ton fichier exemple, ce sera AB2:AB45, puisque derlig vaudra 45).

Pour le reste, je ne comprends pas ton histoire d'effacer les formules de la colonne ? Chaque fois que tu sélectionnes un nom de fichier en AB1, la macro réinscrit la formule illustrée dans ton message de 8:00 (avec les corrections proposées par JoyeuxNoel ... et SANS ajouter la fonction INDIRECT !)

ah d'accord je comprend mieux cette ligne derlig. merci

alors je comprend bien le but du code, qui est d'adapter la formule en fonction de la valeur en AB1. seulement lorsque je change de valeur dans AB1 j'ai une erreur d'exécution '1004' comme mentionné à 08h24..

image
Rechercher des sujets similaires à "adapter formule recherchev fonction valeur"