Variable tableau comportant des variables tableaux? Avec MATCH ou FINDNEXT?
Bonjour à tous
Réflexion sur le traitement de correspondance entre bases de données.
Le but est de trouver à partir de la donnée de chaque cellule de la colonne A de DATA1, les références des lignes dont la donnée de chaque cellule de la colonne A de DATA2 correspondantes.
Il faudra stoker les données de chaque ligne des deux DATA pour les restituer au final dans une base de donnée, celle-ci n’est pas fixe. J’en ai fait un schéma par rapport à ce que je sais coder. Mais elle n’est pas encore figée.
Voici la forme de la première base : DATA1
A |
B10 |
CCC |
A |
D20 |
EEE |
A |
F30 |
GGGG |
K |
H40 |
III |
K |
J10 |
MMM |
L |
N86 |
OOO |
Et la seconde DATA2
A |
Z10 |
A |
Z20 |
A |
Z30 |
P |
Z40 |
P |
Z50 |
K |
Z60 |
K |
Z70 |
K |
Z80 |
K |
Z90 |
P |
Z100 |
A |
Z110 |
Voici un résultat possible :
|
TITRE 1 |
TITRE 2 |
A |
B10 |
CCC |
Z10 |
|
D20 |
EEE |
Z20 |
|
F30 |
GGGG |
Z30 |
|
|
|
Z110 |
|
|
|
|
K |
H40 |
III |
Z60 |
|
J10 |
MMM |
Z70 |
|
|
|
Z80 |
|
|
|
Z90 |
|
|
|
|
L |
N86 |
OOO |
|
Pourquoi ce résultat, voici mon raisonnement :
Les bases de données vont être de minimum 50 000 lignes. Je me dis qu’il faut traiter ce sujet par des variables tableaux dynamiques.
Je sais utiliser la fonction Match, il me faut donc éliminer dans les colonnes A, les doublons, les triplons…. Ainsi je suis certain de n’avoir qu’une seule fois la même donnée dans les deux bases de données de départ.
Je peux donc utiliser la fonction MATCH.
Ma problématique actuelle est la façon dont je peux stoker le résultat de cette fonction.
Lorsque je regarde ma façon de présenter le résultat, je montre que je vais tenter de gérer des variables tableaux dynamiques.
Ce qui serait formidable c’est de pouvoir créer une variable tableau dynamique dont chaque case de ce tableau est lui-même un tableau. Ce point, je n’arrive pas à le trouver sur Google. Pouvez-vous m’indiquer si cela existe et le nom que cela porte que je regarde le fonctionnement ?
Une autre indication, svp, pour guider mes recherches. Comment créer des variables tableaux, et comment les nommer, en fonction d’une variable qui sera différente à chaque base de donné ?
Car si cela fonctionne, je pense créer des variables tableaux dès l’importation des bases de données et ensuite utiliser la fonction Match avec la référence de la première case de chaque variable tableau.
Il y a une autre méthode, mais je ne sais pas dire si cela va être très lent ou non.
Je pense aux fonctions FIND et FINDNEXT. Que pensez-vous de la notion de rapidité en utilisant ces fonctions par rapport à la fonction MATCH?
Merci à vous.
3 pièce(s) jointe(s)
Agrégation des données_ second essai.
Pierre,
En effet, le tableau de résultat final n’est pas sous « une bonne » présentation. Je vais à partir de ce jour réfléchir autrement, c’est-à-dire en TS (en tout cas tenté de le faire).
Je vais donc transformer en TS le premier tableau (que je reçois) et le nommer t_data1, et le tableau que je vais me confectionner t_data2. Le tableau dynamique final sera appelé t_final.
Suite à la réflexion des traitements des TS, je vais tenter d’expliquer l’agrégation des données.
En prenant chaque donnée des cellules de t_data2[REFERENCE2], il faut regarder dans t_data1[REFERENCE1] si la donnée est la même, si c’est le cas, on recopie la ligne de t_data2 (ou comme tu as dit dans un autre poste Pierre, on pousse la paire REFERENCE2/CODE 2 dans le tableau dynamique) et sur la même ligne on recopie la ligne (où a été trouvé la donnée) le ligne de t_data1.
On continue à parcourir la colonne t_data1[REFERENCE1], si une autre valeur identique a été trouvé, on recopie la ligne de t_data2 et la nouvelle ligne t_data1, le tout sur la ligne suivante de t_final.
Si aucune valeur n’est trouvé dans t_data1[REFERENCE1], alors on recopie la ligne de t_data2 et pour ne pas laisser vide des cellules on y place le mot « AUCUN ». Peut être que dans un second temps, j’éliminerai ces lignes, et donc si aucune valeur ne sera trouvé, je ne placerai rien dans t_final. Mais cela n'est pas encore certain, alors je vais partir sur le remplissage avec "AUCUN".
Pour plus de clarté, à la fin je supprimerai la colonne t_final[REFERENCE2]. sur le tableau suivant en vert. Je me dis que ce sera plus simple de travailler avec des lignes entières et d'éliminer une colonne à la fin que de travailler avec des cellules dès le départ.
Ce qui nous donnera le tableau t_final avant l’élimination de t_final[REFERENCE2].
Pièce jointe 582073
En partant de t-data1 :
Pièce jointe 582074
Et de t_data2
Pièce jointe 582075
Aurais je réussi à être plus clair?