[VBA] (PowerQuery?) - Croisement de grosses tables

Bonsoir,

J'ai deux (3 au total) tables que j'aimerais regrouper pour obtenir une table globale qui contienne toutes les données dont j'ai besoin.

La première s'appelle TAXREF (153 000 lignes) dans laquelle il y a notamment des noms d'espèces végétales et leurs "synonymes".

La seconde : "BDC" (92 000 lignes) contient, entre-autres, des statuts règlementaires. Mais certaines espèces sont désignées avec leur synonymes et certains synonymes/nom valides sont séparés comme s'il s'agissait de 2 espèces différentes.

J'aimerais alimenter la table TAXREF avec les données BDC.

Savez-vous comment je devrais m'y prendre ?

Je joins à cette discussion un document qui résume ce que j'essaie de faire avec un exemple.

La solution que je pourrai mettre en place serait de faire une recherche sur chaque cellule. Mais je doute que mon ordinateur se réjouisse de faire les calculs.

Lien cjoin :

Merci de votre attention.

Bonne fin de journée !

A plus tard

EDIT : Voir mon message suivant, qui est plus clair et le document associé.

Bonne journée !

Bonjour

Pas très clair pour moi

Mais certaines espèces sont désignées avec leur synonymes et certains synonymes/nom valides sont séparés comme s'il s'agissait de 2 espèces différentes.

Si je prend BC : on peut chercher tous les noms qui ont plusieurs NOM_VALIDE et/ou plusieurs NOM_VALIDE_SIMPLE mais on fait quoi avec cela ?

Bonsoir,

3ème fois que je réécris ce message en 1h30 déjà.. C'est une demande assez simple comme ça, mais pas évidente à mettre en place, et encore moins à expliquer.

Dans la feuille "TAXREF" :

  • LB_NOM correspond à tous les noms utilisés, dont les synonymes (j'aurais du le préciser).
  • CD_NOM est un code unique donné à chaque LB_NOM.
  • NOM_VALIDE est le code officiel utilisé
Le reste n'est pas important ici.

Si je prend BC : on peut chercher tous les noms qui ont plusieurs NOM_VALIDE et/ou plusieurs NOM_VALIDE_SIMPLE mais on fait quoi avec cela ?

Toutes les espèces présentes dans BDC doivent pouvoir être retrouvées dans TAXREF.

Le but est de mettre à jour BDC à partir des informations de TAXREF. Cela se ferait comme ça :

- [feuille "RESULTAT"] : "Copier-Coller" les données de la [feuille "BDC"] ;

Pour chaque ligne de la [feuille RESULTAT"] [colonne "LB_NOM"] :

- Si le contenu de la cellule existe dans la [feuille "TAXREF"] [colonne "NOM_VALIDE"], alors :

> récupérer les informations présentes dans les colonnes ["FAMILLE"] ; ["CD_NOM"] ; ["RANG"] et ["LB_NOM"] et les ajouter après la dernière colonne, à la suite, en ajoutant autant de lignes que nécessaire ;

> récupérer les informations présentes dans les colonne ["LB_NOM"] et ["LB_AUTEUR"] et les ajouter à la suite, dans la [colonne "LB_NOM"] de la [feuille RESULTAT] ;

- Si le contenu de la cellule n'existe pas dans la [feuille "TAXREF"] [colonne "NOM_VALIDE"], alors :

> le rechercher dans la [colonne "LB_NOM"] puis récupérer les informations présentes dans les colonnes ["FAMILLE"] ; ["CD_NOM"] ; ["RANG"] et ["LB_NOM"] et les ajouter après la dernière colonne, sur la même ligne ;

- Si le contenu de la cellule n'existe pas dans la [feuille "TAXREF"] (colonnes citées), alors :

> récupérer les informations des colonnes ["FAMILLE"] ; ["CD_NOM"] ; ["RANG"] ; ["LB_NOM"] et ["NOM_VALIDE"] ;

> Renseigner ces informations à la suite, après la dernière ligne de la [feuille RESULTAT] ; dans les colonnes correspondantes.

J'espère que j'ai pu être plus clair dans ma requête !

Je pense que la masse de calculs à faire est conséquente, c'est pourquoi je me dis que peut-être vous auriez une solution pour obtenir ce résultat, via des macros plus rapides ou en utilisant PowerQuery ?

J'ajoute un document qui illustre mieux ce que j'essaie d'obtenir.

Bonne fin de soirée !

RE

SI je décode ce que tu as écrit :

[colonne "NOM_VALIDE"] de TAXREF contient plein d'infos en plus du nom : il faut trouver le LB_NOM de BDC à l'intérieur de cette chaîne, c'est bien cela ?

Bonjour,

Oui c'est entre ces deux colonnes que ça se joue. Et c'est à partir d'elles qu'on récupère les différentes infos.

Re

Test effectué sur PowerQuery sans succès (volume même sur Excel 64 bits et plein de mémoire)

Soit il va falloir découper la base en morceaux, soit du VBA mais sur de calcul de sous-chaînes sur ces volumes pas sûr qu"Excel ne sature pas.

Bonsoir,

Merci pour votre réponse. Ça va donc effectivement être compliqué...

J'ai pu enlever 50 000 lignes environ des tables, mais je ne suis pas sur que ça soit suffisant... Je risque de devoir passer par un autre logiciel...

Rechercher des sujets similaires à "vba powerquery croisement grosses tables"