IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Création d'un tableau à partir de valeur sur une feuille excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    architecte
    Inscrit en
    Avril 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : architecte
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2016
    Messages : 38
    Par défaut Création d'un tableau à partir de valeur sur une feuille excel
    Bonjour à tous,

    je cherche à réaliser le projet suivant :

    j'ai sur ma feuille 1 un listing d'environ 1500 lignes qui se compose de la manière suivante

    colonne A, le nom d'une ville
    colonne B, le nom d'un batiment
    colonne C, le numéro d'un appartement
    colonne D, le type d'un équipement de cuisine
    colonne C, sa marque
    colonne D, son état

    Il y a une ligne par équipement.

    je souhaiterai transferer ces donnée sur une deuxieme feuille en ayant une seule ligne par appartement et pour chaque équipement de cet apparement : une colonne avec le type, une colonne regroupant la marque et l'état

    je ne suis pas certain de comment devoir procéder et je souhaiterai donc profiter de vos lumières

    Je joins un fichier exemple dans lequel j'ai fait 2 petits tableau "à la main" pour indiquer ce que je souhaite réaliser.

    merci à vous.
    fichier_exemple _tableau.xlsx

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 568
    Par défaut
    Bonjour

    Renommer Tableau4 en Equipements

    Créer une requête PowerQuery à partir de ce tableau

    Ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    let
        Source = Excel.CurrentWorkbook(){[Name="Equipements"]}[Content],
        #"Type modifié" = Table.TransformColumnTypes(Source,{{"Ville", type text}, {"Batiment", type text}, {"appartement no", Int64.Type}, {"équipement", type text}, {"marque", type text}, {"état", type text}}),
        #"Lignes groupées" = Table.Group(#"Type modifié", {"Ville", "Batiment", "appartement no"}, {{"Tabl", each _, type table [Ville=nullable text, Batiment=nullable text, appartement no=nullable number, équipement=nullable text, marque=nullable text, état=nullable text]}}),
        #"Personnalisée ajoutée" = Table.AddColumn(#"Lignes groupées", "Personnalisé", each Table.AddIndexColumn([Tabl],"Idx",1)),
        #"Personnalisé développé" = Table.ExpandTableColumn(#"Personnalisée ajoutée", "Personnalisé", {"équipement", "marque", "état", "Idx"}, {"équipement", "marque", "état", "Idx"}),
        #"Colonnes fusionnées" = Table.CombineColumns(#"Personnalisé développé",{"marque", "état"},Combiner.CombineTextByDelimiter(" - ", QuoteStyle.None),"Marque - Etat"),
        #"Colonnes supprimées" = Table.RemoveColumns(#"Colonnes fusionnées",{"Tabl"}),
        #"Supprimer le tableau croisé dynamique des autres colonnes" = Table.UnpivotOtherColumns(#"Colonnes supprimées", {"Ville", "Batiment", "appartement no", "Idx"}, "Attribut", "Valeur"),
        #"Majuscule à chaque mot" = Table.TransformColumns(#"Supprimer le tableau croisé dynamique des autres colonnes",{{"Attribut", Text.Proper, type text}}),
        #"Colonnes fusionnées1" = Table.CombineColumns(Table.TransformColumnTypes(#"Majuscule à chaque mot", {{"Idx", type text}}, "fr-FR"),{"Attribut", "Idx"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Type"),
        #"Colonne dynamique" = Table.Pivot(#"Colonnes fusionnées1", List.Distinct(#"Colonnes fusionnées1"[Type]), "Type", "Valeur"),
        #"Lignes triées" = Table.Sort(#"Colonne dynamique",{{"Ville", Order.Ascending}, {"Batiment", Order.Ascending}, {"appartement no", Order.Ascending}})
    in
        #"Lignes triées"
    Fichiers attachés Fichiers attachés

  3. #3
    Membre averti
    Homme Profil pro
    architecte
    Inscrit en
    Avril 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : architecte
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2016
    Messages : 38
    Par défaut
    Bonjour et merci pour la réponse.

    je ne conaissais pas PowerQuery. j'ai testé et ça me semble parfait !

    Sais tu si il est possible de faire en powerquery un tableau à partir de 2 tableaux dans lesquelles une colonne reprend les même valeur?

    Bonne journée

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 568
    Par défaut
    Bonjour

    On peut faire tellement de choses avec PowerQuery... Mais pas sûr de comprendre d'où tu pars et où tu veux aller

    Précise en donnant un exemple

  5. #5
    Membre averti
    Homme Profil pro
    architecte
    Inscrit en
    Avril 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : architecte
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2016
    Messages : 38
    Par défaut
    Voici en PJ un fichier avec 2 tableaux.
    Je me demande comment on peut fusionner ces 2 tableaux dans un 3ème à l'aide de PQ (l'acronyme est malheureux)
    Le tableau final devra reprendre les colonnes des deux autres tableaux sans faire de doublon

    merci et bonne soirée
    exemple fusion.xlsx

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 568
    Par défaut
    Bonjour

    Il semble que l'ID des équipements reprenne celui du propriétaire, donc une simple relation de la table Propriétaire avec la table Equipement sur ce champ suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    let
        Source = Excel.CurrentWorkbook(){[Name="proprietaire"]}[Content],
        #"Type modifié" = Table.TransformColumnTypes(Source,{{"id", Int64.Type}, {"batiment", type text}, {"appartement", Int64.Type}, {"porpriétaire", type text}, {"age", Int64.Type}}),
        #"Requêtes fusionnées" = Table.NestedJoin(#"Type modifié", {"id"}, equipement, {"id"}, "equipement", JoinKind.LeftOuter),
        #"equipement développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "equipement", {"equipement"}, {"equipement.1"})
    in
        #"equipement développé"
    Sinon on pourrait utiliser les 2 champs Batiment et Appartement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    let
        Source = Excel.CurrentWorkbook(){[Name="proprietaire"]}[Content],
        #"Type modifié" = Table.TransformColumnTypes(Source,{{"id", Int64.Type}, {"batiment", type text}, {"appartement", Int64.Type}, {"porpriétaire", type text}, {"age", Int64.Type}}),
        #"Requêtes fusionnées" = Table.NestedJoin(#"Type modifié", {"batiment", "appartement"}, equipement, {"batiment", "appartement"}, "equipement", JoinKind.LeftOuter),
        #"equipement développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "equipement", {"id", "equipement"}, {"id equip", "equipement"})
    in
        #"equipement développé"

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/07/2015, 18h34
  2. Réponses: 0
    Dernier message: 16/03/2012, 10h03
  3. afficher une valeur sur une feuille lorsqu'une checkbox est cochée
    Par chrnoe dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2008, 14h39
  4. Réponses: 9
    Dernier message: 04/04/2007, 11h16
  5. Réponses: 8
    Dernier message: 15/05/2006, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo