Base de donnees : BDLIRE

Bonjour,

je furète depuis un moment et pas moyen de trouver la solution à mon problème, même dans ce forum

Voila mon dilemme :

je voudrais utiliser la fonction BDlire pour regrouper des données dispo dans une base dans une autre base selon les critères dispo dans les colonnes adjacentes.

Comme un recherchev mais en multiciteres.

là vous allez me dire ya qu'à utiliser la combinaison index + equiv. Yes effectivement mais c'est lourd à écrire quand il y à beaucoup de conditions et le temps de calcul est affreux dès qu'il y a trop de lignes.

donc retour a bdlire : impeccable mise à part la condition critère qui doit évoluer selon ma ligne.

Faut il obligatoirement une plage adjacente avec titre et en dessous critère ? peut on faire une union de 2 plages ? ou même mettre une matrice.

si qq1 à des idees je suis preneur. (mise à part passer en vba et faire une boucle qui pour chaque ligne recopie le critère et retourne après la valeur)

merci d'avance.

exceltestbdlire

Bonjour et bienvenu,

Apparemment tu connais pas mal de chose mais tu ne sais pas les appliquer. Car en même temps que tu nous poses une question tu proposes plein de pistes pour les résoudre. Tout d'abord merci de nous envoyer le fichier plutôt qu'une image pour une exploitation rapide et efficace des données .

je sais le résoudre avec les idées que j'ai données mais c'est la fonction bdlire que je voudrais utilisée si possible car elle est sans doute plus rapide que l'utilisation de index et equiv qui utilise le calcul matriciel donc gourmandent en ressources quand on a beaucoup de lignes de calcul et de critères.

voila mon fichier

https://www.excel-pratique.com/~files/doc2/Classeurtestbdlire.xls

Re,

L'utilisation de BDLIRE n'est pas très courante ainsi. Consulte l'aide MS. Voici ton classeur avec une solution sur la feuille 2 :

https://www.excel-pratique.com/~files/doc2/Qg1sChazar.xls

bonsoir,

Tu as bien résumé la problématique :

Oui, il faut obligatoirement une plage adjacente avec titre et en dessous critères.

La plage de requête ne doit pas nécessairement être dans la même feuille que dans la BD. C'est même déconseillé pour les requêtes complexes... (Enfin. A mon avis !)

Sinon ton analyse est bonne : Les BD** sont très puissante pour des requêtes complexes et nombreuses.

Adossées à VBA on en tire des prodiges extrèmement rapide et peu gourmand en mémoire et délai d'exécution.

Mais je n'ai rencontré que rarement des requêtes ou le jeu en vaut la chandelle.

Idéal pour analyser les ventes de 2500 points de ventes pour réparties dans 10 régions et 250 groupements et pour un centaines de produits répartis en une dizaine de famille.

Spectaculaire !

Mébon, même sans VBA c'est déjà Extra ! Bien penser à utiliser les plages nommées (c'est quand même plus cool) Mais dans certains cas (requêtes nombreuses et complexes et variables, il est plus commode de jouer sur les $ $ et les plages qui s'incrémentent...

A+

merci la formule avec sommeprod est intéressante et va sans doute marcher dans mon cas car j'ai effectivement des valeurs numériques.

par contre avec bdlire c'est du ponctuel.

on peut vraiment pas mettre autre chose dans critère qu'une plage contigu de cellules ?

genre variables fonctions matrices ou qqc du style ??

en tout cas merci pour t'être penché sur mes questions

edit : suite au dernier post

merci pour ta réponse.

je vais donc être obligé de passer par vba en plus des formules de BD car on volume j'ai environ 10000 lignes pour 5 critères de recherches * 6 onglets avec en plus des multiplications à la clef pour finir par une synthèse en sommant sur certains critères. Là je pense éviter le tableau croise dynamique ou les sous totaux pour une petite macro couplée avec un filtre élaboré pour plus de réactivité.

bonsoir,

ça me semble un bon terrain d'application. Les BD** commencent à se mettre en jambe quand les TCD trouvent leurs limites...

Si ça peut te donner des idées voici un petit exemple d'analyse réalisée il ya déjà quelques années...

Les requètes sont sur la feuille data et le résultat recherché en dernière feuille (FTmp) Bon, il est largement fait appel à VBA car ce n'est petit extrait, mais ça donne une idée du concentré de puissance !

A+

18mv83500.xlsm (104.11 Ko)

bon maintenant place à la mise en application.

et là j'ai une question sur laquelle je n'avais jamais eut à me pencher.

comment on remplace le test logique d'égalité sous vba ?

je m'explique :

Range("A1") = Application.WorksheetFunction.Match(1, (plage_test=var_test) *(plage_test2=var_test2), 0)

et là c'est le drame comment peut on bien faire ce test = ???

bonjour,

Euh... comme ça brut de décoffrage, ça me parait insensé !

Un peu plus d'explication SVP

A+

et là c'est plus clair :

=INDEX('NG'!$F:$F;EQUIV(1;('NB RUN'!K$4=INDIRECT("'NG'!D1:D"&NBVAL('NG'!D:D)))*(GAUCHE('NB RUN'!$D5;8)=INDIRECT("'NG'!C1:C"&NBVAL('NG'!C:C)))*(INDIRECT("'NG'!A2:A"&NBVAL('NG'!A:A))='NB RUN'!$A5);0))

:lol:

en fait je cherche a transformer cette instruction d'excel en vba :

=EQUIV(1;(A1:A2="test")*(B1:B2="test2");0)

equiv devient match en vba mais le (A1:A2="test") je sais pas du tout

j'ai réussi à passer outre avec :

cellule_cible.FormulaArray = Evaluate("=index(" & _

"'NG'!$F:$F," & _

"match(1," & _

"('NB RUN'!$K$4='NG'!$D$1:$D$" & bas_nb & ")" & _

"*('NB RUN'!$A$" & nbligne & "='NG'!$A$1:$A$" & bas_nb & ")" & _

"*(left('NB RUN'!$D$" & nbligne & ",8)='NG'!$C$1:$C$" & bas_nb & ")" & _

",0)" & _

")")

mais c'est pénible car les colonnes sont en lettres puis l'expression et une chaine de caractère, bref c'est pas propre :)

suis-je plus clair ?

C'est bien ce que j'avais compris, mais un petit fichier joint aurait été plus cool !

(pour décortiquer le résultat de la formule Excel sur des exemples concrets)

De toute façon, ça ne me parait pas directement transposable dans une instruction VBA.

Je passe la main jusqu'au 23 Novembre because déplacement à l'étranger...

Si tu n'as pas résolu ton pb d'ici là, essaie de présenter ta problématique sans bloquer la discussion avec une formule qui n'est pas forcément adaptée à VBA.

A+

Rechercher des sujets similaires à "base donnees bdlire"