XL 2021 Piloter PDFSam par vba

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Florent74

XLDnaute Nouveau
Bonjour à tous,
Je souhaiterais pouvoir automatiser la division de PDF par VBA Excel en utilisant l'application PDFSam (seul application que mon employeur m'autorise à installer). Savez-vous s'il est possible de piloter PDFSam directement depuis VBA (à la manière d'Adobe Pro par exemple) ?

A défaut, connaissez-vous les commandes et instruction à intégrer dans un fichier shell pour diviser un pdf avec PDFSam ?

Merci pour votre aide !!
 
Bonjour,

J'avais cherché il y a quelques années, et ils disaient déjà à l'époque qu'il fallait utiliser Sejda SDK et du coup j'avais laissé tomber.

PDFsam à dit:
  • Interface de ligne de commande ?
    PDFsam Basic et PDFsam Visual sont tous deux alimentés par Sejda SDK, notre moteur de recherche PDF source ouverte. Sejda SDK dispose d’une interface de ligne de commande appelée sejda-console offrant un grand nombre de tâches PDF à l’aide de ligne de commande.
 
Dernière édition:
Hello,
ça doit être possible avec UiAutomation car avec FlaUiInspect on voit les contrôles de PDFSAM et donc on doit pouvoir les commander :
PDFSamUi.png


mais ce ne doit pas être simple à mettre en oeuvre car il y a pas mal de paramètres à remplir.
Pourquoi faire cela à partir d' Excel ?

Ami calmant, J.P
 
Salut TooFatBoy 😕

Salut Florent74

Tu as combien de documents pas jour à diviser 🤔

De plus pourquoi ne pas le faire directement dans Excel en imprimant page par page...

Bon week-end

Edit : désolé jurassic pork, je n'avais pas actualisé la page avant d'envoyer
 
Hello,
voilà à quoi cela ressemble avec UIAutomation :
VB:
Sub PDFSamAutomation()
Dim c As New CUIAutomation, oPDFSam As IUIAutomationElement
Dim oDesktop As IUIAutomationElement, oBtn As IUIAutomationElement
Dim oPane As IUIAutomationElement, oEdit As IUIAutomationElement
Dim oGroup As IUIAutomationElement, oRbtn As IUIAutomationElement
Shell "D:\Logiciels\PdfSam\PdfSam.exe" 'Lancement Logiciel PDFSam
Set oDesktop = c.GetRootElement
Set oPDFSam = WaitForUiElem(c, oDesktop, "AutoId", "JavaFX1", _
                            TreeScope_Children, 20) ' Recherche de la fenêtre PDFSam TimeOut 20 secondes
Set oBtn = WaitForUiElem2c(c, oPDFSam, "CtrlType", 50000, _
                               "Name", "Découper", TreeScope_Descendants, 2) 'Bouton Découper
GetIacc(oBtn).DoDefaultAction ' clic sur le bouton
Set oPane = WaitForUiElem(c, oPDFSam, "CtrlType", 50033, TreeScope_Children, 2) 'Premier Panneau
Set oEdit = WaitForUiElem(c, oPane, "CtrlType", 50004, TreeScope_Children, 2)
GetIacc(oEdit).SetValue "D:\temp\output.pdf" 'Remplir Fichier PDF à exploiter
Set oGroup = WaitForUiElem(c, oPane, "Name", "Paramètres de découpage", TreeScope_Children, 2)
Set oRbtn = WaitForUiElem(c, oGroup, "Name", "Après les pages suivantes", TreeScope_Children, 2)
GetIacc(oRbtn).DoDefaultAction ' DefaultAction = cocher
Set oEdit = WaitForUiElem(c, oGroup, "CtrlType", 50004, TreeScope_Children, 2)
GetIacc(oEdit).SetValue "1,2,5" 'Remplir avec pages de séparation
Set oGroup = WaitForUiElem(c, oPane, "Name", "Paramètres de sortie", TreeScope_Children, 2)
Set oEdit = WaitForUiElem(c, oGroup, "CtrlType", 50004, TreeScope_Children, 2)
GetIacc(oEdit).SetValue "D:\temp\pdf" 'Remplir Dossier de sortie
Set oBtn = WaitForUiElem(c, oPane, "Name", "Exécuter", TreeScope_Children, 2)
GetIacc(oBtn).DoDefaultAction 'clic sur le bouton Exécuter
End Sub
1 - On lance PDFSam
2 - On cherche la fenêtre principale de PDFSam
3 - On clique sur le bouton Découper
4 - On attend que le panneau de Découper apparaisse
5 - On remplit le champ du chemin du PDF source
6 - On clique sur le bouton radio Après les pages suivantes
7 - On remplit le champ des pages suivantes
8 - On remplit le champ du répertoire de sortie
9 - On clique sur le bouton Exécuter

Ami calmant, J.P
 
1 - On lance PDFSam
2 - On cherche la fenêtre principale de PDFSam
3 - On clique sur le bouton Découper
4 - On attend que le panneau de Découper apparaisse
5 - On remplit le champ du chemin du PDF source
6 - On clique sur le bouton radio Après les pages suivantes
7 - On remplit le champ des pages suivantes
8 - On remplit le champ du répertoire de sortie
9 - On clique sur le bouton Exécuter
Du coup, c'est quoi la différence par rapport à l'utilisation normale de PDFsam tout seul ?
 
Si ça fait comme un enregistreur de commandes et qu'on peut réutiliser ledit "enregistrement" sur plusieurs fichiers, c'est intéressant.
Ben pour le moment c'est fait "manuellement" mais il y a autoit qui le fait mais c'est un logiciel indépendant . Cependant on peut appeler un script autoit depuis le vba en passant des paramètres.
UIAutomation est disponible dans VBA (référence UIAutomationclient) mais ce n'est pas facile à mettre en oeuvre.
 
Hello,
voilà à quoi cela ressemble avec UIAutomation :
VB:
Sub PDFSamAutomation()
Dim c As New CUIAutomation, oPDFSam As IUIAutomationElement
Dim oDesktop As IUIAutomationElement, oBtn As IUIAutomationElement
Dim oPane As IUIAutomationElement, oEdit As IUIAutomationElement
Dim oGroup As IUIAutomationElement, oRbtn As IUIAutomationElement
Shell "D:\Logiciels\PdfSam\PdfSam.exe" 'Lancement Logiciel PDFSam
Set oDesktop = c.GetRootElement
Set oPDFSam = WaitForUiElem(c, oDesktop, "AutoId", "JavaFX1", _
                            TreeScope_Children, 20) ' Recherche de la fenêtre PDFSam TimeOut 20 secondes
Set oBtn = WaitForUiElem2c(c, oPDFSam, "CtrlType", 50000, _
                               "Name", "Découper", TreeScope_Descendants, 2) 'Bouton Découper
GetIacc(oBtn).DoDefaultAction ' clic sur le bouton
Set oPane = WaitForUiElem(c, oPDFSam, "CtrlType", 50033, TreeScope_Children, 2) 'Premier Panneau
Set oEdit = WaitForUiElem(c, oPane, "CtrlType", 50004, TreeScope_Children, 2)
GetIacc(oEdit).SetValue "D:\temp\output.pdf" 'Remplir Fichier PDF à exploiter
Set oGroup = WaitForUiElem(c, oPane, "Name", "Paramètres de découpage", TreeScope_Children, 2)
Set oRbtn = WaitForUiElem(c, oGroup, "Name", "Après les pages suivantes", TreeScope_Children, 2)
GetIacc(oRbtn).DoDefaultAction ' DefaultAction = cocher
Set oEdit = WaitForUiElem(c, oGroup, "CtrlType", 50004, TreeScope_Children, 2)
GetIacc(oEdit).SetValue "1,2,5" 'Remplir avec pages de séparation
Set oGroup = WaitForUiElem(c, oPane, "Name", "Paramètres de sortie", TreeScope_Children, 2)
Set oEdit = WaitForUiElem(c, oGroup, "CtrlType", 50004, TreeScope_Children, 2)
GetIacc(oEdit).SetValue "D:\temp\pdf" 'Remplir Dossier de sortie
Set oBtn = WaitForUiElem(c, oPane, "Name", "Exécuter", TreeScope_Children, 2)
GetIacc(oBtn).DoDefaultAction 'clic sur le bouton Exécuter
End Sub
1 - On lance PDFSam
2 - On cherche la fenêtre principale de PDFSam
3 - On clique sur le bouton Découper
4 - On attend que le panneau de Découper apparaisse
5 - On remplit le champ du chemin du PDF source
6 - On clique sur le bouton radio Après les pages suivantes
7 - On remplit le champ des pages suivantes
8 - On remplit le champ du répertoire de sortie
9 - On clique sur le bouton Exécuter

Ami calmant, J.P
Bonjour J.P. C'est pour mon information. je préférerai savoir quels sont les prérequis, quel est l'environnement de développement : Visual Studio code? Ou sont les éléments de configuration UIAutomation, FlaUiInspect, .... Comment installe t'on PdfSam Basic pour le piloter? Quelle formation dois-je suivre pour maitriser ces outils? Cdlt. Bon Week End
 
Bonjour J.P. C'est pour mon information. je préférerai savoir quels sont les prérequis, quel est l'environnement de développement : Visual Studio code? Ou sont les éléments de configuration UIAutomation, FlaUiInspect, .... Comment installe t'on PdfSam Basic pour le piloter? Quelle formation dois-je suivre pour maitriser ces outils? Cdlt. Bon Week End
PdfSam Basic est disponible gratuitement sur le site de PDFSam. FlaUIInspect sur github. Pour utiliser UIAutomation en VBA il faut cocher UIAutomationclient dan Outils/Références de l'Editeur VBA. Recherche dans les discussions sur XLD , le terme UIAutomation car c'est ici que pour moi cela a commencé.
 
Bonjour à tous,
Je souhaiterais pouvoir automatiser la division de PDF par VBA Excel en utilisant l'application PDFSam (seul application que mon employeur m'autorise à installer). Savez-vous s'il est possible de piloter PDFSam directement depuis VBA (à la manière d'Adobe Pro par exemple) ?

A défaut, connaissez-vous les commandes et instruction à intégrer dans un fichier shell pour diviser un pdf avec PDFSam ?

Merci pour votre aide !!
Bonjour Florent, Si comme moi, tu ne peux pas utiliser PdfSam si facilement, ce que j'ai déjà essayé avec mon faible niveau comparé à J.P. et d'autres. J'avais fait des applis sur VB6 puis VBA pour extraire des pages, fusionner des Pdf, avec PDFTK , mais je n'ai jamais annoté un PDF ce qui nécessite Adobe Pro. J'avais aussi fait un essai assez positif en powershell avec les bibliothèques ITextSharp mais sans aucune intégration.
 
Si comme moi, tu ne peux pas utiliser PdfSam si facilement, ce que j'ai déjà essayé avec mon faible niveau comparé à J.P. et d'autres.
Ah, je me reconnais là. 😉

Sache que PDFsam en lui-même est très simple à utiliser puisqu'il suffit de donner les numéros des pages après lesquelles on veut couper le document initial.
Même moi j'arrive à l'utiliser. C'est pour dire si c'est simple !
 
Salut TooFatBoy 😕

Salut Florent74

Tu as combien de documents pas jour à diviser 🤔

De plus pourquoi ne pas le faire directement dans Excel en imprimant page par page...

Bon week-end

Edit : désolé jurassic pork, je n'avais pas actualisé la page avant d'envoyer
Salut wDogg66 !! Et merci pour ta réponse !!

Voici l'explication de mon projet : je reçois des pdf contenant des résultats d'analyse d'eau. Chaque pdf contient plusieurs analyses, chaque analyses comportant un nombre de pages variables. L'objectif est double : récupérer sur Excel les informations des analyses (date, lieu, type d'analyse ....) et les résultats (parametres analysés et valeurs) et séparer le pdf en autant de pdf qu'il y a d'analyses, en renommant chaque pdf avec les informations de l'analyse (date et lieu).

Pour cela, et avec l'aide du forum (merci !!), j'ai un fichier Excel qui utilise Power Query pour récupérer les informations de chaque analyses, puis une macro qui classe les informations et traite automatique le fichier PDF via Adobe Pro (testé sur mon ordinateur perso). Jusque là, toute fonctionne. Sauf que mon employeur ne veut pas acheter une licence Adobe Pro et me propose d'utiliser PDFSam. C'est pourquoi j'essaye de chercher une solution pour piloter PDFSam par VBA.

Qu'est-ce que tu entends par "diviser le pdf dans Excel en emprimant page par page" ?
 
Ah, je me reconnais là. 😉

Sache que PDFsam en lui-même est très simple à utiliser puisqu'il suffit de donner les numéros des pages après lesquelles on veut couper le document initial.
Même moi j'arrive à l'utiliser. C'est pour dire si c'est simple !
Salut TooFatBoy !! Merci pour ta réponse !!

Dans mon cas, j'essaye d'automatiser le traitement des pdf par VBA Excel et Power Query, pour intégrer les données des PDF, et les renommer, les séparer et les déplacer dans les répertoires ciblés. Je voudrais éviter l'étape manuelle de traitement séparation et renommage des PDF !!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
3 K
C
Réponses
3
Affichages
7 K
Antoine
A
Retour