Macro Ctrl+F et copier dans pdf et coller dans Excel

Nono89

XLDnaute Nouveau
Bonjour le Forum,

Je suis loin d'être un as en macro alors quand je demande à mes macros d'aller chercher des infos sur des fichiers externes à Excel, ça me parait inimaginable.

Voici le contexte, j'ai un dossier qui reçoit chaque début de mois environ 3000 à 8000 fichiers pdf.
le nom de ces fichiers pdf est un numéro de 1 à 8000 dans l'ordre de création.
Cependant le n° "réel" de mon document est visible seulement en ouvrant le fichier pdf, il commence par "SIO" suivi de 7 chiffres.

Comme le nom du doc PDF et le n° SIO*** est indépendant, pour retrouver facilement mes documents j'aimerais faire un fichier excel avec sur 2 colonnes mes infos :
- la première le nom du fichier pdf
- la deuxième serait le N° SIO*******.

Pour la première partie j'ai une macro qui répond à mes attentes :
Sub ListeFichiers() 'liste les fichiers sans les sous-répertoires
Dim MyPath$, FName$, Mem$, i
MyPath = "N:\ImpressionsPDF\" 'chemin d'accès."
FName = Dir(MyPath & "*.PDF")

Do While FName <> ""
[A1048576].End(xlUp)(2) = FName
FName = Dir
Loop
End Sub


Pour la deuxième partie ça se complique, j'ai vu deux possibilités :

1. pour chaque doc pdf, l'ouvrir copier, coller l'info sous excel puis sous Excel extraire le n° de doc SIO****** et le coller au niveau du nom de fichier pdf correspondant dans Excel.


2. Pour chaque PDF faire rechercher et copier uniquement le n° de doc SIO*******, et copier cette info dans le fichier excel.
'.Sheets("Copie")
Option Explicit

Sub SelFichier()
Dim Fichier As Variant
Dim sMot As String

'ChDir ThisWorkbook.Path

' Mot à rechercher
sMot = "SIO*"

Fichier = Application.GetOpenFilename("Fichier PDF (*.pdf), *.pdf")
If Fichier <> False Then AcrobatFindText Fichier, sMot
End Sub

Private Sub AcrobatFindText(ByVal sFichier As String, ByVal sRch As String)
Dim oApp As Object
Dim oAvDoc As Object
Dim iTrouvé As Integer

Set oApp = CreateObject("AcroExch.App")
oApp.Hide

Set oAvDoc = CreateObject("AcroExch.AVDoc")

If oAvDoc.Open(sFichier, "") Then
If Len(sRch) > 0 Then
' Parametres FindText
' StringToSearchFor ,
' caseSensitive (1 Or 0),
' WholeWords(1 Or 0),
' ResetSearchToBeginOfDocument (1 Or 0)

' Rencoie -1 si Trouvé, 0 autrement
iTrouvé = oAvDoc.FindText(sRch, True, False, True)
Else
oAvDoc.Close (1)
Set oAvDoc = Nothing
Set oApp = Nothing
Exit Sub
End If
End If

oApp.Show
oAvDoc.BringToFront

Set oAvDoc = Nothing
Set oApp = Nothing
End Sub

J'aurai bien vu d'ajouter ce deuxième bout de code au premier en profitant ainsi de la répétition fichier par fichier, malheureusement je ne comprends pas bien ce code et certains éléménts fonctionnent pas et doivent être modifiés pour pouvoir se coupler avec la macro "ListeFichiers".

Si quelqu'un a des pistes à proposer pour combiner ces deux codes, ou voit une solution alternative je suis preneur.
N'hésitez pas à me signaler s'il y a besoin de clarification,


Merci d'avance

Nono
 

Nono89

XLDnaute Nouveau
Re : Macro Ctrl+F et copier dans pdf et coller dans Excel

Bonjour Tatiak,

Merci pour ce retour, c'est hallucinant ce que tu as réussi à faire!
Certe le traitement augemente avec un nombre important de fichier, mais en lançant ça entre midi et deux ou sur un poste inutilisé on peut laisser bosser la machine toute seul.

Merci pour ton temps! Pour l'intrigue nous utilisons une imprimante PDF pour générer des doc PDF, mais les variables possible pour nommer les fichiers sont très limitées d'où l'indépendance entre le nom du fichier pdf et le N° de doc de référence.

Nono
 

Statistiques des forums

Discussions
314 492
Messages
2 110 186
Membres
110 693
dernier inscrit
AZERED