Power Query Simplification code M (issu de l'assistant PQ) ou autre syntaxe pour ce résultat

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Situation de départ
Il y a N fichiers PDF(*) dans un dossier SharePoint
Depuis Sharepoint, j'ai fait Exporter vers Excel et j'obtiens un fichier owssvr.iqy
(voir explications ici sur ce qu'est ce fichier)
j'ouvre alors ce fichier *.iqy dans Excel et j'obtiens le contenu du dossier Sharepoint dans un tableau structuré

(*) le nom des fichiers PDF est normalisé: ils sont tous nommés sur le schéma suivant
NOM PRENOM_1234_Libellé_JJ.MM.AA_JJ.MM.AA_500E25.pdf

Ci-dessous code M actuel généré par l'assistant de PQ
PowerQuery:
let
    Source =Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("bdJNa8QgEAbgv1Jy3oT5cNTx7q3dlmJP20Uo3UJhD730/1cXJXUTkOQ9PbwzejpNx+enh5fXWH6Yj2/l8/j9cble338BLooZ/FIOmYy2B/HRyfLz+TUdJgIyM9BMklCCkQAwnQ//VaoqDSpl0IYxtkAk8d60CVxg3ppcTR5MzggLuFtB1wIpbUyXwAfc6WmqaQazUL0eml5YdGP6BBrIbk2ppgymZKQ+cl+CIRvJ3auakALuTG+ragfVZuTb0JzJtGCUI/Oq8gzlYL2nvfldVd2gunVs6rcvFqLA0LXWrereBnxV/aD68oJaRdQWLLl435QT+l1Tq6mDqevzJG7BqoneDE2LalJZadvq+Q8=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [NOM = _t, Modifié le = _t]),
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"Modifié le", type datetime}}),
    #"Lignes filtrées" = Table.SelectRows(#"Type modifié", each Date.IsInCurrentYear([Modifié le])),
    #"Lignes filtrées1" = Table.SelectRows(#"Lignes filtrées", each Text.EndsWith([NOM], ".pdf")),
    #"Fractionner la colonne par délimiteur" = Table.SplitColumn(#"Lignes filtrées1", "NOM", Splitter.SplitTextByDelimiter("_", QuoteStyle.Csv), {"NOM.1", "NOM.2", "NOM.3", "NOM.4", "NOM.5", "NOM.6"}),
    #"Colonnes renommées" = Table.RenameColumns(#"Fractionner la colonne par délimiteur",{{"NOM.1", "IDENTITE"}, {"NOM.2", "NUMERO"}, {"NOM.3", "LIBELLE"}, {"NOM.4", "Début"}, {"NOM.5", "Fin"}, {"NOM.6", "Montant"}}),
    #"Type modifié1" = Table.TransformColumnTypes(#"Colonnes renommées",{{"Début", type date}, {"Fin", type date}}),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Type modifié1", "NB JOURS", each (Duration.Days([Fin]-[Début])+1)),
    #"Valeur remplacée" = Table.ReplaceValue(#"Personnalisée ajoutée",".pdf","",Replacer.ReplaceText,{"Montant"}),
    #"Valeur remplacée1" = Table.ReplaceValue(#"Valeur remplacée","E",",",Replacer.ReplaceText,{"Montant"}),
    #"Type modifié2" = Table.TransformColumnTypes(#"Valeur remplacée1",{{"Montant", type number}}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Type modifié2",{"Modifié le"})
in
    #"Colonnes supprimées"
J'ai inclu un petit exemple avec la fonction EncodeSourceTable de @mromain

Pour ma gouverne et par curiosité, j'aimerai étudier vos propositions de code M pour arriver au même résultat (avec moins d'étapes ou avec un code M épuré)

Merci d'avance aux PQristes qui passeront dans ce fil.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Merci @mromain pour tes recherches et ce code M (que je mets au chaud dans ma besace)

Parallèlement, j'ai trouvé la solution pour lever la limitation des 100 lignes
Voici l'URL par défaut affichée dans le navigateur (légèrement altérée ici pour anonymisation)
C'est cette URL utilisée avec PQ qui n'affiche que 100 lignes
Ci-dessous l'affichage par défaut
Ruban_SP.png
La subtilité était de pas s'arrêter sur le fait que le contrôle Modifier l'affichage soit désactivé.
Il fallait juste créer son propre affichage (avec Créer un affichage)
Ce qui permet notamment les options ci-dessous
Reglages.png
Une fois, cette affichage créé, l'URL devient
Et là, avec cette URL copié/collé dans PQ, j'ai toutes les lignes

Par contre, j'ai constaté un truc bizarre avec PoweBI Desktop
Avec PBI, j'ai également une demande d'authentification si j'utilise Depuis Dossier Sharepoint
Et j'ai cette erreur, si je fais A partir du web en copiant l'URL de l'affichage personnalisé
Erreur_BI.PNG
Par contre si je créé une requête vide et que je copie le code M que j'ai utilisé dans Excel
(toujours avec l'URL affichage personnalisé)
(ci-dessous je me suis arrêté à l'étape Source sur cette copie écran)
TestOK_PBI_Req_Vid.png
Pas de problème, et l'import se fait bien dans PBI comme c'était le cas dans Excel

Là aussi, je ne comprends pas pourquoi ca ne fonctionne pas dans le 1er cas mais dans le second
Alors l'URL utilisée est strictement la même dans les deux cas.

EDITION -> @mromain
J'ai testé ton code M du message#30
Et j'ai ce message
MessageXLD.PNG
J'ai coché sur Ignorer et j'ai bien les 5 pages d'XLD
J'ai aussi cliqué sur le lien qui s'affiche sur l'image
Quels paramètres conseilles-tu ?
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Bonsoir @Cousinhub
Je n'ai pas de ?web=1 d'ans l'URL
Et PQ ou PBi précise qu'il veut une URL racine Sharepoint
Sinon ils veulent pas aller plus loin.

En relisant la page Microsoft, et comme l'a dit @mromain dans son dernier message, apparemment c'est normal, cette histoire d'authentication

Par contre je ne comprends toujours pas ce que je décris dans [Test PowerBi]

Pour résumer:
J'ai trois méthodes qui fonctionnent
1) Exporter vers Excel -> fichier *.iqy
2) A partir du Web -> l'URL présente dans le fichier *.iqy
3) A partir du Web -> L'URL de l'affichage personnalisé (cf message#31)

Par contre aucune syntaxe code M lié à SharePoint
De mémoire, j'ai souvent un message d'erreur
Erreur 400 Bad request

Pourtant, j'indique comme URL : http://ShareXpointX/sites
(donc le même début d'URL qui fonctionne avec les autres méthodes)

NB: A la place de ShareXpointX, je mets le nom réel.
 

Amilo

XLDnaute Accro
Bonjour @Staple1600 , le forum,
@Amilo
Tu peux aussi regarder, stp, si dans ta version, tu as ce bouton Exporter vers Excel
Désolé pour le retour tardif,
Je passait juste pour vous répondre à votre question sur la version SharePoint,
Nous avons l'Edition d'abonnement SharePoint Server 2019 dans Microsoft 365.
Pour le ruban, je retrouve très peu d'icônes similaires à ceux de votre capture notamment le bouton "Exporter vers Excel" mais pas celui de Outlook.

Cordialement
 

Statistiques des forums

Discussions
312 330
Messages
2 087 351
Membres
103 526
dernier inscrit
HEC