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
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