XL 2019 TCD - requête

pierrot63270

XLDnaute Nouveau
Bonjour,

J’essaie de créer un TCD à partir de 2 requêtes : la première contient des postes de dépenses et la seconde des sous-postes.
Le problème réside dans le fait qu'un des postes n'a pas de sous-poste de dépense. De ce fait, je retrouve les sous postes en face de chaque poste avec les montants des postes et des sous postes.
Ce que je souhaite, ce serait avoir le montant de chaque poste, et en face le détail des sous-postes, quand ils existent, et des champs sous-postes vides en face du poste quand il n’y en a pas.
In fine, je voudrais créer un modèle qui à l’ouverture permet de choisir le n° dossier, ce qui permettrait d’actualiser automatiquement le TCD.

Précisions : les données que je récupère sont des fichiers CSV issus de flux sur lesquels je n’ai pas la main.

Merci d’avance pour votre aide, parce que là je sèche.

Pierrot
 

Pièces jointes

  • Annexe 1_Plan de financement_.xlsx
    347.8 KB · Affichages: 10

pierrot63270

XLDnaute Nouveau
Bonjour,

merci de ta réponse. Utilisez Power Query pourquoi pas, mis il faut vraiment que je trouve des tuto pour avancer. Je vais gratter sur ED voir ce que je trouve :) Je trouve que c'est peu clair d'utilisation... après je ne me suis pas trop penché dessus non plus.

Donc c'est bien une requête Msquery issu du fichier joint RequetePF (où j'ai fait des requêtes via PowerQuery je pense). Je sais pas top les requêtes de requêtes.
Je joins également des copies écran des liaisons sous msquery.
Merci de ton aide.
Bonne journée

Pierrot
 

Pièces jointes

  • requetessposte.JPG
    requetessposte.JPG
    132.4 KB · Affichages: 10
  • Requeteposte.JPG
    Requeteposte.JPG
    150 KB · Affichages: 11
  • RequetePF.xlsx
    314.6 KB · Affichages: 4

chris

XLDnaute Barbatruc
Bonjour

Sans accès aux fichiers source, on ne peut faire grand chose

De façon générale dans une requête, quel que soit l'outil utilisé, il faut orienter la requête pour avoir tous les postes qu'il y ait ou non des sous-postes.

Dans MsQuery, double cliquer sur le "fil" entre poste et sous-poste et suivre ce qui est sur l'image. On voit alors une flèche au bout du "fil"

Dans PowerQuery c'est à indiquer explicitement en bas de la fenêtre de définition d'une fusion de tables.

RequeteLeft.jpg
 

merinos

XLDnaute Accro
Bonjour,

Il y a un moyen de contourner le probleme:

Pourquoi y a t'il un probleme ?
Parcequ'il n'y a pas de sous catagorie a une catégorie.

Solution: Créer une sous catégorie a toutes les catégories.

Comment?
a partir de la liste des Sous catégorie, créer une liste ne contant que les catégories,
merger cette liste avec les catégories , puis filtrer les catégories n'ayant pas de sous catégories, copier les colonne catégorie & la nomer"sous catégorie"
créer une "sous catégorie2" à partir de la première. y ajouter celles obtenues plus haut.

Merinos
 

pierrot63270

XLDnaute Nouveau
Bonjour,

merci de vos retours.
@chris
Ci-joint les fichiers source
Je vais regarder à nouveau le "fil". J'avais essayer avec les différentes options mais n'avais rien trouver de bien concluant jusqu'à présent.

@merinos
Merci de ta proposition, mais je ne peux pas l'utiliser. Je dois faire des exports réguliers ce qui implique de refaire la manip à chaque fois, et les sous-catégories ne sont pas forcément "fixes" puisque chaque structure peut saisir ses sous-catégories, et je n'ai malheureusement pas la main sur ce que les structures peuvent ou pas saisir.

Merci et bon après-midi.

Pierrot
 

Pièces jointes

  • fichiers_source.zip
    90.4 KB · Affichages: 2

chris

XLDnaute Barbatruc
Bonjour à tous

Ci-joint exemple avec
un onglet Choix pour préciser :
  • le chemin aux fichiers
  • le N° de dossier choisi
un onglet TCD : le TCD n'est pas construit mais utilise la requête posteDepense qui est filtrée sur le N° de dossier et croisée en jointure externe avec les sousPostes.
Je n' ai récupéré que 3 champs de la table sousPostes mais tu peux modifier et choisir ceux que tu veux...
 

Pièces jointes

  • RequetePF2.xlsx
    50.6 KB · Affichages: 6

pierrot63270

XLDnaute Nouveau
Bonjour Chris,

Merci de ton retour.
Je viens d'essayer de tester ta solution... mais en mettant le chemin qui mène aux données sur le serveur, notamment sur la requête posteDepense, PowerQuery me dit qu'il ne trouve pas la colonne "posteDepensePk" de la table. Or, quand j'ouvre le CSV pour voir, la colonne y est bien avec le bon nom de champ. Une idée de pourquoi ça coince ?
Et on est bien d'accord que les 5 requêtes présentes dans le fichier vont toutes chercher dans le même répertoire/dossier sur le serveur ?
Merci.
Bonne journée.

Pierrot
 

chris

XLDnaute Barbatruc
RE

Oui

Le chemin est à changer dans l'onglet Choix en n'oubliant pas le \ final

Tes csv posteDepense et sousPosteDepense sont-ils bien identiques à ceux transmis ? PowerQuery est sensible à la case donc le moindre changement d'intitulé peut jouer.

Tu ne précises pas sur quelle ligne de la requête apparait le souci.

Par ailleurs as-tu essayé d'orienter la liaison dans ton MsQuery comme tu l'avais dit ?
 
Dernière édition:

pierrot63270

XLDnaute Nouveau
Rebonjour Chris,

j'ai pensé au \ final
Les fichiers sont bien identiques, hormis le fait que j'ai pris les fichiers complets, donc largement plus de données. mais je ne pense pas que cela influe.

L'erreur est sur la ligne Type modifié (ci-dessous) la formule
= Table.TransformColumnTypes(#"En-têtes promus",{{"posteDepensePk", type text}, {"descriptif", type text}, {"directIndirect", type text}, {"investissementFonctionnement", type text}, {"materielImmateriel", type text}, {"montant", type number}, {"precisionMethodecalcul", type text}, {"tauxMontantMethodecalcul", type number}, {"tauxVariationAccepte", type number}, {"typeTaxe", type text}, {"categorieDepenseFk", Int64.Type}, {"methodeCalculFk", Int64.Type}, {"operationVersionFk", Int64.Type}, {"uuid", type text}, {"sousCategorieDepenseFk", Int64.Type}, {"libelle", type text}, {"titulaireFk", Int64.Type}, {"estMarchePublic", type text}, {"numeroMarchePublic", type text}, {"libelleMarchePublic", type text}, {"lotMarchePublic", type text}, {"typeMarchePublic", type text}, {"montantActeEngagementMarchePublic", type number}, {"lotInfructueux", type text}, {"motivation", type text}, {"estCtrTypeMarchePublic", type text}, {"explicationCtrTypeMarchePublic", type text}, {"estCtrRegSpecCommandePublique", type text}, {"explicationCtrRegSpecCommandePublique", type text}, {"pointControleMpFk", Int64.Type}, {"pointControleAcFk", Int64.Type}, {"idFonctionnelOperation", type text}, {"versionFonctionnelleOperation", Int64.Type}, {"", type text}})

Pour la liaison, j'ai repris ça ce matin, ça fonctionne en prenant ton exemple. Plus qu'à trouver la bonne présentation dans le TCD.
Donc je peux partir là-dessus, en attendant de voir si la solution que tu me proposes est plus opérationnelle et logique que la mienne.

Merci
Bonne journée
Pierrot
 

chris

XLDnaute Barbatruc
RE

Oui c'est curieux si le champ a bien le même intitulé...

A noter que tes CSV transmis avaient un séparateur tabulation et un codage 1252
alors que tes requêtes étaient paramétrées sur du ; et UTF8 : cela peut tout changer...
 

Statistiques des forums

Discussions
314 647
Messages
2 111 531
Membres
111 191
dernier inscrit
Assjmka