Toutes mes réponses sur les forums
-
AuteurMessages
-
Stéphane Lorin
ParticipantBonjour
Vous pourriez éventuellement utiliser la fonction Text.Combine au lieu du “&” pour concaténer des champ sans tenir compte des “null” : Text.Combine({[Colonne1],[Colonne2]},””)
La fonction List.Sum ne tient pas compte des “null”. Avec cette fonction, 3 + null = 3 et null – 4 = -4
Pour l’addition : List.Sum({[Colonne3],[Colonne4]})
Pour la soustraction : List.Sum({[Colonne3],-[Colonne4]})Attention, pour les produits et les divisions, List.Product assimile les “null” à des 1 donc 3 * null = 3 et null / 4 = 0,25
Pour un produit : List.Product({[Colonne3],[Colonne4]})
Pour une division : List.Product({[Colonne3],1/[Colonne4]})Stéphane
Attachments:
You must be logged in to view attached files.Stéphane Lorin
ParticipantBonjour
Pas besoin d’index, de fusion, … la solution passe par un regroupement des lignes similaires (Date, Titre, Société, Organisateur) et par l’agrégation “toutes les lignes” (le dernier choix dans la liste déroulante). La nouvelle colonne que j’ai nommée “Enregistrements” contient toutes les lignes de chaque groupement.
Ensuite, un tout petit peu de code M, avec la sélection de la colonne “Participant” de l’ensemble des lignes extraites à l’étape précédente. Soit l’ajout d’une colonne personnalisée et le code : [Enregistrements][#”Participant “]. Attention, vous avez un caractère espace d’où le #”…”
Vous obtenez maintenant une liste avec tous les participants.
Dernière étape avec l’extraction des valeurs de cette liste (double flèche en haut de la colonne), j’ai choisi le séparateur “, ”Si vous ne voulez que les 3 premiers participants et non tous les participants, vous modifiez l’étape 2 avec : List.FirstN([Enregistrements][#”Participant “],3)
Cordialement
Attachments:
You must be logged in to view attached files.Stéphane Lorin
ParticipantBonjour
Voici une formule qui renvoie le résultat attendu en plage F7:F21en F7 =SIERREUR(SI(OU(C7=”vide”;C7=””);F6;(MIN.SI.ENS(C:C;C:C;”>”&C7)-C7)/(EQUIV(MIN.SI.ENS(C:C;C:C;”>”&C7);C:C;0)-LIGNE(C7)));””)
partant du principe que votre compteur est croissant,
MIN.SI.ENS(C:C;C:C;”>”&C7) renverra le prochain compteur renseigné
EQUIV(MIN.SI.ENS(C:C;C:C;”>”&C7);C:C;0)-LIGNE(C7) renverra le nombre de lignes entre ce prochain compteur et l’actuel donc le nombre de jours
le ratio donne la moyenne quotidienne
Si le compteur est =”vide” ou pas renseigné, on écrit la valeur de la cellule précédente (donc la moyenne)
enfin, en cas d’erreur, on met un chaîne vide “”Cordialement
StéphaneStéphane Lorin
ParticipantBonjour
Sans voir les fichiers, il est impossible de savoir pourquoi vous avez 8 lignes en erreur.
Evidemment, il ne faut pas déposer un fichier confidentiel sur un forum public.Sûrement que 8 lignes n’ont pas le même format. Cela m’arrive par exemple avec des fichiers de facturation fournisseurs qui ont des en-têtes et des lignes différentes.
Il faut donc analyser le fichier avant sous excel. Pour ma part, j’utilise aussi NotePad++ pour voir la structure des fichiers de ce type.
Il faudra peut-être faire 2 imports, un pour les lignes “normales” et un pour les 8 lignes différentes.
CordialementStéphane
Stéphane Lorin
ParticipantBonjour
Une proposition que j’utilise pour mes propres données qui ne sont pas structurées de la même façonJ’ai reproduit ma méthode dans un fichier ci-joint.
Comme le suggère Sophie :
– une table de correspondance par “type” d’import (l’ordre des colonnes et leur nom)
– la liste des sources avec pour chacune le “type” d’importEnsuite je ne transpose pas les lignes/colonnes mais je descends les titres de ma table de correspondance, je filtre sur le type, j’intervertis l’ordre des lignes et je remonte les titres avant d’ajouter la table avec les données.
J’applique la fonction ainsi créée pour fusionner l’ensemble des données en une synthèse.Evidemment à adapter suivant vos données et la provenance de vos sources qui ne sont a priori pas des tableaux contenus dans un fichier
Cordialement
StéphaneAttachments:
You must be logged in to view attached files.30 mars 2020 à 11 h 31 min en réponse à : Export liste utilisateurs : "Sécurité" et "Autorisation" #62836Stéphane Lorin
ParticipantSophie
J’ai mis en oeuvre la solution proposée par AlexanderK79 dans le lien que vous proposez et j’ai obtenu la liste des autorisations. parfait !Par contre, c’est évidemment une autre syntaxe pour les règles RLS.
J’ai finalement utilisé la fonction “inspecter” de Chrome, j’ai copié/collé l’élément “<div class=”rowLevelSecurityMembers” ” sous Excel
Avec Power query il est facile d’obtenir les noms et prénoms de chacun en constatant que le texte est structuré de la sorte :
<span ng-bind=”::user.displayName”>Nom, Prénom</span>
il faut juste exporter un par un les “rôles” (j’ai en que 6, ça va !)Peut-être qu’une prochaine version de PowerBI permettra l’export de ces infos plus facilement
Un grand merci à vous
Stéphane
Stéphane Lorin
ParticipantMerci de votre retour.
Dans mon second cas, voici une formule un peu plus simple pour savoir si la référence possède une ligne contenant le mot “VENTE” :
List.Count(List.FindText([Données][Libellé],”VENTE”))>0
List.FindText créera une liste avec les libellés contenant ce mot et List.Count >0 identifiera les références pour lesquelles cette liste n’est pas vide.Stéphane
Stéphane Lorin
ParticipantBonjour
Je vous propose 2 solutions– la première assez simple à mettre en oeuvre consiste à créer une table intermédiaire des références dont un des libellés contient le mot “VENTE” : par filtre “Text.Contains” puis suppression des doublons
Puis de fusionner cette table avec la Source et de développer la référence.
Si “null” c’est que la référence ne contient pas le mot “VENTE”– la seconde pas plus longue, sans table intermédiaire mais un peu plus complexe, consiste à regrouper les lignes par référence, puis à identifier celles dont une des lignes contient le mot recherché par la formule
List.Contains([Données][Libellé],”VENTE”, (x as text, y as text)=>Text.Contains(x, y)))
qui renvoie “TRUE” ou “FALSE”
puis de “développer” les colonnes groupées à la première étape.référence sur les “equationCriteria” dans les fonctions de listes qui multiplient les possibilités de comparaison sur
Cordialement
Stéphane
Attachments:
You must be logged in to view attached files.Stéphane Lorin
ParticipantBonjour
Vous pouvez définir l’affichage des cellules en erreur d’un TCD à vide dans les options du tableau croisé en cochant la case “Pour les valeurs d’erreur afficher : ” du sous-menu “Disposition et mise en forme”.
Avec un champ calculé vous pouvez utiliser un =SIERREUR(..;) ou =SIERREUR(..;0) pour afficher un 0 et non votre #DIV/0!. Ensuite une mise en forme personnalisée “# ##0;-# ##0;;” permettra de ne pas afficher les valeurs 0. (un SIERREUR(…;””) génère un #VALEUR!)
Enfin, dernière possibilité, une mise en forme conditionnelle appliquée à “toutes les cellules contenant les valeurs ‘somme de coût moyen’ ” avec la formule =ESTERREUR(O8) en police blanc sur fond blanc permettra de masquer visuellement les erreurs.
Cordialement
StéphaneStéphane Lorin
ParticipantBonjour
Je propose de sauvegarder vos commentaires dans une table intermédiaire.
Quand vous actualiserez vos données, les commentaires précédents seront repris par fusion avec cette table de sauvegarde et vous pouvez en ajouter ou les modifier
Voir un exemple ci-jointEgalement un exemple un peu plus complexe avec sauvegarde des commentaires historique après actualisation d’une nouvelle table. Le tout avec uniquement des fusions et des ajouts de tables.
Cordialement
Attachments:
You must be logged in to view attached files.Stéphane Lorin
ParticipantBonjour
Une suggestion : n’est-il pas plus simple d’exclure dès le départ ces données “en dehors des clous” via PowerQuery (colonne conditionnelle ou filtre) ou avec une mesure DAX ?
Cordialement
Stéphane14 février 2020 à 2 h 54 min en réponse à : Importer des fichiers avec des colonnes differentes #61187Stéphane Lorin
ParticipantBonjour
Il faut en effet dépivoter les colonnes mais en choisissant “supprimer le tableau croisé dynamique des autres colonnes” en ayant d’abord sélectionné les colonnes “date” et “nom”. Comme ça peu importe le titre de vos colonnes “Gains”.
StéphaneAttachments:
You must be logged in to view attached files.Stéphane Lorin
ParticipantBonjour
Vous pouvez directement fusionner votre table avec elle-même sur le champ N° et développer la colonne montant en agrégé.
StéphaneAttachments:
You must be logged in to view attached files.3 février 2020 à 6 h 21 min en réponse à : Requête : Transposer dans nouvelle colonne (Nombre de ligne variable) #60878Stéphane Lorin
ParticipantBonjour
Voici un fichier avec une réponse en trois temps
– un temps pour ajouter un index afin :
– d’identifier chaque nouveau “dossier ” suivant l’index de la ligne “Année” qui est ensuite recopié vers le bas
– d’identifier la ligne où apparaissent les en-têtes de vos colonnes : Réf inter., BUPC, Projet… (index 8 pour ligne 9 du csv car l’index commence à 0 )
– d’identifier la ligne où apparaissent les en-têtes de vos colonnes : Type, RG Prêt, DPT Prêt… (index 12 pour ligne 13)– un temps pour traiter les en-têtes en utilisant les colonnes dynamiques avec l’option avancée “ne pas agréger”
– un temps pour traiter les lignes que j’ai décomposé en 2 sous-étapes pour les lignes “réf. intern” et pour les lignes “type”. Dans cette étape je convertis en numérique les lignes en constatant que les 1, 2 ou 3 correspondent aux “Réf inter.” et que les 0 correspondent aux “Type” (à la ligne 45 du .csv)
Puis une fusion de l’ensemble
Cela demande sûrement quelques adaptations mais c’est vraiment rapide à mettre en place
Cordialement
Stéphane
Attachments:
You must be logged in to view attached files.Stéphane Lorin
ParticipantBonjour
Je ne peux vous répondre sur votre première question mais pour avoir plus de 2 critères OR il faut utiliser || voir ici : https://docs.microsoft.com/fr-fr/dax/or-function-dax
Et pour le AND c’est &&
Stéphane -
AuteurMessages