RechercheV dynamique avec fonction DECALER [Résolu/Fermé]

Signaler
Messages postés
10
Date d'inscription
dimanche 27 mai 2018
Statut
Membre
Dernière intervention
30 mai 2018
-
Messages postés
10
Date d'inscription
dimanche 27 mai 2018
Statut
Membre
Dernière intervention
30 mai 2018
-
Bonjour,

Je voulais savoir s'il était possible de dynamiser la "table_matrice" de la RECHERCHEV avec la fonction DECALER dans une source externe.

Ma matrice à vocation à grandir ou se réduire avec le temps, j'utilise donc la fonction DECALER réccupérant le nombre de ligne du tableau en question

Le problème que je rencontre est le suivant :

Je recherche des données dans une source externe fermée et mes formules ne fonctionnent que si la fichier source est ouvert même si je mets à jour les liens.

Sinon la RECHERCHEV ne fonctionne pas, personnellement j'ai elucidé beaucoup de pistes, mes recherchesV fonctionnent avec la source fermée si et seulement si je n'utilise pas la fonction DECALER

Y'a t-il une limite à la fonction DECALER sur les liens externes ?
Y'a t-il une faute dans mes formules ? (étonnant car elles fonctionnent si la source est ouverte)


Je me questionne également sur ce que renvoie la fonctione DECALER car j'ai souvent l'erreur #VALEUR, est-elle compatible avec la matrice nécessaire à la RECHERCHEV ?

Voici la formule la plus simple que j'utilise >

SI($A8="";"";RECHERCHEV($A8;DECALER([Macro_Revers_Beta.xlsm]Commande!$A$2;;;[Macro_Revers_Beta.xlsm]Commande!$L$2;8);4;FAUX))

Et une autre >

SI($A8="";"";RECHERCHEV($A8;DECALER('S:\BE\Admin\Reversements BE\2018\Alpha - Macro reversement (en cours)\Macro\[Macro_Revers_Beta.xlsm]Commande'!$A$2;;;'S:\BE\Admin\Reversements BE\2018\Alpha - Macro reversement (en cours)\Macro\[Macro_Revers_Beta.xlsm]Commande'!$L$2;8);3;FAUX))

Merci d'avance pour votre aide

5 réponses

Messages postés
25383
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
15 octobre 2020
5 529
Bonjour
  • qu'avez vous dans le $L$2 du code DECALER?
  • est ce que la recherche fonctionne comme vous l'entendez si vous remplacez l'adresse complète de L2 par un nombre de lignes figé

crdlmnt

Messages postés
10
Date d'inscription
dimanche 27 mai 2018
Statut
Membre
Dernière intervention
30 mai 2018

$L$2 fait référence au nombre de ligne du tableau source, pour connaitre sa longueur. (Je détermine le nombre de lignes par le fonction NBVAL et je réccupère donc ce nombre dans le formule de RECHERCHEV)

Il se passe la même chose : Si le fichier source n'est pas ouvert cela renvoie #VALEUR si le fichier source est ouvert cela fonctionne
Messages postés
16242
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 octobre 2020
3 048
bonjour le ctrl, Vaucluse

pourrait on voir le classeur source ?

pour cela
Mettre le classeur sans données confidentielles en pièce jointe sur 
https://mon-partage.fr/
Puis faire un clic « copier le raccourci » et lecoller dans votre message



Messages postés
10
Date d'inscription
dimanche 27 mai 2018
Statut
Membre
Dernière intervention
30 mai 2018

Bonjour,

Je vous l'envoie ce soir, l'accès au site m'est refusé au travail

Le fichier source est disponible via le lien suivant :

https://mon-partage.fr/f/NHBIvSV8/
Messages postés
23567
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 octobre 2020
6 408
Bonjour,

pour répondre à ta question, oui Decaler(), tout comme Indirect(), ne fonctionnent pas sur classeur fermé.

Mais tu as une idée du nombre max de lignes ? Si ce n'est pas des centaines de milliers tu peux tenter en mettant le max. recherchev() est bien optimisé, ça ne ralentira peut être pas trop.
eric

En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Messages postés
10
Date d'inscription
dimanche 27 mai 2018
Statut
Membre
Dernière intervention
30 mai 2018

Oui c'est plus juste !
3 000 lignes effectivement ça se passe bien mais pour rester dans l'optique de dynamiser j'ai décider d'imbriquer un Nbval()

Mais j'aurai pu me contenter de bloquer à 3 000 lignes effectivement
Messages postés
23567
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 octobre 2020
6 408
Bonjour,

pour rester dans l'optique de dynamiser j'ai décider d'imbriquer un Nbval()
tu peux expliquer ?
eric
Messages postés
10
Date d'inscription
dimanche 27 mai 2018
Statut
Membre
Dernière intervention
30 mai 2018

Dans la recherchev(), la table_matrice tu dois indiquer vulgairement une plage de cellule (une range)
Genre > type A10:C10 et bien à la place des nombres "10" je fais référence à une cellule dans mon fichier source qui compte le nombre de lignes (soit la longueur du tableau) par Nbval()

Donc ma table_matrice devient : A1:B(A10)
A10 faisant référence à au nombre de lignes

Mais dans la précipitation cela marchait... mais sur une seule ligne :/
Messages postés
23567
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 octobre 2020
6 408
Tu as index() et equiv() qui fonctionnent sur fichier fermé.
Mais bon, je ne pense pas que ça fasse un gain notable sur 3000 lignes, justifiant un rallongement conséquent des formules.
Messages postés
10
Date d'inscription
dimanche 27 mai 2018
Statut
Membre
Dernière intervention
30 mai 2018

Je n'arrive pas à mes fin avec index() et equiv(), j'ai essayé avec adresse() également mais encore un echec,

Mais effectivement je suis resté sur des tables fixe avec le maximum de ligne
Messages postés
10
Date d'inscription
dimanche 27 mai 2018
Statut
Membre
Dernière intervention
30 mai 2018

Après plusieurs tests si je mets en dur ma table_matrice de la recherche ça rame un peu si je commence à mettre beaucoup de ligne mais c'est correct.

Mais j'ai trouvé une solution pour avoir le nombre de lignes exact à chaque fois dans mes sources et ne pas rechercher du vide >

J'imbrique dans la table_matrice le résultat d'un NBVAL() qui compte le nombre de lignes

Merci de votre aide, je clôt le sujet