Code VBA création de tableau a partir d'une base de données

Bonjour à tous,

Je suis actuellement sur un projet ou j'ai besoin de réaliser une extraction de données d'un tableau, afin de créer un tableau. Je vous ai transmis un fichier exemple afin de mieux comprendre.

Dans la Feuil1 j'ai plusieurs données dont des coordonnées X et Y. Il faudrait copier la liste des coordonnées X situées sur la colonne M sans les doublons (cette liste peut varier en longueur mais commence toujours à la ligne 5), pour la coller dans la colonne B en position "B3" de la Feuil 2

Réaliser la même opération pour la colonne N (coordonnées Y) , pour coller la liste en cellule "C2" en transposant le sens.

Et ensuite pouvoir replacer les données de la colonne H en fonction des positions X et Y, dans le tableau crée en Feuil2.

Je ne sais pas dans quel ordre le faire, actuellement je réalise cette opération à la main qui me prend trop de temps.

Si quelqu'un pourrait m'aider ça pourrait être très sympathique.

Bonjour

Si on a plusieurs Y on peut avoir autant d' Er(GPa) que d'Y

Exemple

image

Donc pas clair

Bonjour,

Si j'ai bien compris, une proposition avec Power Query.

Cordialement

RE

Si j'ai bien compris, une proposition avec Power Query.

Mais bon dieu, mais c'est bien sûr !

Par contre je ne déclarerais Tableau1 qu'à partir de la ligne 4...

Et pour que quels que soient les Y, cela puisse fonctionner je modifierais aussi la fin

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Autres colonnes supprimées" = Table.SelectColumns(Source,{"Er(GPa)", "X(mm)", "Y(mm)"}),
    #"Colonnes fusionnées" = Table.CombineColumns(Table.TransformColumnTypes(#"Autres colonnes supprimées", {{"X(mm)", type text}, {"Er(GPa)", type text}}, "fr-FR"),{"X(mm)", "Er(GPa)"},Combiner.CombineTextByDelimiter("|", QuoteStyle.None),"Fusionné"),
    #"Lignes groupées" = Table.Group(#"Colonnes fusionnées", {"Y(mm)"}, {{"tbl", each Table.AddIndexColumn( _,"Index",1)}}),
    #"tbl développé" = Table.ExpandTableColumn(#"Lignes groupées", "tbl", {"Fusionné", "Index"}, {"Fusionné", "Index"}),
    #"Colonne dynamique" = Table.Pivot(Table.TransformColumnTypes(#"tbl développé", {{"Y(mm)", type text}}, "fr-FR"), List.Distinct(Table.TransformColumnTypes(#"tbl développé", {{"Y(mm)", type text}}, "fr-FR")[#"Y(mm)"]), "Y(mm)", "Fusionné"),
    #"Texte inséré avant le délimiteur" = Table.AddColumn(#"Colonne dynamique", "x", each Text.BeforeDelimiter([#"-3,26043"], "|"), type text),
    #"Texte extrait après le délimiteur" = Table.TransformColumns(#"Texte inséré avant le délimiteur", {{"-3,26043", each Text.AfterDelimiter(_, "|"), type text}}),
    #"Texte extrait après le délimiteur1" = Table.TransformColumns(#"Texte extrait après le délimiteur", {{"-3,24543", each Text.AfterDelimiter(_, "|"), type text}}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Texte extrait après le délimiteur1",{"Index"}),
    Redisposer= Table.ReorderColumns( #"Colonnes supprimées",List.Combine({{"x"},List.FirstN(Table.ColumnNames( #"Colonnes supprimées"),List.Count(Table.ColumnNames( #"Colonnes supprimées"))-1)}))
in
    Redisposer

Bonjour 78Chris,

Il y a en effet plusieurs Y, et plusieurs X aussi.

Le nombre d'Er (GPa) est donc nbX*nbY, je te joint en pièce jointe un tableau que j'ai réalisé à la main pour mieux comprendre ma demande.

Merci pour ta réponse rapide

Bonjour,

Si j'ai bien compris, une proposition avec Power Query.

Bonjour je ne connais pas du tout ça.

Il s'agit de quoi ?

Cordialement

re,

@78chris,

Bonjour,

qu'est ce que tu veux dire par

Par contre je ne déclarerais Tableau1 qu'à partir de la ligne 4...

Cordialement

RE

@78chris,

Bonjour,

qu'est ce que tu veux dire par

Par contre je ne déclarerais Tableau1 qu'à partir de la ligne 4...

Cordialement

Il n'est pas logique de prendre les lignes au dessus de la ligne 4 qui contient les véritables titres du tableau de coordonnées (surtout pour les virer dans la requête ensuite).

Voir aussi mon post édité pour la modif de la requête ;-=)

re,

Power query est un outil intégré à Excel, en add on pour 2010 Pro+ et 2013, en natif à compter de 2016.

Il permet à l'aide requête de générer des tableaux à partir des données saisies dans excel. Il permet de se passer du vba dans pas mal de cas.

Cordialement

Re,

Et pour que quels que soient les Y, cela puisse fonctionner je modifierais aussi la fin

Bien vu, j'en prends bonne note pour l'avenir.

Bonne continuation.

Cordialement

Rechercher des sujets similaires à "code vba creation tableau partir base donnees"