XL 2016 Extraire des données d'un pdf et les copier dans excel

gali2

XLDnaute Nouveau
Bonjour
Je souhaiterais rechercher dans toutes les pages d’un PDF les chaînes de caractères spécifiées, extrait le texte entre celles-ci et copie le contenu dans un classeur Excel avec un collage spécial en feuille de calcul XML.

J'ai Adobe Acrobat Pro

ci dessous ma macro que j'utilise


Sub ExtractTextBetweenStringsToXML()
Dim AcroApp As Object
Dim AcroDoc As Object
Dim jsObj As Object
Dim pdfPath As String
Dim textContent As String
Dim startIndex As Long, endIndex As Long
Dim extractedText As String
Dim ws As Worksheet
Dim currentPage As Integer, totalPages As Integer
Dim outputRow As Integer

' Initialiser la feuille cible
Set ws = ThisWorkbook.Sheets(1) ' Modifiez si nécessaire
outputRow = 1 ' Ligne où commencer à écrire dans Excel

' Sélectionner un fichier PDF
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Sélectionnez un fichier PDF"
.Filters.Clear
.Filters.Add "Fichiers PDF", "*.pdf"
If .Show = -1 Then
pdfPath = .SelectedItems(1)
Else
MsgBox "Aucun fichier sélectionné.", vbExclamation
Exit Sub
End If
End With

' Ouvrir Adobe Acrobat
Set AcroApp = CreateObject("AcroExch.App")
Set AcroDoc = CreateObject("AcroExch.PDDoc")

' Charger le fichier PDF
If Not AcroDoc.Open(pdfPath) Then
MsgBox "Impossible d'ouvrir le fichier PDF.", vbCritical
Exit Sub
End If

' Obtenir l'objet JavaScript du PDF
Set jsObj = AcroDoc.GetJSObject
totalPages = AcroDoc.GetNumPages

' Parcourir toutes les pages du PDF
For currentPage = 0 To totalPages - 1
' Extraire le texte de la page actuelle
textContent = jsObj.GetPageNthWordQuads(currentPage, 0)

' Rechercher la chaîne "FICHE N°"
startIndex = InStr(1, textContent, "FICHE N°", vbTextCompare)

' Rechercher la chaîne "CONSIGNES DE SÉCURITÉ"
endIndex = InStr(startIndex, textContent, "CONSIGNES DE SÉCURITÉ", vbTextCompare)

' Vérifier si les deux chaînes sont trouvées
If startIndex > 0 And endIndex > 0 Then
' Extraire le texte entre les deux chaînes
extractedText = Mid(textContent, startIndex, endIndex - startIndex)

' Coller le texte extrait dans Excel
ws.Cells(outputRow, 1).Value = extractedText
outputRow = outputRow + 1
End If
Next currentPage

' Sauvegarder le contenu extrait au format XML
Dim xmlRange As Range
Set xmlRange = ws.UsedRange
xmlRange.Copy
ws.Cells(1, 1).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

MsgBox "Extraction terminée et collée au format XML.", vbInformation

' Nettoyage et fermeture
AcroDoc.Close
AcroApp.Exit
Set AcroApp = Nothing
Set AcroDoc = Nothing
Set jsObj = Nothing
End Sub


Les etapes souhaitées sont les suivante

1. Sélection du fichier PDF

2. Ouverture avec Adobe Acrobat

3. Recherche des chaînes

4. Recherche d'une chaine de caractère et enregistrer la position

5. Recherche d'une 2ème chaine de caractère et enregistrer la position

6. Si les deux chaînes sont trouvées, extraire le texte entre ces deux positions.

7. Coller dans excel la selection avec le collage spécial en format XML.


La macro se déroule mais rien n'est copié
Les 2 positions restent à 0 tout au long de la macro

Est ce quelqu'un aurait une idée

Par avance merci de votre aide

Salutations
 

Dudu2

XLDnaute Barbatruc
Bonjour,
Ça ?
1733465881827.png

ou jusque là ?
1733467348966.png
 
Dernière édition:

jurassic pork

XLDnaute Occasionnel
Hello,
tu parles de format spécial XML : c'est ce que te proposes entre autres le collage spécial d'Excel ?
Adobe Acrobat pro peut exporter un pdf en xml alors peut-être que quand on fait un copier , il met aussi dans le presse-papier des données en format XML. Moi je ne peux pas essayer je n'ai pas Acrobat Pro.
Ami calmant, J.P
 

gali2

XLDnaute Nouveau
Hello,
tu parles de format spécial XML : c'est ce que te proposes entre autres le collage spécial d'Excel ?
Adobe Acrobat pro peut exporter un pdf en xml alors peut-être que quand on fait un copier , il met aussi dans le presse-papier des données en format XML. Moi je ne peux pas essayer je n'ai pas Acrobat Pro.
Ami calmant, J.P
Bonjour
J'ai essayé
C'est pas propre
 

Discussions similaires

Réponses
2
Affichages
656

Statistiques des forums

Discussions
315 059
Messages
2 115 820
Membres
112 554
dernier inscrit
JULIEN.DECHIPRE