Création d'une base de données dynamique

Bonjour,

Je souhaite savoir comment créer une base de données à partir de plusieurs colonnes dynamiques (dynamique par leur contenu et par leur nombre).

Dans mon exemple, j'ai des classes avec des élèves. La liste des élèves évoluera, le nombre de classes aussi. Je voudrais que la base s'alimente automatiquement en fonction des ajouts/suppressions de classes et contenus de classes.

Quelle formule mettre en zone jaune ?

image

Merci.

Steve

Bonjour

Doit être possible par une unique formule 365

Sinon je conseille PowerQuery intégré à Excel

Merci Chris78.

Néanmoins, je pense qu'il me faudrait une formule 365 car le nom des élèves est le résultat d'une fonction FILTRE donc la plage du tableau proposé évolue et ne me permet pas cette fonction (si je ne me trompe pas) et affiche "#PROPAGATION!".

Une idée de la formule ? Merci.

Steve

Bonjour à tous,

L'erreur "#PROPAGATION!" indique que Excel ne peut pas propager le résultat de la formule. il faut donc vérifier que sous la cellule qui contient la formule l'espace est assez grand pour afficher le résultat. Et pour être bien sûr, aucunes cellules remplies sous la formule.

Merci Jean-Paul.

Oui, oui, je le sais et il n'y a rien dessous. Juste parce que c'est un tableau, la fonction filtre ne peut pas s'appliquer a priori.

Steve

Bonjour à tous,

Une proposition de type formule basée sur l'exemple. Les classes vides sont tout de même renvoyées (modification possible). Mais bon selon moi vous travaillez un peu à l'envers. En général on part du tableau 2 vers les autres tableaux. Un TCD aurai suffit à regrouper par classe les élèves.

=LET(
    infos; 1.:.6;
    classes; PRENDRE(infos; 1);
    step1; EXCLURE(REDUCE(""; EXCLURE(infos; 1); LAMBDA(acc; v;
        SI(
            v > 0;
            ASSEMB.V(
                acc;
                ASSEMB.H(INDEX(classes; COLONNE(v)); v)
            );
            acc
        )
    ));1);
    step2; ASSEMB.V(
        ASSEMB.H("N° classe"; "Elève");
        TRIERPAR(step1; 1 * REGEXEXTRACT(PRENDRE(step1; ; 1); "\d+"))
    );
    step2
)

RE

Néanmoins, je pense qu'il me faudrait une formule 365 car le nom des élèves est le résultat d'une fonction FILTRE donc la plage du tableau proposé évolue et ne me permet pas cette fonction (si je ne me trompe pas) et affiche "#PROPAGATION!".

On demande toujours un exemple représentatif donc encore une perte de temps....

Je n'ai pas proposé de fonction pour ma part mais PowerQuery... qui peut se baser sur une plage dynamique nommée mais sans le véritable exemple...

RE

Un TCD aurai suffit à regrouper par classe les élèves.

Un pseudo TCD puisque sans calcul...

Bonjour à tous !

Une approche, type formule unique dynamique, retournant, le tableau attendu :

=LET(
    r; EXCLURE(
        REDUCE(
            "";
            DANSCOL(A1:J1 & "/" & A2:J5; 3);
            LAMBDA(a; c; ASSEMB.V(a; FRACTIONNER.TEXTE(c; "/")))
        );
        1
    );
    ASSEMB.V({"N° Classe". "Elève"}; TRIER(FILTRE(r; PRENDRE(r; ; -1) <> ""); {1. 2}; {1. 1}))
)
image

Bonjour à tous !

Une approche, type formule unique dynamique, retournant, le tableau attendu :

=LET(
    r; EXCLURE(
        REDUCE(
            "";
            DANSCOL(A1:J1 & "/" & A2:J5; 3);
            LAMBDA(a; c; ASSEMB.V(a; FRACTIONNER.TEXTE(c; "/")))
        );
        1
    );
    ASSEMB.V({"N° Classe". "Elève"}; TRIER(FILTRE(r; PRENDRE(r; ; -1) <> ""); {1. 2}; {1. 1}))
)

Super malin ce A1:J1&"/"&A2:J5 toujours au top @JFL 😉

Merci beaucoup JFL, c'est exactement ce qu'il me fallait.

Steve

Bonjour à tous de nouveau !

Bien....

Je vous remercie de ce retour.

Hello une autre approche

=LET(
tab;TRANSPOSE(A1:J5);
classe;PRENDRE(tab;;1);
data;EXCLURE(tab;;1);
Liste;DANSCOL(classe&"-"&data);
valeur;FILTRE(Liste;DROITE(Liste;1)<>"-");
ASSEMB.V({"N° Classe"."Elève"};ASSEMB.H(TEXTE.AVANT(valeur;"-");TEXTE.APRES(valeur;"-"))))

@+

Rechercher des sujets similaires à "creation base donnees dynamique"