TCD à 3 dimensions pour alimenter BDD

Bonjour à tous!

Je me permets de venir vous déranger, car je bloque sur la création d'une base de données sur Excel! En effet, je me demande comment avec 3 tableaux à deux dimensions de trois variables Var_1, Var_2 et Var_3 avoir une base de données faisant apparaître toutes les combinaisons possibles de ces trois variables.

Pour éclaircir mes propos, je mets un exemple ci dessous :

Les 3 tableaux avec lesquels je souhaiterais créer ma BDD

Tableau 1 : Prénoms en fonction des fruits

Tomate Pomme Poire Citron

Arthur 7; 9; 13; 7;

Louise 16; 10; 12; 12;

Pierre 12; 15; 9; 6;

Michel 6; 11; 6; 15;

Tableau 2 : Prénoms en fonction des couleurs

Vert Jaune Rouge Orange

Arthur 11; 4; 12; 9;

Louise 11; 16; 13; 10;

Pierre 7; 9; 11; 15;

Michel 13; 3; 9; 13;

Tabeau 3 : Couleurs en fonction des fruits

Tomate Pomme Poire Citron

Vert 7; 17; 7; 11;

Jaune 10; 9; 8; 5;

Rouge 9; 10; 13; 13;

Orange 15; 9; 12; 11;

Avec ces trois tableaux obtenir une base de données sous cette forme :

Arthur Tomate Vert 0

Arthur Tomate Jaune 1

Arthur Tomate Rouge 2

Arthur Tomate Orange 4

Arthur Pomme Vert 4

Arthur Pomme Jaune 1

Arthur Pomme Rouge 1

Arthur Pomme Orange 3

Arthur Poire Vert 5

Arthur Poire Jaune 2

Arthur Poire Rouge 5

Arthur Poire Orange 1

Arthur Citron Vert 2

Arthur Citron Jaune 0

Arthur Citron Rouge 4

Arthur Citron Orange 1

Louise Tomate Vert 3

Louise Tomate Jaune 4

Louise Tomate Rouge 4

Louise Tomate Orange 5

Louise Pomme Vert 4

... .... ....

... .... ...

etc..

Auriez vous des pistes, j'en suis preneur!!

Arthur

Bonjour,

Avec plusieurs boucles for ça peut se faire, il en faut 6 pour moi :

première boucle, on parcourt toutes les lignes du premier tableau

deuxième boucle, on parcourt toutes les colonnes du premier tableau

troisième boucle, on parcourt toutes les lignes du second tableau,

quatrième boucle, on parcourt toutes les colonnes du second tableau

cinquième boucle, on parcourt toutes les lignes du troisième tableau

sixième boucle, on parcourt toutes les colonnes du troisième tableau

Tu prends une variable ligne que tu incrémentes à chaque fois que tu écris sur une ligne ou bien tu gères ça avec tes variables de boucle (plus chiant car calculs à faire)

Ça donnerait ça :

ligne = 1
colonne = 1

For a = lbound(tableau1,1) to ubound(tableau1,1)
    For b = lbound(tableau1,2) to ubound(tableau1,2)
        For c = lbound(tableau2,1) to ubound(tableau2,1)
            For d = lbound(tableau2,2) to ubound(tableau2,2)
                For e = lbound(tableau3,1) to ubound(tableau3,1)
                   For f = lbound(tableau3,2) to ubound(tableau3,2)
                       cells(ligne,colonne) = tableau1(a,b) & " " & tableau2(c,d) & " " & tableau3(e,f)
                       ligne = ligne + 1
                   Next f
                Next e
             Next d
         Next c 
   Next b
Next a

Après si tu veux te limiter à 40 000 lignes par colonne par exemple et que tu as peur que ta base de donnée dépasse ça, tu devras rajouter :

If ligne = 40 000 then
    ligne = 1
    colonne = colonne + 1
End If

Merci pour ta réponse!

Mais je pense pas avoir été assez claire, en effet en utilisant le code de ta macro on obtient toutes les combinaisons différentes des montants des tableaux.

Or, l'output que je cherche à obtenir est constitué de 4 Colonnes avec une colonne [string] prénom, une autre [string] couleur, une autre [string] fruit et la dernière [Entier] qui déterminera par ligne combien la personne détient de fruit de cette couleur.

Aujourd'hui, je sais créer un TCD à plusieurs entrée 'Raccourcis Alt + D + P puis 'Multiple consolidation ranges' et enfin double cliquer sur la cellule totale du TCD on obtient la décomposition la plus petite possible qui est idéale pour la création d'une base de données.

Arthur

Ah oui je vois tu veux aussi pouvoir faire toutes les décompositions en nombre de fruits...

Je pensé que des boucles pourraient marcher aussi mais elles seraient plus complexes à réaliser, si tu as les nombres dans la même case que les prénoms il faudra séparer les nombres du texte avec des fonctions de gestión de texte puis un Split avec ce caractère : ";"

Il faudrait ensuite aller chercher le nombre de fruits de la personne et travailler avec...

Mais pour mois ça reste des boucles, le seul soucis c'est d'aller chercher les infos à chaque endroit pour générer tes données...

En tout cas je ne vois pas de solutions simples, désolé

Rechercher des sujets similaires à "tcd dimensions alimenter bdd"