Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 VBA et Power Query : ecrire des requetes avec variables

Florent74

XLDnaute Nouveau
Bonjour à tous,

Je cherche a importer par vba le contenu de fichiers pdf dans Excel. Le nombre de pages et le nombre de tableaux par pages étant variables. Il s'agit de résultats d'analyses d'eau potable. L'objectif est de pouvoir scinder le pdf contenant plusieurs analyses, chaque analyses faisant un nombre de pages variables, de scinder le pdf en autant de pdf qu'il y a d'analyses, et en les renommant selon plusieurs critères selon la date, le numéro de l'analyse et le point de prélèvement.

Je me suis orienté vers l'importation de sources de données avec Power Query. L'enregistreur de macro n'est pas satisfaisant car il écrit en dur chaque requetes selon le nombre de pages, le nombre de tableaux par page et le nombre de colonne par tableaux.

Je cherche à automatiser tout cela avec VBA mais je n'ai pas assez de connaissances en vba/Power Query pour adapter le code avec des boucles ou variables selon le nombre de pages, de tableaux et de colonnes par tableau. Et je trouve peux de ressource sur les différents forum à ce sujet.

Je dispose de la version d'Adobe. En pièce jointe, un exemple de fichier pdf (ici, le fichier ne comporte qu'une seule analyse sur une page, mais j'aimerais arriver à l'importer automatiquement par Power Query avec en résultat dans Excel, un onglet par page et tableaux).

Merci si vous arrivez à m'éclairer ou m'orienter sur une solution !!
 

Pièces jointes

  • E24.4967.pdf
    103.3 KB · Affichages: 7

chris

XLDnaute Barbatruc
Bonjour

VBA est inutile ou à la marge

Joins au moins 2 autres cas que l'on voit justement tes pdf multipages et multi analyses ainsi qu'un exemple de la restitution attendue
 

jurassic pork

XLDnaute Occasionnel
Hello,
ce n'est pas très clair ce que tu veux faire . Tu veux regénérer des PDF ( scinder le pdf en autant de pdf) ou importer toutes les analyses dans un classeur Excel (un onglet par page et tableaux) ? Je pense que tu ne pourra pas regénérer les PDF avec la mise en page initiale des PDF. Tu parles aussi de renommer les PDF mais dans si c'est une importation dans Excel ce sera le nom de l'onglet qui contiendra ce nom ? Peux-tu nous montrer par rapport au PDF que tu as joint à quoi doit ressembler ce nom. Dans le PDF que tu as joint si il n'y a que les résultats de l'analyse à importer cela ne semble pas trop difficile car ces résultats sont dans une table PQ.
Ami calmant, J.P
 

Florent74

XLDnaute Nouveau
Merci pour votre réponse !!

Voici ci-joint un fichier excel correspondant à l'importation d'un fichier pdf de 2 pages (2 pages pour une analyse). Je souhaiterais automatiser l'importation pour des fichiers de taille variable en nombre d'analyses, donc de pages et obtenir dans le fichier excel autant d'onglet que de pages et tableaux du pdf. Je n'arrive pas à téléhergares les pièces jointes (fichiers excel et pdf, qui sont supérieurs à 1 mO. Est-ce que c'est normal ?
Bonjour

VBA est inutile ou à la marge

Joins au moins 2 autres cas que l'on voit justement tes pdf multipages et multi analyses ainsi qu'un exemple de la restitution attendue
.
Bonjour, je vous remercie pour votre retour !



Effectivement, je peux préciser ma demande car elle comporte deux problèmes distincts.

1er problème : séparation d’un pdf multipages. Je reçois des résultats d’une ou plusieurs analyses dans un fichier pdf. Chaque analyse peut avoir un nombre variables de pages. Cette indication du nombre de pages pour chaque analyse est donné soit par le texte sous le bandeau gris du numéro du rapport d’analyse ("Il comporte x pages"), soit par le pied de page ("Page 1/x).

Je cherche une solution pour automatiser la création de pdf pour chaque analyses contenu dans le pdf principal. Le nom de chaque fichier pdf doit contenir le numéro du rapport (E23.279.1) et le code PSV (0000000007).



Je dispose d’Adobe Pro. Au départ, je pensais utiliser par macro VBA la recherche de mots clefs. J’arrive bien à trouver le mot clé "comporte" par exemple, mais je ne connais pas les commandes pour extraire les caractères suivants un mot clefs.

Je me suis donc tourné vers l’importation du pdf par Power Quéry. L’enregistreur de macro me donne un code qui écrit en dur le nombre de pages, de tableaux et de colonnes pour chaque tableau à importer depuis le fichier d’origine et importe les résultats dans autant d’onglets qu’il y a de pages et de tableau dans le pdf.

Cette solution n’est pas satisfaisante car le nombre de pages et de tableau, ainsi que le nombre de colonne par tableaux est variable selon les pdf d’origine à importer.

Je souhaiterais pouvoir écrire le code me permettant d’importer dans Excel les pages et tableaux contenus dans le pdf d’origine, quels que soient le nombre de pages et de tableau qu’il contient.



2ème problème : je souhaiterais importer de la manière la plus propre possible les pdf unitaires crées dans Excel, de manière à récupérer toutes les informations (numéro d’analyse, code et nom PSV, date, ainsi que tous les paramètres et leurs résultats) pour stocker le tout dans un fichiers excel de gestion des résultats.



Est-ce que vous auriez des pistes de réfléxions ?



J’espère que la problématique est un peu mieux énoncées ?



Merci !!
 

Pièces jointes

  • E23.279.1.pdf
    289.4 KB · Affichages: 2

jurassic pork

XLDnaute Occasionnel
ton dernier fichier PDF n'est pas trop représentatif car il a bien deux pages mais il n'y a rien d'intéressant sur la deuxième page. Il faudrait un fichier dont les résultats s'étalent sur plusieurs pages. Si c'est à cause de la taille des fichiers (limitée dans le forum) tu peux mettre tes fichiers sur un site de transfert et fournir dans le forum un lien vers ces fichiers. J'ai repéré un site intéressant pour faire cela c'est SwissTransfer qui est basé en suisse (avec la sécurité suisse )
Voici un extrait des conditions d'utilisation ( à lire sur le site) :
Cela m'a l'air sérieux sans inscription. Il faut choisir le partage de lien (pas l'email).
J'espère que mon message ne va pas être censuré sachant que je n'ai rien touché de SwissTransfer pour faire la pub du site
 
Dernière édition:

mromain

XLDnaute Barbatruc
Bonjour Florent74, chris, jurassic pork,

En complément d'un jeu de données plus représentatif comme demandé par jurassic pork, il serait intéressant que tu précises quelles sont les informations à récupérer pour chaque analyse.

Sinon, un début de pise avec l'ajout d'une colonne ID_Analyse au contenu du PDF. L'ID est incrémenté à chaque fois qu'on trouve Page 1 :
PowerQuery:
let
    Source = Pdf.Tables(File.Contents("C:\...\E23.279.1.pdf"), [Implementation="1.3"]),
    AddColumnID = 
        let
            ListDataLastCell = List.Buffer(List.Transform(Source[Data], each List.Last(List.RemoveNulls(Record.FieldValues(Table.Last(_)))))),
            ListAnalyseID = List.Accumulate(ListDataLastCell, {}, (s, c) => s & {(List.Max(s) ?? 0) + (if Text.StartsWith(c, "Page 1") then 1 else 0)})
        in
            Table.FromColumns(Table.ToColumns(Source) & {ListAnalyseID}, Table.ColumnNames(Source) & {"ID_Analyse"})
in
    AddColumnID

A+
 

Discussions similaires

Réponses
14
Affichages
343
Réponses
16
Affichages
894
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…